我得到:

在调用ListObjects操作时发生错误(AccessDenied): AccessDenied

当我试图从S3存储桶中获取文件夹时。

使用该命令:

aws s3 cp s3://bucket-name/data/all-data/ . --recursive

桶的IAM权限如下所示:

{
"Version": "version_id",
"Statement": [
    {
        "Sid": "some_id",
        "Effect": "Allow",
        "Action": [
            "s3:*"
        ],
        "Resource": [
            "arn:aws:s3:::bucketname/*"
        ]
    }
] }

我需要改变什么才能成功复制和ls ?


当前回答

遇到了类似的问题,对我来说,问题是我在bash_profile中设置了不同的AWS密钥。

我在这里回答了一个类似的问题:https://stackoverflow.com/a/57317494/11871462

如果bash_profile中有冲突的AWS密钥,AWS CLI会默认使用这些密钥。

其他回答

遇到了类似的问题,对我来说,问题是我在bash_profile中设置了不同的AWS密钥。

我在这里回答了一个类似的问题:https://stackoverflow.com/a/57317494/11871462

如果bash_profile中有冲突的AWS密钥,AWS CLI会默认使用这些密钥。

要允许s3桶中的权限,请进入s3桶中的permissions选项卡,并在桶策略中将操作更改为this,这将允许执行所有操作:

"Action":"*"

如果在minio的新版本上突然出现这个错误,那么原因是桶访问策略默认值从2021版本更改为2022版本。现在在2022版本中,默认情况下所有的桶(新创建的和现有的)都将访问策略设置为私有-仅提供服务器凭据来访问它们是不够的-你仍然会得到如下错误(这里:返回到python minio客户端):

S3Error: S3 operation failed; code: AccessDenied, message: Access Denied., resource: /dicts, request_id: 16FCBE6EC0E70439, host_id: 61486e5a-20be-42fc-bd5b-7f2093494367, bucket_name: dicts

要在2022版本中回滚到以前的安全设置,最快的方法是在MinIO控制台中(或通过mc客户端)将桶访问访问策略更改为Public。

我认为错误是由于“s3:ListObjects”操作,但我不得不添加操作“s3:ListBucket”来解决“AccessDenied for ListObjects for s3 bucket”的问题

我的问题是凝固

env: 
  AWS_ACCESS_KEY_ID: {{ secrets.AWS_ACCESS_KEY_ID }} 
  AWS_SECRET_ACCESS_KEY: {{ secrets.AWS_SECRET_ACCESS_KEY }}

同样,在aws-sync GitHub Action下作为环境变量。它们来自我的GitHub设置。虽然在我的情况下,我假设了一个角色在前一步,这将设置我一些新的关键字到这些相同的名称环境变量。所以我用坏的GitHub基本键覆盖了好的假设键。

如果你在扮演角色,请注意这一点。