Amazon s3 S3托管的网站Cloudfront分发和API网关自定义域指向同一子域
我的网站有一个子域,名为api.example.com,我希望实现以下目标:Amazon s3 S3托管的网站Cloudfront分发和API网关自定义域指向同一子域,amazon-s3,amazon-cloudfront,amazon-route53,cname,Amazon S3,Amazon Cloudfront,Amazon Route53,Cname,我的网站有一个子域,名为api.example.com,我希望实现以下目标: 为映射到api.example.com的S3静态网站提供1个CloudFront发行版 将API网关自定义域名映射到同一子域API.example.com 为实现此设置,我执行了以下步骤: 创建一个API网关自定义域API.example.com,并为我要公开为v1的API设置基本映射(目前为版本1) 在Route 53中,我创建了一个CNAME记录api.example.com,指向步骤1中api网关的边缘优化目
- 为映射到api.example.com的S3静态网站提供1个CloudFront发行版
- 将API网关自定义域名映射到同一子域API.example.com
注意:此外,我在S3 bucket cloudfront发行版上有一个空的CNAME字段,而我在Route53中使用相同的cloudfront发行版定义了一个CNAME,这一事实提示我一条警告消息,指出这种情况可能会使我暴露于漏洞。对于您提到的用例,您只需要一个Cloudfront发行版(映射到api.example.com),它应该能够使用不同的行为配置将流量转发到S3和api网关(两者都作为源添加到同一发行版)。您可以通过将/v1/*流量路由到API网关,将其他流量路由到S3的方式来配置这些行为 设置起源和行为时,您需要遵循的配置很少
- 确保S3和API网关行为都将HTTP重定向到HTTPS
- 添加API网关源时,仅将其设置为转发HTTPS流量
- 在API网关行为中,将accept-*的头、授权、来源、引用列为白名单,并确保不将“主机”头列为白名单
- 在这两个源中,不要添加任何路径
- 对于API网关行为,将TTL配置为0并允许所有方法(GET、POST等)
executeAPI
hostname。(此外,API应该是区域性的,而不是边缘优化的。这两种方式都可以,但是当在您自己的CloudFront发行版后面使用时,不应该使用边缘优化的,因为它会有更高的延迟,并且一些头可能不会像预期的那样通过,因为请求会遍历AWS边缘网络两次而不是一次。)迈克尔的评论很有效。。因此,创建另一个指向api网关的通用执行api主机名的源将起作用-根本不需要创建自定义域名。我需要自定义域是出于不同的原因(将多个API合并到一个URL下),但这也可以通过使用指向API网关执行API URL的CloudFront分发源来实现。谢谢你,迈克尔!你能列举出要转发的头吗?@Tyrsius我记得,你可以转发除“主机”头以外的头。