通过 CloudFront 的 S3 总是给我 AccessDenied 消息

S3 via CloudFront always gives me AccessDenied message

尽管为自定义来源设置 Amazon Cloudfront 很容易,但我很难为 S3 来源设置它。

无论我如何更改我的设置,在尝试通过 CloudFront 访问 S3 对象时,它都会给我 AccessDenied 消息。

我正在使用 CloudFront 进行完整站点交付。所以我打算使用的 URL 和我收到 AWS AccessDenied 消息的那个是:

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 源设置:

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" 作为具有 open/download 权限的受让人。

有人能找出问题所在吗?

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

云端: /imagefile/live/media/medium/06904976c744edf870db308a08320284.JPG

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