Azcopy 错误 "This request is not authorized to perform this operation."

Azcopy error "This request is not authorized to perform this operation."

我根据下面链接的文档将一个容器复制到另一个存储帐户。 (DataLake 存储 Gen2)。

尝试时,出现以下错误:

this request not authorized to perform this operations using this permission

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10

如果您使用的是 AAD 令牌,则此错误提示您需要为用户添加角色分配。请转到存储帐户 -> 访问控制 -> 添加 -> 添加角色分配,然后将 Storage Blob 数据所有者 添加到您的登录帐户。

如果此问题仍然存在,请提供更多详细信息。

SAS 令牌可能已过期。

当我有这个的时候,我发现这是因为我使用 Azure 存储资源管理器生成了一个没有读取权限的 SAS,我认为它正在尝试读取一个 size/existence blob 在写入之前。

我从 https://github.com/Azure/azure-storage-azcopy/issues/790 那里得到了线索,但最终我只是重新生成了一个具有读取权限的新 SAS 并且成功了..

我可能已经看过使用 Azure 数据移动库修改 C# 代码,不执行长度检查,但规范后来更改为 "don't overwrite" 因此可能无论如何都需要读取权限

我也遇到了同样的问题。对于我的工作,我只是在执行@BowmanZhu 解决方案后注销并再次登录 azcopy cli

azcopy logout
azcopy login --tenant-id xxxx-xxxx-xxxx

如果您不想以这种方式登录,始终可以选择在 URL 末尾添加 SAS 令牌。如果您不想始终在末尾附加令牌,您可以通过在 official documentation page.

中找到的这些步骤中的任何一个来尝试永久访问

在生成 SAS 令牌时给予适当的权限(读、写、创建) as here

在容器上授予自己 Storage Blob Data Owner 角色后,AzCopy 现在将自行运行并成功将文件复制到 blob 存储容器。

转到存储帐户 -> 容器 -> 访问控制规则 -> 添加角色分配 -> 存储 Blob 数据所有者

有类似的问题。就这样解决了

使用的命令是 .\azcopy.exe copy "C:\Users\kriof\Pictures" "https://test645676535storageaccount.blob.core.windows.net/images?sp=rw&st=2022-02-23T11:03:50Z&se=2022-02-23T19:03:50Z&spr=https&sv=2020-08-04&sr=c&sig=QRN%2SMFtU3zaUdd4adRddNFjM2K4ik7tNPSi2WRL0%3D"

SAS 令牌只有默认(读取)权限。添加 Write 权限 在 Azure 门户中,解决了这个问题。