Как разрешить AWS лямбда в VPC публиковать уведомление SNS?

У меня есть функция лямбда, которая обращается к моему Postgres db в RDS через VPC. После запроса db я хочу отправить уведомление SNS. Поскольку моя лямбда-функция существует в моем VPC, она не может получить доступ к SNS. У меня есть интернет-шлюз на VPC. Я прочитал документацию о конечной точке VPC, и в настоящее время поддерживается только s3.

Нужно ли вообще публиковать SNS в лямбда-функции в VPC?

Ответ 1

Вам понадобится сервер NAT, работающий в вашем VPC для маршрутизации трафика за пределами VPC. AWS теперь предлагает управляемый NAT-сервис, который упрощает это.

Ответ 2

ОБНОВИТЬ

По состоянию на апрель 2018 года SNS поддерживает конечные точки VPC через AWS PrivateLink. Таким образом, нет необходимости настраивать интернет-шлюз или экземпляр NAT, чтобы функция Lambda внутри вашего VPC публиковала уведомления SNS.

См. Это сообщение в блоге для более подробной информации.

Ответ 3

Я знаю, что это старо, но здесь другой вариант, который работает, для тех, кто не хочет настраивать NAT. Вместо того, чтобы пытаться иметь лямбда-функцию внутри VPC, которая взаимодействует с SNS, разбивается на 2 лямбда-функции следующим образом.

Function 1 находится внутри VPC и взаимодействует с базой данных, возвращая результат взаимодействия с базой данных (например, список идентификаторов, соответствующих некоторым критериям).

Function 2 находится вне VPC, вызывает Function 1, затем обрабатывает массив значений и публикует соответствующие уведомления SNS (например, отправляет сообщение на основе каждого идентификатора в списке).

Было бы неплохо, если бы была конечная точка VPC для SNS, но все же в конце 2016 года это, похоже, не так.

Ответ 4

Мне наконец-то удалось заставить его работать...

Фокус в том, что вы ДОЛЖНЫ иметь 2 подсети.

Публичный, с таблицей маршрутизации, которая отправляет трафик на интернет-шлюз вашего VPC. Поместите NAT туда.

И частный, с таблицей маршрутизации, которая отправляет трафик на NAT. Поместите там Лямбда. (BTW Создание общедоступной подсети означает установку параметра "Автоматически назначать открытый IP-адрес" "Да").

На этой обзорной диаграмме из документов AWS указано:

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html#Configuration-2