我正在尝试设置 CloudFront 和 S3 来提供我网站的静态内容。简而言之,它不起作用。请在下面查看我到目前为止所做的事情。
首先,我创建了一个禁用所有公共访问的 S3 存储桶。
然后我创建了一个 CloudFront 分配,选择我的 S3 作为源域。
这里有趣的是,AWS 控制台一直向我显示警告,要求我在创建分发(针对 OAC)后自行更新存储桶策略。但它不会自动更新存储桶。
所以在我创建分配后,我更新了存储桶的策略如下。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipalReadWrite",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::men-mvc-local/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::xxxx-9609-xxxx:distribution/E1L6NWB7YV5XXX"
}
}
}
然后我尝试使用在浏览器中粘贴以下 URL 的云端 URL 访问存储桶中的文件。
https://dl2j5zcr9xpi4.cloudfront.net/my-image.png
我还是没看到图像。
我的配置有什么问题,我该如何解决?
我立即注意到的一件事是,在使用 CloudFront/S3 时,最好使用他们为存储桶设置的自定义域:{BUCKETNAME}.s3-website-{REGION}.amazonaws.com.
AWS 在我最近针对类似项目关注的文档中对此进行了详细说明。我会使用它仔细检查您的步骤:https://repost.aws/knowledge-center/cloudfront-serve-static-website
另外,你从哪里得到那个桶政策?您的用例是否需要 PutObject?