【问题标题】:aws cli signature version 4aws cli 签名版本 4
【发布时间】:2017-08-09 20:56:19
【问题描述】:

我想将我的所有数据从帐户 ABucket1 移动到帐户 BBucket2

为此:

  1. 我为 Windows 下载了AWS CLI

  2. 使用命令aws configure 输入IAM 凭据(这些凭据来自帐户B

  3. 运行命令同步存储桶: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-1us-west-2 之类的格式。您使用的是哪些地区?
  • 如何添加区域参数(语法)?我收到too few arguments 命令错误aws --region us-west-2
  • aws s3 sync s3://Bucket1 s3://Bucket2 --region us-west-2
  • Bucket1us-east-1 中,Bucket2us-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-1us-west-2 中创建了一个存储桶。然后我发出了aws s3 sync s3://Bucket1 s3://Bucket2 命令,它运行良好。我什至尝试使用各种值添加--region,它继续正常工作。我在 Amazon EC2 实例上使用最新的 CLI aws-cli/1.11.63 Python/2.7.9 Windows/2008ServerR2 botocore/1.5.26,并通过分配给实例的角色使用凭证。因此,我无法重现您的错误。

标签: amazon-web-services amazon-s3 aws-cli


【解决方案1】:

我的S3 网址就像:https://console.aws.amazon.com/s3/home?region=us-east-1 所以我以为us-east-1 是我的区域,但实际上不是!

我使用 AWS 命令​​查找 Bucket2 区域,它告诉我另一个区域。

然后我使用了这个命令aws s3 sync s3://Bucket1 s3://Bucket2 --region Asia Pacific (Mumbai),一切正常!

【讨论】:

    【解决方案2】:

    寻找桶的正确区域(见附图)。
    通过指定正确的区域尝试以下命令:

    aws s3 ls --region us-west-2
    

    S3 是全球性的 - 不要让这误导您。

    【讨论】:

      猜你喜欢
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2023-02-01
      相关资源
      最近更新 更多