我花了不少时间进行故障排除。以下是我目前已确认的内容:
S3 侧
- Bucket 名称正好是我的网站名称
- 启用静态托管,将索引文档设置为 index.html(位于存储桶中)
- 阻止所有公共访问:开启。应该没问题,因为我使用 OAC
- 存储桶策略:
{
"Version": "2012-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "AllowCloudFrontServicePrincipal",
"Effect": "Allow",
"Principal": {
"Service": "cloudfront.amazonaws.com"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucketname/*",
"Condition": {
"StringEquals": {
"AWS:SourceArn": "arn:aws:cloudfront::<something>:distribution/<wahtever>"
}
}
}
]
}
云端分布
- 自定义 SSL 证书,tls 1.2(https 不起作用,但这是以后的问题)
- 默认根对象
/index.html
。不清楚这是否完全必要,因为 s3 已经知道这是根对象。 - 来源:来源域是 S3 WEBSITE 端点,端口 80 http
- 行为:将 HTTP 重定向到 HTTPS
53 号公路
3 条记录:
- A记录,别名,简单路由,指向我的cloudfront域
- 由 Aws 创建的 NS 记录(我将它们添加到我购买域名的 DNS 服务器列表中
- 由 aws 创建的 SOA 记录
AWS 文档确实概述了,如果您在设置 Cloudfront 分发时使用 S3 的网站端点(AWS Wizard 坚持这样做),则您不能使用 OAC。
因此我删除了与 OAC 相关的存储桶策略,变得简单了:
现在重要的是将“阻止所有公共访问”设置为
OFF
。然而我遗漏了两个关键部分:
在 Cloudfront 分发设置中,我需要添加一个
Alternate domain name (CNAME) - optional
,这是我的 fqdn(也是 S3 存储桶名称)。[让 https 生效] 仅将自定义 SSL 证书添加到分发设置是不够的,我忘记添加 DNS 记录了。转到 AWS Cert Manager (ACM),您的证书和 DNS 信息出现在标题下
DOMAINS
,您可以将其导出为 CSV。看起来不错您将其作为新的 CNAME 记录输入到 Route53 中。
结论:Wix 可能价值每月 12 美元。