AWS:在S3静态内容以及api网关终端节点上映射域

时间:2020-01-16 00:13:02

标签: amazon-web-services amazon-s3 architecture aws-api-gateway amazon-cloudfront

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

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

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

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

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

我需要使用什么服务来实现以上要求? 谢谢。

2 个答案:

答案 0 :(得分:0)

满足上述要求的AWS服务:

  1. 53号公路
  2. S3
  3. API网关

答案 1 :(得分:0)

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

选项1:Amazon Cloudfront

这具有规模优势。

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

How to setup cloudfront for API Gateway

How to seutp cloudfront with S3

由于您拥有Cloudfront,因此您可能想看看是否可以使用Lambda@Edge

选项2:AWS Amplify

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

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

我应该提到哪些框架可增强支持: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管理。