Моя настройка в настоящее время выглядит следующим образом:
API Gateway --- ALB --- ECS Cluster --- NodeJS Applications
|
-- Lambda
У меня также есть настраиваемое доменное имя, установленное на шлюзе API (ОБНОВЛЕНИЕ: я использовал ссылку на шлюз API по умолчанию и получил ту же проблему, я не думаю,это проблема пользовательского домена)
Когда одна служба в кластере ECS вызывает другую службу через шлюз API, я получаю
Имя хоста / IP не совпадает с альтернативными именами сертификатов: "Хост:someid.ap-southeast-1.elb.amazonaws.com. не входит в альтернативные имена сертификата: DNS: *. execute-api.ap-southeast-1.amazonaws.com "
Почемуэтот?
ОБНОВЛЕНИЕ
При запуске локального сервера, вызывающего шлюз API, я замечаю похожую ошибку:
{
"error": "Hostname/IP doesn't match certificate's altnames: \"Host: localhost. is not in the cert's altnames: DNS:*.execute-api.ap-southeast-1.amazonaws.com\""
}
И если япопробуйте отключить проверку HTTPS:
const response = await axios({
method: req.method,
url,
baseURL,
params: req.params,
query: req.query,
data: body || req.body,
headers: req.headers,
httpsAgent: new https.Agent({
: false // <<=== HERE!
})
})
Вместо этого я получаю ...
{
"message": "Forbidden"
}
Когда я вызываю базовый URL-адрес шлюза API непосредственно в Postman, он работает ... каким-то образомнапоминает мне о CORS, где сервер, кажется, блокирует мой сервер или локальный хост или ECS / ELB от доступа к моему шлюзу API?
Это может быть довольно запутанным, поэтому краткое изложение того, что я пробовал:
- В существующей установке службы внутри ECS могут вызывать другую через шлюз API.Когда это происходит, происходит сбой из-за ошибки HTTPS
- . Чтобы устранить ее, я задаю
rejectUnauthorized: false
, но шлюз API возвращает HTTP 403 - При работе на локальном хосте ошибка аналогична
- Я попытался вызвать ELB вместо шлюза API, он работает ...