amazon-web-services - AWS:在 S3 静态内容以及 api 网关端点上映射域
问题描述
我正在尝试实现以下域/路径映射:
foo.com -> 托管在 AWS S3 中的静态 Web 内容
foo.com/dogs -> api 网关端点
foo.com/cats -> api 网关端点
foo.com/birds -> api 网关端点
我需要使用哪些服务来实现上述目标?谢谢你。
解决方案
你有几个选择。由于您需要一个主机名 foo.com,因此您需要从一个可以将客户端流量引导到 s3 和 api 网关的服务开始。
选项 1:亚马逊 Cloudfront
这具有规模优势。
| -> S3
cloudfront -> |
| -> api gateway
而且由于您有云端,您可能想看看是否可以使用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 管理自动化。
推荐阅读
- firebase - flutter/firebase - 方法 XX 在 null 上被调用
- json - 使用 PostgreSQL 查询哈希的嵌套哈希
- c++ - 无法编辑 wxWidgets 文件
- java - 如何为嵌套的 Java 类创建构造函数/构建器?
- php - 从选择中计数并使用连接访问两个表
- javascript - React.ChangeEvent
转换为字符串 [] - ansible - jinja模板的变量整数和增量值的Ansible循环
- python - TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 datetime.timedelta
- c++ - 将 C++ std::vector push_back() 或 insert() 与 nothrow 一起使用
- google-tag-manager - 如何从 URL 中删除 PII(带有 GTM 的 GA4)