dns - 使用 CNAME DNS 条目调用 AWS Lambda 函数

标签 dns aws-lambda cname

我目前在 AWS 上部署了一个 lambda 函数。 Lambda 的 URL 是 https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/stage_name_here

我在我的 DNS 中创建了一个 CNAME 条目,它指向 my.custom.name.com 到 Lambda 的基础:https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/。我不拥有域 name.com。这纯粹是一个 CNAME 引用,我的 DNS 将解析为 lambda 基础。如果我在 my.custom.name.com 上运行 nslookup,它会正确解析并指向 https://xxxxxxxxxx.execute-api.us-east -1.amazonaws.com/

调用 https://xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/stage_name_here 时,我可以通过 Postman 正确使用 lambda,但是如果我尝试使用任何变体my.custom.name.com/stage_name_here,它返回

{
  'message': 'forbidden'
}

我的理解是,当我尝试使用该 CNAME 发出请求时,它首先转到我的 DNS。我的 DNS 将该 CNAME 解析为 lambda 基地址。我的理解是 AWS 不知道 my.custom.name.com,因为我的 DNS 仅使用它来了解向何处发送请求。

就我的理解而言,一个类比是我正在尝试将一封信发送到一个地址:address1。我没有在信上写 address1,而是写 address2。当 postman 收到我的信时,他问他的老板 address2 在哪里,他的老板告诉他 address2 = address1。然后他把信送到address1。

在这个类比中,address2 并不需要实际存在才能发生此交易。除非我误解了,否则 AWS API Gateway 要求 address2 存在,因为字母首先转到 address2,然后转到 address1

似乎正在发生的事情是 AWS 以某种方式知道 address2 是等式的一部分,因为当使用 address2 而不是 address1< 时它拒绝请求.

这种情况有什么区别,我如何设置 DNS CNAME 和 AWS 才能使情况 1 发生?

最佳答案

AWS API 网关控制台具有称为自定义域 的内置机制。这正是您所需要的。您需要按照@LostJon 指出的那样进行设置。

基本步骤是:

  1. 使用 Amazon ACM 创建 SSL 证书
  2. 从 API 网关控制台创建一个自定义域,例如 api.example.com,在此步骤中,为您的域选择通过第 1 步获得的 SSL 证书
  3. 创建一个basepathbasepath 指向您的API。例如基本路径 /payment 指向您的 api,这使得它可以通过 https://api.example.com/payment 访问 此过程还将为您提供云端分发地址,例如 d3fgrtgh@cloudfront.net`
  4. 转到 Route53(或您的域注册)并创建一个 A 记录以将子域 api.example.com 指向云端分发地址,例如 d3fgrtgh@cloudfront.net `

引用: https://hackernoon.com/how-to-setup-subdomain-for-aws-api-gateway-d526a9fd6722

关于dns - 使用 CNAME DNS 条目调用 AWS Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59274369/

相关文章:

email - LetsEncrypt 具有多域和多子域的 SSL 证书

java - 调用 AWS Lambda Java 函数的 AWS 网关收到空正文

node.js - AWS CloudFormation 与 node.js 10.x 更新错误 "ZipFile can only be used when Runtime is set to <older node.js versions>"

apache - 将子域重定向到外部站点的 CNAME 规则不起作用

dns - 注册商不允许 SES 要求的 CNAME 中的下划线

apache - 三个域重定向到主域最佳实践 apache2

Node.js:v0.8 中的域模块

mysql - Grails - 外部数据库 Controller 和域

amazon-web-services - 如何在 node.js AWS Lambda 中获取经过身份验证的用户的电子邮件地址?

google-app-engine - 自动重定向谷歌应用引擎