具有托管身份的 WebJobs 存储
WebJobs storage with Managed Identity
默认情况下,WebJobs 需要使用 AzureWebJobsStorage 连接字符串指定 Azure 存储帐户。
但我已经可以使用托管身份访问我的存储:
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/");
StorageCredentials storageCredentials = new StorageCredentials(new TokenCredential(accessToken));
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, "mystorageaccount", "core.windows.net", true);
我可以将 WebJobs 配置为使用此 cloudStorageAccount 而不是 AzureWebJobsStorage 连接字符串吗?
Can I configure WebJobs to use this cloudStorageAccount instead of AzureWebJobsStorage connection string?
是的,您可以使用 cloudStorageAccount
获取 blob 帐户并对 blob 进行一些操作。但是,您在使用Webjob 时仍然需要提供AzureWebJobsDashboard
和AzureWebJobsStorage
。因为它们不仅是connectionstring,还是log path。
在我的测试中,我使用 storage1
连接设置了 AzureWebJobsStorage
值,在代码中我得到了 storage2
帐户并且它有效。
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/").Result;
StorageCredentials storageCredentials = new StorageCredentials(new TokenCredential(accessToken));
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, "storage2", "core.windows.net", true);
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("mycontainer");
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference("hello.txt");
cloudBlockBlob.UploadTextAsync("aaaaaaaa").Wait();
有关分配角色和获取访问令牌的更多详细信息,您可以参考此 article。
默认情况下,WebJobs 需要使用 AzureWebJobsStorage 连接字符串指定 Azure 存储帐户。
但我已经可以使用托管身份访问我的存储:
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/");
StorageCredentials storageCredentials = new StorageCredentials(new TokenCredential(accessToken));
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, "mystorageaccount", "core.windows.net", true);
我可以将 WebJobs 配置为使用此 cloudStorageAccount 而不是 AzureWebJobsStorage 连接字符串吗?
Can I configure WebJobs to use this cloudStorageAccount instead of AzureWebJobsStorage connection string?
是的,您可以使用 cloudStorageAccount
获取 blob 帐户并对 blob 进行一些操作。但是,您在使用Webjob 时仍然需要提供AzureWebJobsDashboard
和AzureWebJobsStorage
。因为它们不仅是connectionstring,还是log path。
在我的测试中,我使用 storage1
连接设置了 AzureWebJobsStorage
值,在代码中我得到了 storage2
帐户并且它有效。
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/").Result;
StorageCredentials storageCredentials = new StorageCredentials(new TokenCredential(accessToken));
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, "storage2", "core.windows.net", true);
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("mycontainer");
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference("hello.txt");
cloudBlockBlob.UploadTextAsync("aaaaaaaa").Wait();
有关分配角色和获取访问令牌的更多详细信息,您可以参考此 article。