使用AWS时,如果您使用aws configure
登录,则可以使用AWS SDK,而无需从本地计算机公开任何编程语言的凭证。如果稍后在AWS内部运行任何东西(Lambda,EC2等),则完全相同的代码会使用资源分配的IAM角色,而无需进行任何配置。
我尝试将其与Azure一起使用,我认为Azure.Identity.DefaultAzureCredential
可以做到这一点。但是我什至不能在本地运行代码:
var blobServiceClient = new BlobServiceClient(storageUri, new DefaultAzureCredential());
var containerClient = await blobServiceClient.CreateBlobContainerAsync("test-container");
如何获取BlobServiceClient并使用本地计算机上的CLI凭据进行身份验证,如果在AppService中运行,则如何获得托管身份。
答案 0 :(得分:1)
在您所使用的方案中,DefaultAzureCredential
和BlobServiceClient
是最佳选择,但它不使用CLI凭据进行身份验证。
要使其工作,只需将Environment variables
设置为服务主体的AZURE_CLIENT_ID
,AZURE_TENANT_ID
,AZURE_CLIENT_SECRET
。在Azure中,它使用MSI进行身份验证。
如果要使用CLI凭据进行身份验证,则有AzureServiceTokenProvider
,它也可以访问Azure存储,但不能与BlobServiceClient
一起使用,则需要使用以下命令获取访问令牌资源https://storage.azure.com
,
var azureServiceTokenProvider2 = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider2.GetAccessTokenAsync("https://storage.azure.com").ConfigureAwait(false);
然后使用访问令牌调用Storge REST API,我认为第一种选择更方便,使用哪种选择取决于您。