向客户端提供带有 Cloudfront 内容的 S3
Posted
技术标签:
【中文标题】向客户端提供带有 Cloudfront 内容的 S3【英文标题】:Serving S3 with Cloudfront content to a client 【发布时间】:2021-04-12 04:14:42 【问题描述】:我需要为客户提供 S3 Cloudfront。他们拥有并控制自己的域名clientdomain.com
客户端指定 admin.clientdomain.com
为 S3 的名称。
现在我创建了一个具有特定名称 admin.clientdomain.com
的 S3 存储桶并使用它配置 Cloudfront 并生成
对应的域名abc123xxx.cloudfront.net
我向客户提供了这些信息 (admin.clientdomain.com ---> abc123xxx.cloudfront.net
)
这样他们就可以在他们的 DNS 管理器中创建一个 CNAME 条目。
当我浏览 abc123xxx.cloudfront.net
时,它会显示页面和网站内容,但是当我尝试浏览 admin.clientdomain.com
时,它会出错:
403 错误 无法满足请求。错误的请求。我们不能 此时连接到此应用程序或网站的服务器。那里 可能是流量过多或配置错误。稍后再试, 或联系应用程序或网站所有者。如果您将内容提供给 客户通过 CloudFront,您可以找到故障排除步骤和 通过查看 CloudFront 文档来帮助防止此错误。 由 cloudfront (CloudFront) 生成的请求 ID: rt8tyVw7z08KccR0blotyc9IlgBzybuaEJ
其他信息:
我们没有WAF 将分发设置为接受“HTTP 和 HTTPS” 默认的根对象指向“index.html” 在行为上,基于选定请求标头的缓存设置为“无”问题:
-
我仍然收到 403 错误消息
根据谷歌搜索,有人提到使用 ssl 填充 Cloudfront Distribution 的“备用域名”:“admin.clientdomain.com”
我需要获取客户端的 SSL 证书吗?如何解决这个问题?
【问题讨论】:
【参考方案1】:这里有多个潜在的问题,让我们尝试一一排除。
验证以下 URL 是否可用并提供内容:
https://<your-distribution-id>.cloudfront.net
http://<your-distribution-id>.cloudfront.net
我们不知道 CNAME 记录是否设置正确。验证您是否可以使用dig
之类的工具来检查 CNAME 记录,例如dig CNAME admin.clientdomain.com
- 确保它指向 CloudFront 域。
确保 admin.clientdomain.com
位于 CloudFront 分配的“备用域名 (CNAME)”中。在这种情况下,至少 http 应该可以工作。
尝试访问:http://admin.clientdomain.com
如果可行,我们已经取得了进展。现在转到 HTTPS/SSL/TLS。为了让 CloudFront 能够为 admin.clientdomain.com 提供 HTTPS 内容,它需要一个证书。幸运的是,您可以使用亚马逊证书管理器 (ACM) 来request a free one。在 ACM us-east-1(北弗吉尼亚) 区域中为 admin.clientdomain.com
创建一个证书,然后配置 CloudFront 以使用该证书。请注意,您的客户必须添加额外的 DNS 记录以验证他们拥有 admin.clientdomain.com
- 或者您可以将现有证书导入 ACM。
之后你应该可以访问https://admin.clientdomain.com
。
【讨论】:
以上是关于向客户端提供带有 Cloudfront 内容的 S3的主要内容,如果未能解决你的问题,请参考以下文章
Amazon CloudFront 与 Limelight 或 Akamai 相比如何?