Я тестирую на своем сайте, и он работает очень хорошо. Для этого вы можете выполнить следующие шаги.
1.Создайте мой управляемый пользователем идентификатор и добавьте к нему Storage Blob Data Contributor
.
2.In azure function enable user-assign managed identity and add the user identity you create before.
3.In azure function http trigger and the following code in function which will использовать управляемый пользователем личность . В коде, который вы предоставили, используются учетные данные хранилища, и он всегда будет хорошо работать.
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://storage.azure.com/");
TokenCredential tokenCredential = new TokenCredential(accessToken);
StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);
CloudBlobClient blobClient = new CloudBlobClient(new Uri("https://xxxxx.blob.core.windows.net"), storageCredentials);
CloudBlobContainer blobContainer = blobClient.GetContainerReference("container");
BlobRequestOptions requestOptions = new BlobRequestOptions() { RetryPolicy = new NoRetry() };
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference("hello.txt");
string result = "writing test file " + DateTime.Now.ToString();
blockBlob.UploadTextAsync(result).Wait();
4. Для управления процессом используйте строку подключения, переданную конструктору AzureServiceTokenProvider
или указанную в AzureServicesAuthConnectionString
переменная среды.
Щелкните идентификатор пользователя и получите его идентификатор приложения.
RunAs=App;AppId={ClientId of user-assigned identity}
5.Then run azure function, and it will write text in to blob.
введите описание изображения здесь