AWS CLI列出S3存储桶使用IAM用户凭据

时间:2016-06-19 02:35:53

标签: amazon-web-services amazon-s3 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凭据。

15 个答案:

答案 0 :(得分:7)

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

的环境变量
AWS_SECRET_ACCESS_KEY
AWS_ACCESS_KEY_ID

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

尝试运行printenv | grep AWS并验证未设置这些值。如果是这样,那么只需运行一个

unset AWS_SECRET_ACCESS_KEY
unset AWS_ACCESS_KEY_ID

你应该好好去。

答案 1 :(得分:2)

就我而言,这是由于错误的aws_secret_access_key引起的。

要检查,请键入以下内容以打开文件〜/ .aws / credentials

cat ~/.aws/credentials

内容应类似于以下内容:

[default]
aws_access_key_id = xxx
aws_secret_access_key = xx

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

p / s:如果您不记得自己的aws_secret_access_key,请通过aws控制台->您的名字->我的安全证书来生成新的密钥和机密。

enter image description here

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

enter image description here

请注意,一次只能有两个访问键。

答案 2 :(得分:1)

在我的情况下,我有加密但是在加密之前发送文件的大小。如果您收到此错误并且您的密码和密钥是正确的,则值得仔细检查您的md5,mimetype,大小和其他属性

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

只需检查正在运行的系统上的时间即可。确保它已更新

答案 5 :(得分:0)

问题出在AWS凭证上,我将秘密从excel文件复制到了txt文件,并且剥离了一些特殊字符。确保正确复制。

还尝试重新启动计算机,并确保未在环境变量中设置AWS,您可以使用printenv | grep 'AWS'

进行检查。

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

请切换到root用户。

就我而言,我是从标准用户访问此命令aws s3 ls并给出以下错误:

  

“列出了S3存储桶的AWS CLI使用IAM用户凭据给出了SignatureDoesNotMatch错误”

然后使用sudo su命令切换到root用户,并尝试访问aws s3 ls命令,其中列出了s3存储桶名称。

答案 8 :(得分:0)

对我来说,问题是我的secret_key中的/ 为了解决这个问题,将密钥粘贴到我PC上的.dat文件中 将其复制到服务器 pg服务器上的.dat文件,并在使用aws configure时复制了密钥

答案 9 :(得分:0)

使用此处所述的 --endpoint-url 选项修复它:https://github.com/aws/aws-cli/issues/4922

看起来这与我所在的 VM 与存储桶位于不同区域的事实有关。

答案 10 :(得分:0)

这里是 Boto3、Python 和 AWS 自动化的新手。

我收到错误

“调用 CreateBucket 操作时出现客户端错误 (SignatureDoesNotMatch):我们计算的请求签名与您提供的签名不匹配。请检查您的密钥和签名方法。” 尝试以编程方式添加时一个 S3 存储桶到我的 AWS 账户。

我使用 Jupyter 作为我的 IDE,并花了很多时间试图解决这个问题。 我发现这与 .aws 中“配置”文件中输入的默认区域有关,出于某种原因,我的配置文件中的默认区域是“us-west-2”我尝试添加的存储桶位于 us-east-2。

我已经看到一些解决方案试图用环境变量来纠正这个问题,但我相信这个解决方案要简单得多。

答案 11 :(得分:0)

在导出 AWS_SECRET_ACCESS_KEY 时使用单引号 (') 而不是使用 qutoes ("),使用“aws s3 cp”命令为我解决了这个问题。

答案 12 :(得分:0)

就我而言,我在区域名称上有一些拼写错误。一旦修复,一切正常。

首先将区域名称设置为无..然后正确更改回来。

应该不错。

答案 13 :(得分:0)

我的情况不同,昨天我的新 Mac 中这些配置的键工作正常,但今天不起作用。我尝试与旧的 Windows 系统配置进行比较,两者看起来都一样。没看懂,我又从windows复制粘贴到mac,然后就正常了,好像是添加了一些不可见的字符。

答案 14 :(得分:-1)

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