首页 > 解决方案 > Amazon S3 - 如何自动公开文件夹的新内容

问题描述

我正在使用 amazon s3 将图像存储在存储桶中,并使用 cloudfront 来获取和发布这些图片。我的问题是,每次我上传新图片时,它都会自动成为私有的(试图获取它会导致 403 被禁止)。为了能够得到它并在我的网站上显示它,我必须再次公开我的文件夹(在我已经完成之后)。你知道为什么会有这种行为吗?

我的存储桶是公开的,这是我的 IAM 权限:

// First strategy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:HeadBucket",
        "s3:GetBucketAcl",
        "s3:HeadObject",
        "s3:GetObject",
        "s3:GetObjectAcl",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionAcl",
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
      ],
      "Resource": "arn:aws:s3:::my-bucket-name/*"
    }
  ]
}

// Second strategy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:ListAllMyBuckets"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Action": [
        "acm:ListCertificates",
        "cloudfront:*",
        "iam:ListServerCertificates",
        "waf:ListWebACLs",
        "waf:GetWebACL",
        "wafv2:ListWebACLs",
        "wafv2:GetWebACL"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

“my-bucket-name”显然被存储桶的实际名称所取代。

谢谢你。

标签: amazon-web-servicesamazon-s3directoryamazon-cloudfrontpublic

解决方案


默认情况下,Amazon S3 中的对象是私有的。

如果您希望使对象可公开访问(对没有 IAM 凭证的人),您有两种选择:

选项 1:存储桶策略

您可以创建使内容可公开访问的存储桶策略。例如,此策略授予任何人GetObject访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::examplebucket/*"
            ]
        }
    ]
}

请参阅:存储桶策略示例 - Amazon Simple Storage Service

您还需要关闭S3 存储桶上的阻止公共访问以允许存储桶策略。

选项 2:公开对象

您也可以将 Amazon S3 中的特定对象设为公开。

上传对象时,指定 的访问控制列表 ( ACL) public-read。您还需要关闭阻止公共访问以允许对象级权限。

当您说“我必须再次公开我的文件夹”时,我怀疑您正在进入 Amazon S3 控制台,选择一个文件夹,然后使用“公开”选项。这相当于设置ACL. 您可以通过在上传对象时指定 ACL或使用存储桶策略来避免此额外步骤。


推荐阅读