gpt4 book ai didi

amazon-s3 - S3 托管网站 Cloudfront 分布和 API 网关自定义域指向同一子域

转载 作者:行者123 更新时间:2023-12-03 22:13:53 27 4
gpt4 key购买 nike

我的网站有一个名为 api.example.com 的子域,我希望实现以下目标:

  • 有 1 个映射到 api.example.com
  • 的 S3 静态网站的 CloudFront 分配
  • 将 API Gateway 自定义域名映射到同一个子域 api.example.com

  • 我为实现此设置所做的步骤是:
  • 创建一个 API 网关自定义域 api.example.com 并为我想要公开的 API 设置基本映射为 v1(现在是版本 1)
  • 在 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 Gateway 发行版中得到 {"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。

    在设置起源和行为时,您需要遵循的配置很少。

  • 确保 S3 和 API Gateway 行为都将 HTTP 重定向到 HTTPS。
  • 添加仅转发 HTTPS 流量的 API 网关源集时。
  • 在 API Gateway 行为中,将 accept-*ones、授权、来源、引用者的 header 列入白名单,并确保您没有将“主机” header 列入白名单。
  • 在这两个来源中,不要添加任何路径。
  • 对于 API 网关行为,将 TTL 配置为 0 并允许所有方法(GET、POST 等)
  • 关于amazon-s3 - S3 托管网站 Cloudfront 分布和 API 网关自定义域指向同一子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434608/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com