如何将 CloudFront 和 S3 与备用域一起使用?

Posted

技术标签:

【中文标题】如何将 CloudFront 和 S3 与备用域一起使用?【英文标题】:How to use CloudFront and S3 with alternate domain? 【发布时间】:2021-06-18 19:15:48 【问题描述】:

假设我有一个名为 example.com 的 S3 存储桶,我想使用备用域 example.com 通过 CloudFront 提供其内容。

我已添加 CNAME 记录以将 example.com 定向到 CloudFront 端点,并使用 AWS SSL 证书保护域。

在 CloudFront 中,当我选择源时,它会显示我的存储桶。例如:example.com.s3.amazonaws.com

如果我选择此来源并浏览到https://example.com/my-bucket-item.jpg,我会被重定向到https://example.com.s3-us-east-2.amazonaws.com/my-bucket-item.jpg,并出现“连接不安全”SSL 错误。

如果我将源设置为域 example.com,则会从 CloudFront 收到 403 Bad Request 错误。

据我了解,我的存储桶必须共享我的域名,否则我会收到“存储桶不存在”错误。

我已遵循 AWS 文档。我在这里做错了什么?

更新

通过将我的源策略更改为 Managed-CORS-S3Origin,我成功让 CloudFront 识别我的备用域。

新问题:即使我选择了“是”来“限制存储桶访问”,我仍然能够通过 S3 url 访问文件。我是否需要关闭对我的存储桶的公共访问?如果我这样做,它似乎会覆盖我的 CloudFront 策略...

【问题讨论】:

AWS SSL 证书中的域配置是什么? @MichaelDesigaud 域example.com,配置状态为“成功”,证书状态为“已发行”。关联资源是我的 CloudFront 分配。 @HWD 使用原始访问身份并将您的 AWS S3 限制为只能由 Cloud Front 访问:docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/… 【参考方案1】:

我不得不将我的源请求策略更改为 Managed-CORS-S3Origin - 这解决了我的一般问题。

【讨论】:

以上是关于如何将 CloudFront 和 S3 与备用域一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Cloudfront 允许所有备用域名 (CNAMES)

如何将 S3 网站的访问限制为 Cloudfront?

Cloudfront:设置与 Origin 的 s3 路径差异

为啥需要 Amazon S3 和 Cloudfront?

如何使用 C# HttpClient 或 AWS SDK 通过 CloudFront 将视频上传到 S3

将 Amazon S3 存储桶和 Cloudfront 与 SSL Wordpress 站点一起使用不会提供静态文件