AWS CLI列出S3存储桶使用IAM用户凭据提供SignatureDoesNotMatch错误

Piy*_*ore 8 amazon-s3 amazon-web-services amazon-iam aws-cli

我在Ubuntu 16.04 LTS上使用AWS cli,我试图列出所有桶.在aws configure中,我输入了IAM用户访问密钥和IAM用户密钥.这个IAM用户有权列出存储桶并可以在控制台中列出存储桶.但是使用带有这些密钥的AWS cli并运行命令 - aws s3 ls 它给了我这个错误.

调用ListBuckets操作时发生客户端错误(SignatureDoesNotMatch):我们计算的请求签名与您提供的签名不匹配.检查您的密钥和签名方法.

我已经创建了一个策略来列出这个特定IAM用户的存储桶.

我想执行进一步的同步操作,并使用此IAM用户凭据通过shell脚本使所有文件进行公共操作,并且不想使用root凭据.

sch*_*udu 9

找到了我的问题.我的环境变量中有旧的AWS密钥.如果您有名为的环境变量

AWS_SECRET_ACCESS_KEY
AWS_ACCESS_KEY_ID
Run Code Online (Sandbox Code Playgroud)

awscli将使用这些值而不是通过提供的值~/.aws/credentials.

尝试运行printenv | grep AWS并验证是否未设置这些值.如果是这样,那么就跑一个

unset AWS_SECRET_ACCESS_KEY
unset AWS_ACCESS_KEY_ID
Run Code Online (Sandbox Code Playgroud)

你应该好好去.


小智 9

即使机器时间与 NT 服务器不同步也可能发生。

sudo ntpdate ntp.ubuntu.com帮助我解决了这个问题。


yog*_*cak 7

就我而言,这是由于不正确的aws_secret_access_key.

要检查,请键入以下命令打开文件~/.aws/credentials:

cat ~/.aws/credentials
Run Code Online (Sandbox Code Playgroud)

内容应如下所示:

[default]
aws_access_key_id = xxx
aws_secret_access_key = xx
Run Code Online (Sandbox Code Playgroud)

查看aws_access_key_id& 是否aws_secret_access_key与您的凭据匹配。如果没有,请编辑并保存更改。

p/s:如果您不记得您的aws_secret_access_key,请通过转到 aws 控制台 --> 您的姓名 --> 我的安全凭证来生成新的密钥和秘密。

在此处输入图片说明

然后单击“创建访问密钥”:

在此处输入图片说明

请注意,您一次只能拥有两个访问密钥。


小智 6

这意味着您的 AWS 安全凭证已过期。只需创建新凭证即可。

  • 转到您的 AWS 账户 -> 我的安全凭证
  • 点击Create New Access Key。记下访问密钥 ID 和秘密访问密钥
  • 运行aws configure并输入新凭据


小智 5

此错误是由于 aws s3 访问密钥/秘密密钥不正确造成的。