运行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实例执行,则列出存储桶。
答案 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
,这样可以解决问题。