S3:即使附加了 AmazonS3FullAccess 也拒绝访问

时间:2021-06-01 16:33:04

标签: amazon-web-services amazon-s3 aws-lambda

调用此 lambda 函数时:

    var params = {
        Bucket: sourceBucket,
        Key: sourceKey,
        ACL: 'public-read-write'
    };

    s3.putObjectAcl(params, function(err, data){
        if (err){
            callback(err)
        }
    })

我为这个 lambda 函数尝试了 2 个执行角色,但还是遇到了上面的错误:

  1. 附加了 AmazonS3FullAccess 策略的 IAM 角色。
  2. 具有以下政策的 IAM 角色:
    • AWSLambda 执行政策
    • 此内联政策:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObjectVersionAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

我可以知道我做错了什么或错过了什么吗?谢谢!

1 个答案:

答案 0 :(得分:0)

jarmod 在评论中回答了这个问题:

禁用存储桶中的“阻止公共访问”设置。

为什么?

“如果将对象写入启用了 S3 阻止公共访问的 AWS 账户或 S3 存储桶,并且该对象通过 ACL 或策略指定了任何类型的公共权限,则这些公共权限将被阻止。”

来源:aws.amazon.com/s3/features/block-public-access

相关问题