默认情况下,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连接字符串吗?
答案 0 :(得分:0)
我可以将WebJobs配置为使用此cloudStorageAccount代替AzureWebJobsStorage连接字符串吗?
是的,您可以使用cloudStorageAccount
获取Blob帐户并对Blob进行一些操作。但是,使用Webjob时仍需要提供AzureWebJobsDashboard
和AzureWebJobsStorage
。因为它们不仅是连接字符串,而且还是日志路径。
在测试中,我通过AzureWebJobsStorage
连接设置了storage1
的值,并在代码中获得了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。