首页 > 解决方案 > AWS:在 S3 静态内容以及 api 网关端点上映射域

问题描述

我正在尝试实现以下域/路径映射:

foo.com -> 托管在 AWS S3 中的静态 Web 内容

foo.com/dogs -> api 网关端点

foo.com/cats -> api 网关端点

foo.com/birds -> api 网关端点

我需要使用哪些服务来实现上述目标?谢谢你。

标签: amazon-web-servicesamazon-s3architectureaws-api-gatewayamazon-cloudfront

解决方案


你有几个选择。由于您需要一个主机名 foo.com,因此您需要从一个可以将客户端流量引导到 s3 和 api 网关的服务开始。

选项 1:亚马逊 Cloudfront

这具有规模优势。

              | -> S3
cloudfront -> |
              | -> api gateway

如何为 API 网关设置云端

如何使用 S3 设置云端

而且由于您有云端,您可能想看看是否可以使用Lambda@Edge

选项 2:AWS 放大

如果您对 AWS 服务没有太多经验,或者即使您这样做也是一个不错的选择,我建议您先看一下,因为它为您简化了很多设置并具有一些不错的 [功能] ( https:/ /aws.amazon.com/amplify/features/)。将 Amplify 视为应用程序开发人员的服务服务。

查看(Amplify API)[ https://aws-amplify.github.io/docs/js/api],它用于创建 REST 或 GraphQL 端点。

我应该提到 Amplify 支持哪些框架:iOS、Android、ReactNative,对于 Web,它与 React、Ionic、Angular 和 Vue.js 深度集成。

是的,您最终可能会使用 Amplify 作为选项 1 获得相同的解决方案,这是最适合您的工作流程。

选项 3 拆分服务:

为 foo.com 和 api.foo.com 创建 2 个 DNS 条目

          | -> (foo.com) cloundfront -> S3
client -> |
          | -> (api.food.com) api-gateway

您可以在此解决方案中删除 cloudfront,只使用S3 static

关于 Route53 的注意事项:您不需要使用 Route53,因为任何 DNS 服务都可以使用。如果您使用选项 1 cloudfront,那么在任何 DNS 服务中创建 CNAME 一样容易。但是,如果您使用的是 Amplify,那么将您的 DNS 服务移动到 AWS Route53 将使您的 DNS 管理自动化。


推荐阅读