2016-08-17 1 views
1

У меня есть функция лямбда-AWS, чтобы вызвать ежедневный импортер рабочих местAWS лямбда-функция ConnectionError при конфигурации с VPC

Я использую «стартером функцию AWS Lambda.» для этого и lambda_handler достаточно просты. Это псевдо-код, что я делаю:

try: 
    cron_job = CloudCron() 
    status = redis_get_importer_status(db_key, key) 
    if status != 'running': 
     cron_job.login() 
     redis_set_importer_status(db_key, key, 'running') 
     cron_job.start_importer() 
except Exception: 
    exc_traceback = traceback.print_exc() 
    print(exc_traceback) 

Эта функция инициируется CloudWatch события каждые 15 минут.

Функция лямбда не смогла запустить lambda_handler и жаловалась на отсутствие политики выполнения для VPC. Чтобы решить эту проблему, я применил для этой роли AWSLambdaVPCAccessExecutionRole Policy. В то время как это работало с моим lamda_handler, были и другие проблемы. Модуль запросов python бросил ConnectionError при попытке входа на сайт. Я увеличил таймаут до 5 минут и память до 1 ГБ и все еще вижу эту проблему.

ConnectionError: HTTPSConnectionPool (хост = 'test.site.com.au', порт = 443): МАКС.ПОПЫТОК превышены URL:/аутентификации/авторизации (Вызванный NewConnectionError (': Не удалось установить новое соединение: [Errno 110] Connection timed out ',))

Я запустил тот же lambda_handler внутри своего VPC и, кажется, работает без проблем.

Я наконец удалил статус redis и получил статус в своей лямбда-функции и настройке VPC в lamba и снова запустил lamda_handler, и это, похоже, работает без каких-либо проблем.

Мне нужна конфигурация VPC для установки и получения ключей с сервера redis.

Любая помощь приветствуется!

Приветствия!

ответ

2

После того, как вы разместите функцию Лямбда внутри вашего VPC, она сможет получать доступ только к ресурсам внутри VPC. Он не может подключиться к test.site.com.au, поскольку он разрешает публичный IP-адрес вне вашего VPC. У вас есть несколько вариантов решения этой проблемы:

  • Добавить шлюз NAT к VPC. Это обеспечит доступ в Интернет к вашей лямбда-функции.
  • Если сайт, к которому вы пытаетесь получить доступ, работает на сервере внутри вашего VPC, используйте вместо него IP-адрес приватного IP-адреса. Кроме того, настройте приватную гостевую зону Route53 в VPC, которая разрешает это DNS-имя для частного IP-адреса.
+0

У меня есть аналогичная проблема. и сконфигурированные частные подсети с NAT Gateway, тем не менее, до сих пор не имеют доступа к Интернету. Любая помощь? – Kostanos

+0

@ Kostanos Я уже ответил вам на другой вопрос, на который вы ссылались на этот точный комментарий. Пожалуйста, разместите свой собственный вопрос вместо того, чтобы рассылать этот комментарий по каждому связанному с ним вопросу. –

+0

Спасибо @ mark-b Я уже разрешил это. Мой iisue заключался в том, что я создал NAT-шлюз внутри частной подсети, когда я должен делать это в публичной подсети. – Kostanos

 Смежные вопросы

  • Нет связанных вопросов^_^