feat(azure_blob sink): Expand support for Azure authentication types#24729
feat(azure_blob sink): Expand support for Azure authentication types#24729jlaundry wants to merge 27 commits intovectordotdev:masterfrom
Conversation
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
| sinks-aws_sns = ["aws-core", "dep:aws-sdk-sns"] | ||
| sinks-axiom = ["sinks-http"] | ||
| sinks-azure_blob = ["dep:azure_core", "dep:azure_storage_blob"] | ||
| sinks-azure_blob = ["dep:azure_core", "dep:azure_identity", "dep:azure_storage_blob"] |
There was a problem hiding this comment.
You might consider updating to the current (february) Azure SDK. The only iffy part of that is that it brings a dependency on reqwest version 13, not 12.
There was a problem hiding this comment.
Am I right in thinking that 0.33 is imminent? I was thinking of waiting for Azure/azure-sdk-for-rust#3643 and Azure/azure-sdk-for-rust#3807
There was a problem hiding this comment.
0.33 should be out in a day or so - the big change in 0.33 is removing support for wasm, the rest are relatively minor changes.
However I don't know what the timeline is for the corresponding storage releases. And until we GA the azure SDK, all the SDK client packages are tied at the hip - they all need to be re-released. After GA, we will have a somewhat looser coupling between azure_core and the other crates.
There was a problem hiding this comment.
Ok, it turns out I was mistaken. azure_core 0.33 is out now. So it's available but the corresponding storage is not quite.
There was a problem hiding this comment.
Looks like azure_storage_blob@0.10.0 just dropped
There was a problem hiding this comment.
Yup, sorry I forgot to mention it to you - yesterday was a bit chaotic (for the storage team as well - they had to make some last minute changes to make the March release).
There was a problem hiding this comment.
No worries 🙂
I've pushed the change on a separate branch (jlaundry/vector@feature-azure_auth...jlaundry:vector:update-azure-crates-0.33), and the update caused the integration tests to fail:
"400: <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Error>\n <Code>InvalidHeaderValue</Code>\n <Message>The API version 2026-04-06 is not supported by Azurite. Please upgrade Azurite to latest version and retry. If you are using Azurite in Visual Studio, please check you have installed latest Visual Studio patch. Azurite command line parameter \"--skipApiVersionCheck\" or Visual Studio Code configuration \"Skip Api Version Check\" can skip this error. \nRequestId:70cc1270-db0c-4e13-ba15-41f3eca1352e\nTime:2026-03-12T20:02:13.682Z</Message>\n</Error>
Related: Azure/Azurite#2623
Adding --skipApiVersionCheck to the docker-compose file works (at least, the tests pass...)
@thomasqueirozb are you happy if I pull these updates into this PR, or would you prefer to have a separate one right after?
There was a problem hiding this comment.
FWIW, Azurite has a --ignore-api-version switch (or something like that - I don't remember what exactly it is) which I ended up having to use in my testing.
|
Hey @jlaundry thanks for doing this! Would be possible to add ClientCertificateCredential as well? We would certainly use it! |
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
|
I think we're ready to progress this PR further - thanks again to @LarryOsterman for the nits, and the conversation earlier today! A few notes:
|
|
@jlaundry I've been following the Logs Ingestion sink implementation and it is really great work! One request here for authentication is to allow passing in options for Azure's |
Easy, done :) I don't have any easy way to test, @Clee2691 could you please compile and check it in your environment? One thing to note is that I've called these options |
This works. This is also how I had it implemented before your changes. |
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Signed-off-by: Jed Laundry <jlaundry@jlaundry.com>
Summary
As mentioned in #24492 (comment), now that #22912 has landed, we can make the
AzureAuthenticationconfig generic, so that the other Azure authentication types can be re-supported byazure_blob(and eventuallyazure_data_explorer#24633, andazure_event_hub#24659).This currently includes Azure CLI, Managed Identity, Workload Identity, as well as a special chained Managed Identity Client Assertion. I'm happy to add others that people believe they have a use-case for, I just didn't want to add code that was unlikely to be used.
Todo list
AzureAuthenticationconfig typeblock_in_place(int tests fail withthread 'sinks::azure_blob::test::azure_blob_build_config_with_client_id_and_secret' (1977) panicked at src/sinks/azure_common/config.rs:380:43: can call blocking only when running on the multi-threaded runtime)Vector configuration
For example:
How did you test this PR?
Currently testing in my lab environment; I've got WIP for running the integration test suite, but it's failing to pick up the integration test CA (#24729 (review))
Change Type
Is this a breaking change?
Does this PR include user facing changes?
no-changeloglabel to this PR.References
Notes
@vectordotdev/vectorto reach out to us regarding this PR.pre-pushhook, please see this template.make fmtmake check-clippy(if there are failures it's possible some of them can be fixed withmake clippy-fix)make testgit merge origin masterandgit push.Cargo.lock), pleaserun
make build-licensesto regenerate the license inventory and commit the changes (if any). More details here.