为啥我的终端返回此 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 错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥从浏览器上传到 S3 时出现 403 错误?

为啥我的 post 请求返回 405 错误? [复制]

为啥此脚本无法在 s3 中创建存储桶?

为啥此代码部分返回“分段错误”错误?

为啥 nodemon 在终端中抛出一些错误?

为啥我会收到此错误?返回标签错误(页面没有链接回来)