Это, вероятно, вопрос с легким ответом, но я не могу понять, как это понять.AWS Лямбда-передача HTTP-запроса
Фон: У меня есть функция Lambda на питоне, чтобы подбирать изменения в БД, а затем используя HTTP-сообщение об изменениях в json для URL-адреса. Я использую urllib2 вроде этого:
# this runs inside a loop, in reality my error handling is much better
request = urllib2.Request(url)
request.add_header('Content-type', 'application/json')
try:
response = urllib2.urlopen(request, json_message)
except:
response = "Failed!"
кажется из бревен либо вызова для отправки сообщения пропускается полностью или раз-аут во время ожидания ответа.
Есть ли настройка разрешения, которую мне не хватает, исходящие правила в AWS кажутся правильными. [Edit] - VPC, примененный к этой лямбде, имеет доступ в Интернет, и применяемые группы безопасности разрешают доступ в Интернет. [/ Edit]
Я тестировал код локально (подключен к одному источнику данных), и он работает безупречно.
Похоже, что другие вопросы, связанные с проводкой из лямбда, связаны с node.js и обычно потому, что URL-адрес неверен. В этом случае я использую url requestb.in, который, как я знаю, работает так, как работает при запуске локально.
Edit:
я установки мой шлюз NAT, и он должен работать, я даже зашел так далеко, как идти к другой учетной записи AWS, повторное создание условий, и она отлично работает. Я не вижу никаких групп безопасности, которые будут блокировать доступ в любом месте. Он продолжает тайм-аут.
Edit: Оказывается, я был просто идиотом, когда я настроить мой маршрут по умолчанию к шлюзу NAT, по привычке я написал 0.0.0.0/24 вместо 0.0.0.0/0
Ваша функция Lambda сконфигурирована для работы внутри вашего VPC? Он настроен для выполнения внутри общей подсети или частной подсети? –
У меня есть 4 подсети, которые имеют доступ в Интернет. Он может получить доступ к другим ресурсам в тонкостях VPC/subnet, так как это DB. –
Все 4 подсети публичные подсети? Или кто-то из них частный? –