尽管为自定义起源设置Amazon Cloudfront很容易,但却让我很难为S3起源设置它。
无论我如何更改设置,在尝试通过CloudFront访问S3对象时,它都会向我提供AccessDenied消息。
我正在使用CloudFront进行完整的网站投放。因此,我打算使用的URL和我正在获取AWS AccessDenied消息的URL是:
http://www.mydomainname.com/imagefile/live/media/medium/06904976c744edf870db308a08320284.JPG
该对象的直接S3 URL在下面,它工作正常: https://s3-eu-west-1.amazonaws.com/my-s3-bucket-name/live/media/medium/06904976c744edf870db308a08320284.JPG
Cloudfront Origin设置:
Cloufront行为设置:
S3策略(当然不是“my-s3-bucket-name”,而是使用了真正的存储桶名称。)
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-s3-bucket-name/live/bk/*"
},
{
"Sid":" Grant a CloudFront Origin Identity access to support private content",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::my-s3-bucket-name/live/media/medium/*",
"arn:aws:s3:::my-s3-bucket-name/live/media/thumb/*",
"arn:aws:s3:::my-s3-bucket-name/live/media/thumb_v2/*"
]
}
]
}
URL本身使用的文件名将“Everyone”作为具有打开/下载权限的被授予者。
有人可以找出问题所在吗?
答案 0 :(得分:3)
您请求的路径不一样,您是否可以尝试使用直接用于s3但使用CloudFront提供的DNS名称的相同路径?
CloudFront的: /imagefile/live/media/medium/06904976c744edf870db308a08320284.JPG
S3: /live/media/medium/06904976c744edf870db308a08320284.JPG