【发布时间】:2017-08-09 20:56:19
【问题描述】:
我想将我的所有数据从帐户 A 的 Bucket1 移动到帐户 B 的 Bucket2。
为此:
-
我为 Windows 下载了
AWS CLI。 -
使用命令
aws configure输入IAM凭据(这些凭据来自帐户B) -
运行命令同步存储桶:
aws s3 sync s3://Bucket1 s3://Bucket2我收到以下错误:
致命错误:调用 ListObject 操作时发生错误 (InvalidRequest):您正在尝试对需要签名版本 4 的区域中的存储桶进行操作。您可以通过使用 - 显式提供正确的区域位置来解决此问题-region 参数、AWS_DEFAULT_REGION 环境变量或 AWS CLI 配置文件中的区域变量。您可以通过运行“aws s3api get-bucket-location --bucket BUCKET”获取存储桶的位置。
如何解决这个错误?
aws --version
aws-cli/1.11.61 Python/2.7.9 windows/8 botocore/1.5.24
【问题讨论】:
-
正如错误所说,您应该在您的
aws s3 sync命令中添加一个--region参数。我认为您需要引用 destination 区域,但如果这不起作用,请尝试 source 区域。它将采用us-east-1或us-west-2之类的格式。您使用的是哪些地区? -
如何添加区域参数(语法)?我收到
too few arguments命令错误aws --region us-west-2 -
aws s3 sync s3://Bucket1 s3://Bucket2 --region us-west-2 -
Bucket1在us-east-1中,Bucket2在us-west-2中。首先我尝试了命令:aws s3 sync s3://Bucket1 s3://Bucket2 --region us-west-2然后我尝试了aws s3 sync s3://Bucket1 s3://Bucket2 --region us-east-1但两次都出现了同样的错误(问题中提到了错误) -
我试图重现这个问题。我在
us-east-1和us-west-2中创建了一个存储桶。然后我发出了aws s3 sync s3://Bucket1 s3://Bucket2命令,它运行良好。我什至尝试使用各种值添加--region,它继续正常工作。我在 Amazon EC2 实例上使用最新的 CLIaws-cli/1.11.63 Python/2.7.9 Windows/2008ServerR2 botocore/1.5.26,并通过分配给实例的角色使用凭证。因此,我无法重现您的错误。
标签: amazon-web-services amazon-s3 aws-cli