我创建了一个带有SSL的CNAME images.domain.com
的Cloudfront发行版,我有2个S3存储桶:一个用于用户上传,一个用于产品图片
默认存储桶是上传存储桶
我想对两个存储桶使用相同的CloudFront
所以我添加了2个桶作为起源并创建了一个“行为”,路径/products/*
使用我的产品桶作为原点
我的“行为”是:
当我转到images.domain.com/products/78/34.jpg
时,我获得了一个AccessDenied
文件“78 / 34.jpg”出现在我的产品桶中
来自其他存储桶的文件正常工作(即上传存储桶中的images.domain.com/upload67.jpg
和upload67.jpg)
答案 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 / *中的存储桶。