我一直在尝试复制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中添加环境变量,请执行以下操作:
- 按Windows键+ R然后打开"control systemm .cpl">
- 在系统属性中单击高级->环境变量
- 在System Variables下添加变量名:AWS_ACCESS_KEY_ID,并将您的访问密钥放在值下。
- 添加另一个系统变量"aws_secret_access_key";并放入AWS密钥。
- 回到powershell,你应该可以运行azcopy,权限应该可以工作了。
- 如果权限仍然不起作用,则可能是AWS中的权限有问题。
如果您使用PowerShell来运行命令,则可以按如下方式设置环境变量(不需要进入系统变量)
$env:AWS_ACCESS_KEY_ID="xxxxxxxxxxxx"
$env:AWS_SECRET_ACCESS_KEY="yyyyyyyyyyyy"
要列出PowerShell中的环境变量,使用
dir env: