运行aws s3 ls
命令后,我收到以下错误消息:-
调用列表存储桶时发生客户端错误 (无效请求) 操作:您正在尝试对区域中的存储桶进行操作 需要签名版本 4。您可以通过显式解决此问题 使用 --region 参数提供正确的区域位置, AWS_DEFAULT_REGION环境变量,或 AWS CLI 配置文件。您可以通过以下方式获取存储桶的位置 运行"AWS S3API 获取存储桶位置 --存储桶存储桶"。
以下是更多细节和我的发现,可能有助于回答这个问题:-
-
该命令正在从
ap-south-1
区域中运行的 EC2 实例执行。 -
此 Amazon 文档表示,在 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 实例执行的,则会列出存储桶。
将aws cli
更新到最新版本(撰写本文时为 v1.11.84)。
如果yum update
不起作用,请尝试按照本指南安装 AWS CLI
此错误背后的原因是,在较新的区域中,AWS S3 不支持较低的签名版本。
这对我有用:
sudo pip install --upgrade awscli
对于Mac,请执行sudo pip install awscli
,这应该可以解决问题。