CloudFront 上的 IllegalLocationConstraintException(对于 S3)

IllegalLocationConstraintException on CloudFront (for S3)

我已经创建了一个 S3,并且我成功地将文件上传到存储桶中。现在,我试图让它与 CloudFront 一起工作,但它给了我

IllegalLocationConstraintException

The ap-east-1 location constraint is incompatible for the region specific endpoint this request was sent to.

我的S3url是:http://my-bucket-name.s3.ap-east-1.amazonaws.com/assets/local/css/app.css(这个returns我的文件)

CloudFront 链接到 S3,url:https://id.cloudfront.net/assets/local/css/app.css(这个 returns 我是 IllegalLocationConstraintException)


在 S3 存储桶中 > 权限 >

“阻止 Public 访问”已关闭

“存储桶策略”是自动生成的:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "######"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

我做错了什么?

即使您 auto-select CloudFront 中的 S3 作为相关存储桶,您仍然需要手动放置您的位置才能使其正常工作。


更新:

我的问题是因为我的 CloudFront 源不在 us-east 中,当您 auto-select 您的存储桶源在 CloudFront 中时,它不会将位置前缀添加到 url .所以确保你像这样添加你的 s3 位置:

bucketname.s3.ap-east-1.amazonaws.com

  1. 转到您的 CloudFront 仪表板并单击分配 ID
  2. 转到 'Origins and Origin Groups' 选项卡
  3. select 你的来源然后点击'编辑
  4. 编辑 'Origin Domain Name' 以匹配此格式 bucketname.s3.regioncode.amazonaws.com
  5. 保存等待'deployed'状态