0

我正在更新一些旧代码以使用托管标识而不是访问密钥。
编码:

  1. 创建一个 DataLakeServiceClient
  2. 使用它来获取文件 DataLakeFileSystemClient ( var dlfsc = dlsc.GetFileSystemClient(containerName);)
  3. 调用 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 创建时却不行?

4

1 回答 1

1

所以我的问题是,为什么当使用 StorageSharedKeyCredential 创建 DataLakeFileSystemClient 时 AccessPolicy 方法可以正常工作,但在使用 ManagedIdentityCredential 创建时却不行?

这是因为访问策略操作仅受共享访问密钥凭据支持,而不是使用托管标识时使用的 Azure AD 凭据。

从此link

在此处输入图像描述

于 2021-11-28T09:10:26.627 回答