Время ожидания запроса конечной точки AWS execute-api / время ожидания ввода / вывода tcp - PullRequest
0 голосов
/ 28 мая 2019

Я хочу получить доступ к общедоступному шлюзу Rest Api из AWS Lambda в пределах VPC.

Я уже создал конечную точку execute-api и добавил порт 443 в группу безопасности.Я также отключил частные DNS-имена, но я все еще получаю «Тайм-аут запроса конечной точки» / dial tcp 52.28. . : 443: ошибка тайм-аута ввода-вывода.Я также проверил API, к которому я хочу получить доступ с почтальоном, который работает как задумано.Что мне не хватает.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

попробуйте получить доступ к API, используя <vpce-id>.execute-api.<region>.vpce.amazonaws.com и передав <api_id>.execute-api.<region>.amazonaws.com в Host заголовок

0 голосов
/ 28 мая 2019

По умолчанию Lambda в VPC не имеет общедоступного доступа в Интернет.

Один из вариантов, который у вас есть, - настроить NAT gateway в подсети. Lambda развернут, чтобы предоставить ему доступ в Интернет, следовательно, доступ к общедоступному REST API. Подробнее здесь -> Доступ в Интернет для лямбда-функций

AWS Lambda использует предоставленную вами информацию VPC для настройки ENI, которые позволяют вашей функции Lambda получать доступ к ресурсам VPC. Каждому ENI назначается частный IP-адрес из диапазона IP-адресов в указанных вами подсетях, но ему не назначаются общедоступные IP-адреса. Поэтому, если вашей функции Lambda требуется доступ к Интернету (например, для доступа к сервисам AWS, у которых нет конечных точек VPC), вы можете настроить экземпляр NAT внутри вашего VPC или использовать шлюз Amazon VPC NAT. Дополнительную информацию см. В разделе «Шлюзы NAT» в руководстве пользователя Amazon VPC. Вы не можете использовать интернет-шлюз, подключенный к вашему VPC, поскольку для этого ENI должен иметь общедоступные IP-адреса.

Или вы можете посмотреть здесь -> Почему я не могу подключиться к своему общедоступному API с конечной точки VPC API Gateway . Это говорит об этом

Используйте инструмент командной строки curl для проверки вашего частного API. В вашей команде curl укажите базовый URL-адрес, используемый для вызова API, а также заголовок Host или заголовок x-apigw-api-id. Дополнительные сведения см. В разделе «Вызов вашего частного API с использованием общедоступных DNS-имен конечных точек».

Базовый URL-адрес для вызова API включает DNS-имя и сценическое имя. Это выглядит так: https://vpceId.execute -api.awsRegion.vpce.amazonaws.com / сценическое имя

Примечание. Замените vpceId на идентификатор конечной точки VPC, который вы скопировали. Замените awsRegion на регион AWS вашего частного API (например, us-east-1). Замените stageName именем этапа, на котором развернут ваш API.

Заголовок хоста выглядит так:

Ведущий: apiId.execute-api.awsRegion.amazonaws.com

Примечание. Замените apiId на идентификатор API, который вы скопировали. Замените awsRegion на регион AWS вашего частного API (например, us-east-1).

Заголовок x-apigw-api-id выглядит так:

х-apigw-апи-ID: apiId

Примечание. Замените apiId на идентификатор API, который вы скопировали.

Если вы все настроите правильно, вы получите код ответа 200.

...