带有 S3 存储桶的 CNAME

Omm*_*awn 9 domain-name-system amazon-s3 cname-record amazon-web-services

我有一个 Web,我想将其图像移动到 AWS S3。假设它被调用mypage.com,我可以访问这样的图像:

https://mypage.com/pics/one.jpg
Run Code Online (Sandbox Code Playgroud)

我创建了一个称为存储static.mypage.com所有图像的存储桶,所以现在我可以像这样访问图像:

https://static.mypage.com.s3.eu-west-1.amazonaws.com/pics/one.jpg
Run Code Online (Sandbox Code Playgroud)

由于它是一个很长的名称,我想使用 DNS 使用“缩短器”。

所以,我想知道如何在我的 DNS 提供商中设置 CNAME 以使其成为可能,如果我去...

https://static.mypage.com/pics/one.jpg
Run Code Online (Sandbox Code Playgroud)

...我会从桶中获取图像。

谢谢!

MLu*_*MLu 26

过去 S3 支持FQDN 存储桶名称- 即正是您所需要的。其中 FQDN = 完全限定域名,即完整的主机名,如static.mypage.com。问题是这仅适用于 HTTP 而不适用于 HTTPS,因为无法让 S3 使用带有您的存储桶名称/主机名 ( static.mypage.com )的 SSL 证书。

如果您对仅限 HTTP 的流量感到满意,您仍然可以这样做。只需static.mypage.com在您的注册商处创建一个指向s3.eu-west-1.amazonaws.com. S3 将识别Host:请求中的标头并查看正确的 S3 存储桶。只要在桶中的对象是可公开访问的URL HTTP://static.mypage.com/pics/one.jpg应该只是罚款。

但是,一旦您通过 HTTPS 访问它,您就会收到 SSL 证书验证错误,因为 S3 证书中的主机名 * .s3.eu-west-1.amazonaws.com与预期的static.mysite.com不匹配。

解决方案是CloudFront的您也可以在S3的坐前面,以及处理它的正确的SSL证书:

  1. Amazon Certificate Manager 中static.mysite.com创建一个免费的 SSL 证书(或将您的第 3 方颁发的 SSL 证书上传到 ACM)。
  2. 设置CloudFront 分配,将 SSL 证书附加到它
  3. 配置 CloudFront 分配以使用您的 S3 存储桶作为
  4. 在您的 DNS 提供商处配置static.mysite.com CNAME 以指向 CF 分发名称,例如d123456abcdef.cloudfront.net
  5. 与您所需的URL的https://static.mypage.com/pics/one.jpg应该最后工作。

另请查看将流量路由到托管在 Amazon S3 存储桶中的网站

希望有帮助:)

  • 允许 CloudFlare 代理您的 S3 资产还将以比 CloudFront 低得多的成本解决 HTTPS 问题。 (2认同)