Amazon web services 如何将CNAME命名为Amazon API网关端点

Amazon web services 如何将CNAME命名为Amazon API网关端点,amazon-web-services,dns,amazon-cloudfront,aws-api-gateway,Amazon Web Services,Dns,Amazon Cloudfront,Aws Api Gateway,我正在尝试在Cloudflare上设置一个CNAME,以指向AmazonAPI网关端点。CNAME用于引用我的子域之一。网关依次指向DigitalOcean上服务器的IP。我对Amazon web服务非常陌生,如果有人能给我一个关于DNS、Amazon网关和Cloudfront的正确配置的概述,我将不胜感激(我认为这是向Amazon外部的DNS服务器公开网关所必需的)。任何帮助都将不胜感激 更新 我在这方面已经做了一段时间了,没有取得多大进展。是否有人知道这是一种可行的方法,或者如何做到 更新2

我正在尝试在Cloudflare上设置一个CNAME,以指向AmazonAPI网关端点。CNAME用于引用我的子域之一。网关依次指向DigitalOcean上服务器的IP。我对Amazon web服务非常陌生,如果有人能给我一个关于DNS、Amazon网关和Cloudfront的正确配置的概述,我将不胜感激(我认为这是向Amazon外部的DNS服务器公开网关所必需的)。任何帮助都将不胜感激

更新

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

更新2

我认为我需要将CNAME记录添加到cloudFlare中,并最终进入重定向循环,如下所示:

curl -L -i -v https://sub.mydomain.com/

注意:这种方法似乎不再有效,因为AWS现在只接受某些权威机构的证书。我自己还没有测试过,但古纳的答案看起来很有希望。

简单地将Cloudflare指向API网关域并在一天内调用它是行不通的,原因有几个:

  • API网关使用共享主机,因此它使用域名来确定向哪个API发送请求。它无法知道
    api.yourdomain.com
    属于您的api
  • API网关要求您使用https,但它使用的证书仅对默认域有效
然而,有一个解决办法。以下是我最近设置此项时遵循的步骤:

  • 从Cloudflare仪表板的crypto选项卡生成原始证书
  • 将证书导入
    us-east-1
    区域的AWS证书管理器,即使您的API位于不同的区域。如果系统提示您输入证书链,您可以从中复制它
  • 在API网关控制台中添加自定义域,并选择刚刚添加的证书。有关如何执行此操作的更多信息,请查看AWS
  • 自定义域完成初始化通常需要大约45分钟。完成后,它将为您提供一个新的Cloudfront URL。继续并确保您的API仍然可以通过这个新URL工作
  • 转到Cloudflare DNS选项卡并设置一条CNAME记录,指向您刚刚创建的Cloudfront URL
  • 切换到crypto选项卡,并将SSL模式设置为“完全(严格)”。如果跳过此步骤,将得到重定向循环

  • 就这样。享受从您的自定义域提供的新的高可用API

    使用CloudFlare设置亚马逊的API网关自定义域

  • 在AWS管理控制台中,转到API网关服务,并从左侧菜单中选择
    自定义域名

  • 单击
    创建
    按钮

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

  • 转到
    SSL
    并将SSL模式设置为“完全(严格)”以避免重定向循环

  • 转到
    原产地证书
    并单击
    创建证书

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

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

  • 选择
    PEM
    作为默认选择的键格式

  • 在AWS中,切换到区域
    US-EAST-1
    ,然后转到
    证书管理器

  • 单击导入证书

  • 将CloudFlare证书中的证书正文复制到AWS管理控制台中自定义域的配置中

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

  • 在证书链中,复制可以找到的Cloudflare源CA-RSA根

  • 在AWS控制台中输入自定义域名和证书名称

  • 现在将在AWS CloudFront中创建自定义域名。该域名可能需要一个小时才能激活

  • 接下来需要做的是在AWS控制台中设置自定义域的映射

  • 最后一步是在CloudFlare中创建一个新的
    CNAME记录
    ,将您的域链接到CloudFront url。当您在AWS控制台中打开自定义域的设置页面时,复制分发域名。这是创建新的
    CNAME记录
    时需要使用的域


  • 此问题的两个现有答案都是正确的,但如果问题仍然存在,即使完全按照这些说明操作,请尝试进入API网关设置,导航到“自定义域名”并配置基本路径映射


    这是解决我所有问题的缺失步骤。

    我无法获得任何其他答案。因此,我最终让AWS生成证书,而不是使用Cloudflare源证书。这是因为AWS不接受我的Cloudflare证书,即使提供了该链。我在Mozilla中看不到Cloudflare(根据文件,这就是AWS所依赖的)所以我想这是有道理的


    以下是我的解决方案的概要:

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