Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AmazonS3-如何自动公开文件夹的新内容_Amazon Web Services_Amazon S3_Directory_Amazon Cloudfront_Public - Fatal编程技术网

Amazon web services AmazonS3-如何自动公开文件夹的新内容

Amazon web services AmazonS3-如何自动公开文件夹的新内容,amazon-web-services,amazon-s3,directory,amazon-cloudfront,public,Amazon Web Services,Amazon S3,Directory,Amazon Cloudfront,Public,我正在使用AmazonS3将图像存储在一个存储桶中,并使用cloudfront获取和发布这些图像。我的问题是,每次我上传一个新的图像,它都是自动私有的(试图得到一个403禁止的结果)。为了能够得到它并在我的网站上显示它,我必须再次公开我的文件夹(在我已经这样做之后)。你知道为什么会有这种行为吗 我的存储桶是公共的,以下是我的IAM权限: // First strategy { "Version": "2012-10-17", "Statement": [ { "Eff

我正在使用AmazonS3将图像存储在一个存储桶中,并使用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": "*"
    }
  ]
}
“我的bucket name”显然被bucket的实际名称所取代


谢谢。

根据子文件夹的前缀创建Lambda触发器。然后在创建事件期间更新对象的权限以使其公开


请参阅:

默认情况下,AmazonS3中的对象是私有的

如果希望使对象可公开访问(对于没有IAM凭据的人),则有两个选项:

选项1:桶策略

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

见:

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

选项2:公开对象

您也可以将AmazonS3中的特定对象公开

上载对象时,请指定
公共读取
的访问控制列表(
ACL
)。您还需要关闭“阻止公共访问”以允许对象级权限

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

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