1

我们在 AWS Amplify 中有一个站点。创建自定义域需要将 URL 指向他们发布的 CNAME。我们希望将 Amplify 网站用于我们的根域“example.com”。RFC 1034 说区域顶点必须是 A 记录,而不是 CNAME。

根据https://aws.amazon.com/blogs/networking-and-content-delivery/solving-dns-zone-apex-challenges-with-third-party-dns-providers-using-aws/上的文章,共有三个选项:Route53、带有 EC2 实例的弹性 IP 和 Global Accelerator。

由于我们使用的是 AWS Amplify,因此我们无法执行 EC2 选项。Route53 选项不适用于我们的旧 DNS 服务器,它只适用于 IP 地址。第三种选择是使用 AWS Global Accelerator 和 Application Load Balancer (ALB),它执行 301 重定向到我们的 Cloudfront 分发,该分发具有我们的 Amplify 实例的自定义 SSL 证书。

当我们将 DNS 指向与 AWS Global Accelerator 关联的 IP 时,到 Cloudfront 的 301 重定向正在工作。Cloudfront 中的某些配置会导致 403 错误。

在编辑行为 > 缓存键和源请求下,如果禁用缓存策略,并且源请求策略设置为无,则 Amplify 站点将加载但使用 Cloudfront 分发 URL。

当我为缓存策略或源请求策略启用任何缓存时,它会中断。它只是返回一个 403 错误,表示无法满足请求。

Amplify 中是否有我丢失的设置导致 403 错误?我应该做一些完全不同的事情吗?

4

1 回答 1

1

如果您需要在 Amplify 中托管应用程序,那么您需要在中间使用一些东西来处理域的重写(例如 nginx 实例或 lambda 函数)。鉴于您概述的要求,我不确定 Amplify 是最佳选择。Amplify 还有其他托管替代方案,它们仍然可以帮助管理所涉及的 AWS 基础设施/开销,例如 Elastic Beanstalk。另一种选择是在 EC2 实例上运行您的应用程序。您仍然可以将带有钩子的 CI/CD 流程集成到源代码存储库中,从而允许您使用 AWS Code* 服务自动构建/部署。

于 2022-02-02T22:27:58.503 回答