CloudFront上的IllegalLocationConstraintException(针对S3)

16
我已创建了一个S3并成功上传文件到存储桶中。现在,我正在尝试将其与CloudFront配合使用,但是它给出了IllegalLocationConstraintException错误。
我的S3 URL是:http://my-bucket-name.s3.ap-east-1.amazonaws.com/assets/local/css/app.css(这会返回文件)。
CloudFront链接到S3,URL为:https://id.cloudfront.net/assets/local/css/app.css(这会返回IllegalLocationConstraintException错误)。
在S3存储桶中 > 权限 > "阻止公共访问"已关闭
"存储桶策略"是自动生成的:
{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "######"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket-name/*"
        }
    ]
}

我做错了什么?

2个回答

33
即使您在CloudFront中自动选择与S3相关联的存储桶,仍需要手动输入您的位置才能使其正常工作。
更新:
我的问题是因为我的CloudFront源不在us-east中,在CloudFront中自动选择存储桶源时,它不会将位置前缀添加到URL中。因此,请确保像以下这样添加您的S3位置: bucketname.s3.ap-east-1.amazonaws.com

3
Amazon UI在下拉列表中显示的名称可能会不完整,缺少所在区域信息。看起来命名规则与我不同。通过将源域名设置为:bucketname.s3-website.region.amazonaws.com,我的Cloudfront分发可以提供S3存储桶内容,实际上这只是可以直接浏览的S3网站域名。 - Caz
5
对于米兰地区,这对我非常有效。你可能为我节省了数小时的绝望时间。 - Ivan Carosati
2
@IvanCarosati 我也是。我不明白为什么一旦选择了S3存储桶,它就不能根据地区正确指定。 - Masiorama
1
我也解决了我的香港S3存储桶问题。我通过这个帖子以及一个AWS的YouTube视频发现了它,更不用说2018年提到同样技巧的事情了——从S3控制台复制S3路径并粘贴到源字段中。这个问题已经存在了三年以上了吗? - chopper24
1
我希望这肯定会被AWS标记为一个bug。确实很奇怪。 - Anton Swanevelder

13
  1. 前往CloudFront仪表板,点击分配ID
  2. 进入“源和源组”选项卡
  3. 选择您的源并单击“编辑”
  4. 将“Origin Domain Name”编辑为与以下格式匹配bucketname.s3.regioncode.amazonaws.com
  5. 保存并等待状态变为“已部署”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接