M.S*_*.S. 4 cname amazon-s3 amazon-cloudfront amazon-route53
我的网站有一个名为 api.example.com 的子域,我希望实现以下目标:
有 1 个映射到 api.example.com 的 S3 静态网站的 CloudFront 分配
将 API Gateway 自定义域名映射到同一个子域 api.example.com
我为实现此设置所做的步骤是:
创建一个 API 网关自定义域 api.example.com 并为我想公开为 v1(现在是版本 1)的 API 设置基本映射
在 Route 53 中,我创建了一个 CNAME 记录 api.example.com,指向步骤 1 中 API 网关的 Edge 优化目标域名
注意:此时我如预期的那样从https://api.example.com/v1得到 200 响应
我创建了一个 S3 存储桶并将其设置为静态网站托管。所有文件上传成功并正常工作。
我创建了一个新的 Cloudfront 发行版,源在 S3 存储桶中。此时,对于此 Cloudfront 分配,我无法将 CNAME 记录设置为 api.example.com,因为它已被 API 网关中设置的第一个自定义域名使用,并且 AWS 给出了 CNAMEAlreadyExistsException - 所以我将此字段留空. 访问 S3 存储桶的 CloudFront 分配按预期工作。
在为 S3 存储桶生成的 CloudFront 分配下,我添加了另一个源(API Gateway 自定义域名)并创建了 Bevahior 规则以将 v1/* 调用路由到 API Gateway 自定义域名。
在这一点上,事情不再就位: - 访问https://api.example.com 时,我从 API 网关分发中收到 {"message": "Fobidden" }。但是 URL https://api.example.com/v1仍然返回预期的结果。
问题:有什么我遗漏的设置,以便 URL https://api.example.com返回 S3 静态网站的内容吗?
注意:此外,我在 S3 存储桶 cloudfront 分配上有一个空的 CNAME 字段,而我在 Route53 中使用相同的 cloudfront 分配定义了一个 CNAME,这一事实提示我一条警告消息,指出这种情况可能会使我暴露在漏洞中。
对于您提到的用例,您只需要一个 Cloudfront 发行版(映射到 api.example.com),它应该能够使用不同的行为配置将流量转发到 S3 和 API Gateway(均作为源添加到同一发行版) . 您可以配置行为,将 /v1/* 流量路由到 API 网关,将其他流量路由到 S3。
在设置起源和行为时,您需要遵循的配置很少。
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |