Хранилище веб-заданий с управляемой идентификацией

#azure-webjobs #azure-webjobssdk

#azure-webjobs #azure-webjobssdk

Вопрос:

По умолчанию для 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:

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

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

В моем тесте я задаю AzureWebJobsStorage значение с помощью storage1 соединения, а в коде получаю storage2 учетную запись, и это работает.

 AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/").Resu<
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();
  

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

Комментарии:

1. Итак, если я правильно понимаю, я ничего не получу, назначив управляемую идентификацию функции Azure для доступа к учетной записи хранилища с помощью IBinder . Я все равно не избавлюсь от строки подключения?