使用 IAM 角色访问 S3 的 AWS EC2



场景:我在同一账户下有一个 EC2 实例和一个 S3 存储桶,并且我在该 EC2 上的 Web 应用程序想要访问该存储桶中的资源。

按照官方文档,我创建了一个具有 s3access 的 IAM 角色,并将其分配给 EC2 实例。据我了解,现在我的 Web 应用程序应该能够访问存储桶。但是,经过试用,似乎我必须添加如下所示的allowPublicRead存储桶策略:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

否则我被禁止访问。

但是,既然我已经向 EC2 实例授予s3access IAM 角色,为什么还要使用此 allowPublicRead 存储桶策略呢?

S3 s3:GetObject仅允许从您的 ec2 实例访问对象,您想要的是从您的 Web 应用程序访问这些对象,这意味着从您的浏览器,在这种情况下,这些图像/对象将呈现到用户浏览器,如果它是一个面向公众的应用程序,那么您还需要分配AllowPublicRead权限。

相关内容

  • 没有找到相关文章