如何CNAME到Amazon API Gateway端点

Sil*_*ils 37 dns amazon-web-services amazon-cloudfront aws-api-gateway

我正在尝试在Cloudflare上设置CNAME以指向Amazon API Gateway端点.CNAME用于引用我的某个子域名时使用.网关反过来指向DigitalOcean上的服务器的IP.我是亚马逊网络服务的新手,如果有人能够概述DNS,亚马逊网关和Cloudfront的正确配置(我认为需要将网关暴露给亚马逊外部的DNS服务器),我将不胜感激.任何帮助将非常感激.

UPDATE

我已经在这方面做了一段时间而没有取得多大进展.有没有人知道这是否是一种可行的方法或者如何做到这一点?

UPDATE2

我以为我需要将CNAME记录添加到cloudFlare并且刚刚进入重定向循环,观察到:

curl -L -i -v https://sub.mydomain.com/
Run Code Online (Sandbox Code Playgroud)

Bon*_*Oak 38

有几个原因可以解释为什么只需将Cloudflare指向您的API网关域并将其称为一天:

  • API网关使用共享主机,因此它使用域名来确定要向其发送请求的API.它无法知道api.yourdomain.com属于您的API.
  • API Gateway要求您使用https,但它使用的证书仅对默认域有效.

但是,有一个解决方案.以下是我最近设置时所遵循的步骤:

  1. 从Cloudflare仪表板的加密选项卡生成原始证书.
  2. 将证书导入us-east-1区域中的AWS Certificate Manager ,即使您的API位于其他区域也是如此.如果系统提示您输入证书链,可以从此处复制.
  3. 在API网关控制台中添加自定义域,然后选择刚刚添加的证书.有关如何执行此操作的详细信息,请查看AWS 支持文章.
  4. 自定义域通常需要大约45分钟才能完成初始化.完成后,它将为您提供新的Cloudfront URL.继续,确保您的API仍可通过此新网址运行.
  5. 转到Cloudflare DNS选项卡并设置指向您刚刚创建的Cloudfront URL的CNAME记录.
  6. 切换到加密选项卡并将SSL模式设置为"Full(Strict)".如果跳过此步骤,您将获得重定向循环.

而已.享受您的自定义域提供的全新高可用性API!

  • 该死的!我可能花了10多个小时试图弄清楚为什么这不起作用,所需要的只是神秘的第6步.你先生,值得奖励. (3认同)

Tyl*_*rty 22

使用CloudFlare设置Amazon的API网关自定义域

  1. 在AWS管理控制台中,转到API网关服务,然后Custom Domain Names从左侧菜单中进行选择.

  2. 单击Create按钮.

  3. 登录CloudFlare,选择您的域并打开Crypto选项卡

  4. 转到SSL并将SSL模式设置为"Full(Strict)"以避免重定向循环.

  5. 转到Origin Certificates并单击Create Certificate

  6. 让CloudFlare生成私钥和CSR,并选择RSA作为私钥类型

  7. 确保涵盖自定义API域的主机名.(例如api.mydomain.com,您可以专门配置此自定义域或使用默认配置的通配符,例如*.mydomain.com.

  8. 选择PEM默认选择的密钥格式.

  9. 在AWS切换到区域US-EAST-1并转到Certificate Manager.

  10. 点击Import a Certificate.

  11. 将证书正文从CloudFlare证书复制到证书正文,并复制到AWS管理控制台中自定义域的配置.

  12. 将私钥复制到控制台中的证书私钥字段

  13. 在证书链中复制Cloudflare Origin CA - RSA Root,可在此处找到.

  14. 在AWS控制台中输入您的自定义域名以及证书的名称

  15. 现在,将在AWS CloudFront中创建自定义域名.域名变为活动状态可能需要一个小时.

  16. 您需要做的下一件事是在AWS控制台中设置自定义域的映射.

  17. 最后一步是CNAME Record在CloudFlare中创建一个新的链接,将您的域链接到CloudFront网址.在AWS控制台中打开自定义域的设置页面时,请复制分发域名.这是您在创建新域时需要使用的域CNAME Record.

资源

  • 我同意.中和!;-) (2认同)

Gun*_*ner 6

我无法得到任何其他工作答案。因此,我最终让 AWS 生成证书,而不是使用 Cloudflare Origin 证书。这是因为即使提供了链,AWS 也不会接受我的 Cloudflare 证书。我在 Mozilla 的证书颁发机构列表中看不到 Cloudflare (根据文档,这是 AWS 所依赖的),所以我认为这是有道理的。


这是我的解决方案的概要:

  1. 创建 AWS Route53 区域
  2. 使用验证方法 DNS 创建 AWS ACM 证书(必须位于 us-east-1 中)
  3. 使用 (2) 的输出创建 Cloudflare DNS 记录
  4. 创建AWS API网关域名
  5. 创建 Cloudflare DNS CNAME 记录,将“@”(根域)指向步骤 (4) 中的 Cloudfront 域名
  6. 创建 AWS API Gateway 基本路径映射

大概就是这样了。愿这对某人有帮助。随意问的问题。