为啥我的终端返回此 s3 错误?
Posted
技术标签:
【中文标题】为啥我的终端返回此 s3 错误?【英文标题】:Why is my terminal returning this s3 error?为什么我的终端返回此 s3 错误? 【发布时间】:2016-01-24 00:19:26 【问题描述】:这是我不断收到的错误:
A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied
我已经对我的凭据进行了三次检查,并在谷歌上搜索到了这个错误。我编辑了我的存储桶策略以添加一个 s3:ListBucket 操作,但无济于事。当我这样做时,它只会返回一条类似的消息:
A client error (AccessDenied) occurred when calling the ListBuckets operation: Access Denied
想法?这也是我第一次创建 s3 存储桶,所以很可能我错过了一些重要的步骤。
我已经对我的密钥进行了三次检查,甚至尝试创建一个额外的用户(编辑存储桶权限以允许经过身份验证的用户)。总是返回相同的错误。
非常非常感谢任何帮助或见解。谢谢!
【问题讨论】:
我会从头开始,使用一个新的存储桶和一个新的 IAM 用户。不要向存储桶添加任何策略。而是向您的 IAM 用户添加 S3 策略(有关示例,请参阅 docs.aws.amazon.com/IAM/latest/UserGuide/…)。然后为 IAM 用户的访问密钥和密钥设置 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量,然后使用 awscli 调用“aws s3 ls s3://mybucket”。 您能否向我们展示您的政策(存储桶政策和适当的 IAM 政策)? 【参考方案1】:在遇到与您相同的(第二个)错误后,我发现了这个问题:
$ aws s3 ls
A client error (AccessDenied) occurred when calling the ListBuckets operation: Access Denied
事实证明,您需要添加一个 specific policy permission 才能列出所有可用的存储桶:
"Sid": "AllowListingOfAllBuckets",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": [
"arn:aws:s3:::*"
]
,
由于您没有说明您正在运行哪个命令来生成错误,所以我不能说这是否对 OP 有帮助,但希望它会帮助其他在相同情况下偶然发现这篇文章的人我。
【讨论】:
【参考方案2】:我有一个非常相似的问题。我的用户有 S3FullPermissions,我可以创建存储桶并列出所有这些:
aws s3 mb s3://my-bucket
make_bucket: s3://my-bucket/
aws s3 ls
2017-03-24 12:30:34 my-bucket
但是当我尝试运行时:
aws s3 ls s3://my-bucket
A client error (AccessDenied) occurred when calling the ListObjects operation: Access Denied
错误本身与我使用的 awscli 版本有关,与我的存储桶/用户/策略的任何错误配置无关。为了解决这个问题,我删除了从我的发行版存储库中安装的 awscli 包并使用 pip 安装它:
# apt-get remove awscli
# pip install awscli
希望这对处于类似情况的人有所帮助,我已经浪费了几个小时试图猜测这里发生了什么。
【讨论】:
这里有什么问题的版本?以上是关于为啥我的终端返回此 s3 错误?的主要内容,如果未能解决你的问题,请参考以下文章