Хранилище WebJobs с управляемой идентификацией - PullRequest
0 голосов
/ 19 марта 2019

По умолчанию для WebJobs требуется указать учетную запись хранилища Azure с помощью строки подключения AzureWebJobsStorage.

Но у меня уже есть доступ к хранилищу с управляемой идентификацией:

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?

1 Ответ

0 голосов
/ 20 марта 2019

Могу ли я настроить WebJobs для использования этого cloudStorageAccount вместо строки подключения AzureWebJobsStorage?

Да, вы можете использовать cloudStorageAccount, чтобы получить учетную запись BLOB-объекта и выполнить некоторые операции с BLOB-объектами.Тем не менее, вы все равно должны предоставить AzureWebJobsDashboard и AzureWebJobsStorage при использовании Webjob.Поскольку они являются не только строкой соединения, они также являются путем журнала.

В моем тесте я установил 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();

Для получения более подробной информации о назначении роли и получении токена доступа вы можете обратиться к этой статье .

...