首页 > 解决方案 > API Gateway 自定义域名 getaddrinfo ENOTFOUND

问题描述

我使用 AWS API Gateway 创建了一个 api,并希望为其附加一个自定义域名。我按照本教程进行了以下操作:

  1. mydomain.io在证书管理器(和*.mydomain.io)上创建了新证书
  2. 向 GoDaddy 添加了 CNAME(因为我的 CNAME 是从 Godaddy 购买的)
  3. 设置一个api-dev.mydomain.ioon API gateway > Custom domain names,并将其映射到“API Mappings”中的 API 和 dev 阶段。
  4. 在 Route 53 上,api-dev.mydomain.io作为 A 记录添加并在步骤 3 中将其定向到 API(API 域名正确)。

据我所知,我相信我的设置应该是正确的,并且已经等待了 1 小时以使其“生效”。

然后我编写了一个简单的脚本来测试它,但它抛出了上述错误。

代码:

const axios = require("axios")

let baseUrl = "https://api-dev.mydomain.io"
let key = MY_API_KEY
let headers = {
    headers: {
        "x-api-key": key
    }
}

let usersEndpoint = baseUrl + '/token?email=someemail@gmail.com'

axios.get(usersEndpoint, headers)
.then(response => {
    let data = response.data
    console.log(data)
})
.catch(err => console.log(err))

错误信息:

Error: getaddrinfo ENOTFOUND api-dev.mydomain.io
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
  errno: 'ENOTFOUND',
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'api-dev.mydomain.io',
  config: {
    url: 'https://api-dev.mydomain.io/token?email=someemail@gmail.com',
    method: 'get',
    headers: {
      Accept: 'application/json, text/plain, */*',
      'x-api-key': MY_API_KEY,
      'User-Agent': 'axios/0.21.1'
    },
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    adapter: [Function: httpAdapter],
    ...

我错过了什么?

标签: node.jsamazon-web-servicesaws-lambdaaws-api-gateway

解决方案


根据评论。

问题在于它api-dev.mydomain.io是在 Route 53 中创建的,而它是由 GoDaddy 管理的(名称服务器未更改为 Route 53)。

解决方案是在GoDaddy中创建api-dev.mydomain.io记录,而不是在 Route 53 中。

或者,要管理 Route 53 中的域,必须更新 GoDaddy 中的名称服务器以指向 Route 53 托管区域,如使用当前 DNS 服务提供商更新 NS 记录以使用 Route 53 名称服务器中所述。


推荐阅读