同一CloudFront分配中的多个S3存储桶

时间:2015-05-12 17:05:13

标签: amazon-web-services amazon-s3 amazon amazon-cloudfront

我创建了一个带有SSL的CNAME images.domain.com的Cloudfront发行版,我有2个S3存储桶:一个用于用户上传,一个用于产品图片 默认存储桶是上传存储桶

我想对两个存储桶使用相同的CloudFront

所以我添加了2个桶作为起源并创建了一个“行为”,路径/products/*使用我的产品桶作为原点

我的“行为”是:

  1. / products / * to:products bucket(precedence = 0)
  2. 默认(*)至:上传存储桶(优先级= 1)
  3. 当我转到images.domain.com/products/78/34.jpg时,我获得了一个AccessDenied

    文件“78 / 34.jpg”出现在我的产品桶中

    来自其他存储桶的文件正常工作(即上传存储桶中的images.domain.com/upload67.jpg和upload67.jpg)

2 个答案:

答案 0 :(得分:8)

模式/products/*匹配指定源存​​储桶中名为“products”的文件夹中的所有对象。所以,关键需要是products/78/34.jpg

如果您在产品存储桶中创建一个名为“products”的文件夹并将73 / 34.jpg文件移入其中,则images.domain.com/products/78/34.jpg网址应该可以正常工作(如果您最近获得了该网址,则可能需要使其无效创建文件夹之前的错误。)

答案 1 :(得分:0)

我认为您应该将访问公共政策添加到您的产品存储区

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

确保使用您的存储桶名称替换arn:aws:s3 ::: bucket / *中的存储桶。