Пользовательское доменное имя частного API AWS API Gateway
В документе AWS говорится:
Пользовательские доменные имена не поддерживаются для частных API.
Источник: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html
Что именно это означает? Я могу прикрепить собственное доменное имя к частному API.
Однако я столкнулся с проблемами с сертификатами SSL.
2 ответа
API Gateway имеет 4 варианта:
- HTTP API
- WebSockets API
- REST API
- REST API Private
REST API Private - это то же самое, что и REST API, за исключением того, что он доступен только из VPC. Для доступа к REST API из VPC требуется конечная точка интерфейса VPC. Если вы не используете интерфейсную конечную точку VPC, вы можете получить доступ к REST API на API-шлюзе через NAT, который проходит через интернет-шлюз или просто интернет-шлюз. В любом случае это будет общедоступный REST API через Интернет.
При использовании конечной точки интерфейса VPC AWS генерирует собственное доменное имя. Это доменное имя используется в VPC для поиска конечной точки и перенаправления на REST API. По этой причине в настоящее время вы не можете указать собственное доменное имя. Вы можете указать собственное доменное имя для общедоступного REST API.
Поскольку вы не можете указать собственное доменное имя, вы не можете использовать свои собственные сертификаты.
Поскольку конечная точка интерфейса VPC называется шлюзом API, внутри используется TLS 1.2. Это тоже нельзя изменить.
Если вы хотите использовать свои собственные сертификаты, вам нужно будет определить собственное доменное имя и использовать общедоступный REST API, определенный в API Gateway.
В качестве альтернативы вы можете использовать собственное доменное имя, внутреннее для вашего VPC, сгенерировать сертификат для этого доменного имени. Поместите сертификат на прокси-сервер, например NGINX, используйте прокси-сервер для управления конечной точкой интерфейса. Конечная точка интерфейса использует эластичный сетевой интерфейс (ENI) и поэтому имеет группу безопасности, и вы можете ограничить трафик, исходящий от прокси-сервера, используя группу безопасности. В этом случае сертификат будет находиться на прокси-сервере, а TLS завершится на прокси-сервере. После этого прокси-сервер получит доступ к REST API через новое соединение.
Одним из вариантов использования личного домена для частной конечной точки является размещение (внутреннего) балансировщика нагрузки приложения перед шлюзом API. Когда вы добавляете прослушиватель в свой ALB, у вас есть возможность указать сертификат. Затем вы указываете свой ALB с вашим доменом в качестве псевдонима в Route53. Чтобы обобщить:
- Создайте целевую группу, указывающую на IP-адреса ENI
com.amazonaws.eu-west-1.execute-api
- Создание внутреннего балансировщика нагрузки приложений
- Добавьте целевую группу в качестве слушателя, укажите сертификат SSL/TLS по умолчанию с вашим доменом.
- Укажите свой домен на псевдоним ALB в Route53
- При желании вы можете поместить балансировщик сетевой нагрузки перед ALB, если вам нужно предоставить ALB некоторый локальный адрес. В этом случае вы указываете свой домен на локальный (частный) адрес вместо псевдонима ALB. Создайте новую целевую группу, указывающую на ваш ALB, и добавьте ее в качестве слушателя в NLB.