API 网关自定义域名 getaddrinfo ENOTFOUND
API Gateway Custom Domain Name getaddrinfo ENOTFOUND
我已经使用 AWS API 网关创建了一个 api,并想为其附加一个自定义域名。我遵循了这个 tutorial 并完成了以下操作:
- 在证书管理器(
mydomain.io
和 *.mydomain.io
)上创建了新证书
- 向 GoDaddy 添加了 CNAME(因为我的是从 Godaddy 购买的)
- 在API网关上设置一个
api-dev.mydomain.io
> 自定义域名,并在“API映射”中映射到API和开发阶段。
- 在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],
...
我错过了什么?
根据评论。
问题是 api-dev.mydomain.io
是在 Route 53 中创建的,而它是由 GoDaddy 管理的(名称服务器未更改为 Route 53)。
解决方案 是在 GoDaddy 中创建 api-dev.mydomain.io
记录,而不是在 Route 53 中。
或者,要管理 Route 53 中的域,必须更新 GoDaddy 中的名称服务器以指向 Route 53 托管区域,如 Update the NS record with your current DNS service provider to use Route 53 name servers 中所述。
我已经使用 AWS API 网关创建了一个 api,并想为其附加一个自定义域名。我遵循了这个 tutorial 并完成了以下操作:
- 在证书管理器(
mydomain.io
和*.mydomain.io
)上创建了新证书 - 向 GoDaddy 添加了 CNAME(因为我的是从 Godaddy 购买的)
- 在API网关上设置一个
api-dev.mydomain.io
> 自定义域名,并在“API映射”中映射到API和开发阶段。 - 在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],
...
我错过了什么?
根据评论。
问题是 api-dev.mydomain.io
是在 Route 53 中创建的,而它是由 GoDaddy 管理的(名称服务器未更改为 Route 53)。
解决方案 是在 GoDaddy 中创建 api-dev.mydomain.io
记录,而不是在 Route 53 中。
或者,要管理 Route 53 中的域,必须更新 GoDaddy 中的名称服务器以指向 Route 53 托管区域,如 Update the NS record with your current DNS service provider to use Route 53 name servers 中所述。