首页 > 解决方案 > S3:即使附加了 AmazonS3FullAccess,访问也被拒绝

问题描述

调用此 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/*"
        }
    ]
}

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

标签: amazon-web-servicesamazon-s3aws-lambda

解决方案


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

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

为什么?

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

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


推荐阅读