Amazon web services 使用AWS路由53路由到API网关

Amazon web services 使用AWS路由53路由到API网关,amazon-web-services,dns,amazon-cloudfront,aws-api-gateway,amazon-route53,Amazon Web Services,Dns,Amazon Cloudfront,Aws Api Gateway,Amazon Route53,我在所有AWS区域都有一个lambda函数。我在全球各地都有客户,他们会给我的基本域名example.com打电话。我的(同类)负载平衡器负责确保将请求路由到距离客户端最近的区域的API网关,以最小化延迟 到目前为止,我有以下配置: 每个区域上部署的Lambda函数 每个API网关的自定义域名,公开CloudFront域名。例如,N.California region配置了自定义域名us-west-1.example.com,并映射了调用my lambda的路径。此API网关的CloudFro

我在所有AWS区域都有一个lambda函数。我在全球各地都有客户,他们会给我的基本域名
example.com
打电话。我的(同类)负载平衡器负责确保将请求路由到距离客户端最近的区域的API网关,以最小化延迟

到目前为止,我有以下配置:

  • 每个区域上部署的Lambda函数
  • 每个API网关的自定义域名,公开CloudFront域名。例如,N.California region配置了自定义域名
    us-west-1.example.com
    ,并映射了调用my lambda的路径。此API网关的CloudFront URL是
    d12345123.CloudFront.net
  • us-west-1.example.com
    的Route53托管区中类型为
    A
    的记录集,它是
    d12345123.Clouffront.net
    的别名。如果我对
    us-west-1.example.com/1.0/localdb
    进行POST调用,它将返回正确的输出
  • Route53中的流量策略和策略记录,用于
    A
    类型的
    default.example.com
    ,它具有分配给它的地理邻近规则,将流量重定向到该区域的CloudFront实例(在该区域添加自定义域名后公开的同一实例)。这将在类型为
    A
    A的托管区域中为
    default.example.com
    创建一个条目
  • example.com
    路由53托管区中
    A
    类型的记录集,它是
    default.example.com
    的别名,因此到达
    example.com
    的流量可以路由到
    default.example.com
在这些配置之后,当我调用
example.com
时,我从Cloudfront收到
403
响应,称之为
错误请求

感谢截至2017年11月的“Amazon API网关支持区域API端点”

现在,在使用AmazonAPI网关创建RESTAPI和自定义域时,您可以从两种类型的API端点中进行选择。区域API端点是从部署REST API的同一AWS区域访问的一种新型端点。当API请求来自与REST API相同的区域时,这有助于减少请求延迟。此外,您现在可以选择将自己的Amazon CloudFront发行版与区域API端点相关联。第二种类型的API端点是边缘优化的API。边缘优化API是通过API网关创建和管理的CloudFront分发版访问的端点。以前,边缘优化API是使用API网关创建API的默认选项

要开始,请使用Amazon API网关控制台、AWS CLI或AWS SDK和API创建新的REST API。您还可以将现有REST API和自定义域迁移到区域API端点。请访问我们的文档以了解有关此功能的更多信息

此功能现在在美国东部(北弗吉尼亚州)、美国东部(俄亥俄州)、美国西部(俄勒冈州)、美国西部(北加利福尼亚州)、加拿大(中部)、南美洲(圣保罗)、欧盟(爱尔兰)、欧盟(法兰克福)、欧盟(伦敦)、亚太(新加坡)、亚太(东京)、亚太(悉尼)、亚太(首尔)和亚太(孟买)AWS地区可用。有关Amazon API网关的更多信息,请访问我们的产品页面


到目前为止,你会发现你认为你已经完成的事情和你实际完成的事情之间存在差距。你的
default.example.com
无法实现你的期望,因此回答你的问题也无济于事。调用Lambda函数通常意味着使用API网关,将不同的CNAME记录指向不同区域中的不同API网关部署是不够的——对于给定的主机名,您只能将API网关配置为在一个区域中使用该主机名。请提供有关您实际尝试完成的操作和特定配置的更多详细信息。当浏览器发出HTTP请求时,它会将
主机
头设置为地址栏URL中的主机名。无论任何中间DNS解析步骤如何,原始主机名都是目标所看到的。这是你面临的根本问题。目前还没有一个AWS本机、托管、无服务器的解决方案。它需要区域代理服务器重写这些主机头,或重定向到区域主机名,或。。。如果您的API总是需要<3秒的时间来处理请求,那么您的API中有一个潜在的解决方案Lambda@Edge.