具有托管身份的WebJobs存储

问题描述 投票:0回答:1

默认情况下,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连接字符串吗?

azure-webjobs azure-webjobssdk
1个回答
0
投票

我可以将WebJobs配置为使用此cloudStorageAccount而不是AzureWebJobsStorage连接字符串吗?

是的,你可以使用cloudStorageAccount获取blob帐户并对blob进行一些操作。但是,当您使用Webjob时,仍需要提供AzureWebJobsDashboardAzureWebJobsStorage。因为它们不仅是连接字符串,它们也是日志路径。

在我的测试中,我用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

© www.soinside.com 2019 - 2024. All rights reserved.