使用AZCopy将AWS s3存储桶复制到Azure存储时出错



我一直在尝试复制AWS S3桶到我的Azure存储容器遵循微软文档Amazon S3到Azure存储使用AzCopy

但是操作失败,错误如下

copy命令执行失败:cannot start job because to error: cannot list objects, Access Denied.

我已经尝试通过Azure AD和SAS令牌具有完全访问权限(racwdl)的身份验证复制,但得到相同的问题。

我已经验证了AWS密钥集具有管理权限,并且还验证了我的AWS桶和Azure存储容器都是公共的。

还有什么是错的?任何意见都会有帮助的。

还共享使用AD授权和SAS令牌授权的终端输出。

OnAD Authorization:

INFO:扫描…信息:使用Azure AD对目标进行身份验证信息:而不是从's3.amazonaws.com'的URL转移,在这个版本的AzCopy,我们建议您使用特定于区域的端点来从一个特定地区转移过来。例如:s3.us-east-1.amazonaws.com或对单个存储桶的虚拟托管引用。信息:任何空文件夹会不会被处理,因为源和/或目的地没有完全文件夹支持

failed to perform copy command due to error: cannot start job due to错误:cannot list objects, Access Denied.

使用SAS令牌授权

INFO:扫描…信息:而不是从' s3amazonaws.com '的网址,在这个版本的AzCopy我们建议您使用要从一个特定区域传输的特定于区域的端点。如。S3.us-east-1.amazonaws.com或一个虚拟托管引用桶。信息:创建一个或多个目标容器失败。如果容器已经存在,您的传输仍然可能成功。任何空文件夹将不被处理,因为源和/或目标没有完整的文件夹支持

failed to perform copy command due to error: cannot start job due to错误:cannot list objects, Access Denied.

我已经设法解决了这个问题。显然,解决方案是将AWS凭据添加为环境变量,因为文档中提到的在CLI上设置它们不起作用。

如上所述,powershell脚本设置了AWS_ACCESS_KEY_ID=.....&;不能工作,因为它没有在windows中添加系统环境变量,因此S3的访问被拒绝。要在Windows中添加环境变量,请执行以下操作:

  1. 按Windows键+ R然后打开"control systemm .cpl">
  2. 在系统属性中单击高级->环境变量
  3. 在System Variables下添加变量名:AWS_ACCESS_KEY_ID,并将您的访问密钥放在值下。
  4. 添加另一个系统变量"aws_secret_access_key";并放入AWS密钥。
  5. 回到powershell,你应该可以运行azcopy,权限应该可以工作了。
  6. 如果权限仍然不起作用,则可能是AWS中的权限有问题。

如果您使用PowerShell来运行命令,则可以按如下方式设置环境变量(不需要进入系统变量)

$env:AWS_ACCESS_KEY_ID="xxxxxxxxxxxx"
$env:AWS_SECRET_ACCESS_KEY="yyyyyyyyyyyy"

要列出PowerShell中的环境变量,使用

dir env:

最新更新