S3 via CloudFront总是给我AccessDenied消息

时间:2015-02-19 15:16:30

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

尽管为自定义起源设置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设置:

Cloudfront Origin Settings:

Cloufront行为设置: Cloufront Behaviour Settings:

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”作为具有打开/下载权限的被授予者。

有人可以找出问题所在吗?

1 个答案:

答案 0 :(得分:3)

您请求的路径不一样,您是否可以尝试使用直接用于s3但使用CloudFront提供的DNS名称的相同路径?

CloudFront的: /imagefile/live/media/medium/06904976c744edf870db308a08320284.JPG

S3: /live/media/medium/06904976c744edf870db308a08320284.JPG