“aws s3 ls”命令抛出“InvalidRequest”错误消息。如何解决?

时间:2016-07-06 09:59:12

标签: amazon-web-services amazon-s3 amazon-ec2

运行aws s3 ls命令后,我收到以下错误消息: -

  

调用ListBuckets时发生客户端错误(InvalidRequest)   操作:您正在尝试在区域中的桶上操作   需要签名版本4.您可以明确解决此问题   使用--region参数提供正确的区域位置   AWS_DEFAULT_REGION环境变量,或者是区域变量   AWS CLI配置文件。您可以通过获取水桶的位置   运行“aws s3api get-bucket-location --bucket BUCKET”。

以下是更多细节和我的发现,可能有助于回答这个问题: -

  • 该命令正在ap-south-1区域内运行的EC2实例执行。

  • This亚马逊文档称2014年1月30日之后创建的新区域仅支持签名版本4.

  • 根据错误消息的建议,我尝试发出命令aws --region ap-south-1 s3 ls,但此命令也会显示相同的错误消息。

  • 我已经运行yum update且AWS CLI版本是最新的aws-cli/1.10.33 Python/2.7.10 Linux/4.4.11-23.53.amzn1.x86_64 botocore/1.4.23

  • 上述aws s3 ls命令工作正常,如果从us-east-1实例执行,则列出存储桶。

3 个答案:

答案 0 :(得分:9)

您需要将aws cli更新为最新版本(撰写本文时为v1.11.84)。

如果yum update无效,请尝试遵循此Guide to install AWS CLI

此错误背后的原因是,在较新的地区,AWS S3不支持较低签名版本。

答案 1 :(得分:3)

这对我有用:

sudo pip install --upgrade awscli

答案 2 :(得分:2)

对于Mac,请执行sudo pip install awscli,这样可以解决问题。