我正在更新一些遺留代碼以使用托管標識而不是訪問密鑰。
編碼:
- 創建一個 DataLakeServiceClient
- 使用它來獲取檔案 DataLakeFileSystemClient (
var dlfsc = dlsc.GetFileSystemClient(containerName);) - 呼叫 GetAccessPolicyAsync 和 SetAccessPolicyAsync (
var acl = await client.GetAccessPolicyAsync().ConfigureAwait(false);)
當我DataLakeServiceClient使用 StorageSharedKeyCredential構建時,一切正常。但是,當我DataLakeServiceClient使用 ManagedIdentityCredential vai(DefaultAzureCredential)構造時,會引發以下例外:
The specified resource does not exist.
RequestId:f2543e09-a01e-000d-321b-e47741000000
Time:2021-11-28T05:51:15.6906885Z
Status: 404 (The specified resource does not exist.)
ErrorCode: ResourceNotFound
Content:
<?xml version="1.0" encoding="utf-8"?><Error><Code>ResourceNotFound</Code><Message>The specified resource does not exist.
RequestId:f2543e09-a01e-000d-321b-e57741000000
Time:2021-11-28T05:51:15.6906885Z</Message></Error>
我認為這是來自 Azure.Identity 嘗試使用 ManagedIdentityCredential 獲取令牌時?
需要注意的重要一點是 DataLakeFileSystemClientExistsAsync()方法也被呼叫,并且在任何一種情況下都可以正常作業。
所以我的問題是,為什么當使用 StorageSharedKeyCredential 創建 DataLakeFileSystemClient 時 AccessPolicy 方法可以正常作業,但在使用 ManagedIdentityCredential 創建時卻不能正常作業?
uj5u.com熱心網友回復:
所以我的問題是,為什么當使用 StorageSharedKeyCredential 創建 DataLakeFileSystemClient 時 AccessPolicy 方法可以正常作業,但在使用 ManagedIdentityCredential 創建時卻不能正常作業?
這是因為訪問策略操作僅支持共享訪問密鑰憑據,而不支持使用托管標識時使用的 Azure AD 憑據。
從此
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369064.html
