AWS Lambda не может получить доступ к внутренним серверам из VPC

У меня есть лямбда, которая пытается сделать вызов REST на локальный сервер за пределами AWS. У нас есть лямбда, работающая из VPC, который имеет VPN-подключение к нашим локальным ресурсам. Тот же вызов rest успешно выполняется из EC2 с VPC, но лямбда-запрос зависает. Группы безопасности открыты. Любые идеи, как это отладить?

Вот основная часть лямбда

def lambda_handler(event, context):
    config = configparser.ConfigParser()
    config.read('config')

    pattern = re.compile(".*"+config['DEFAULT']['my-pattern'])
    logger.info(event['Records'])
    sns_json = event['Records'][0]['Sns']
    sns_message = json.loads(sns_json['Message'])
    logger.info(sns_message['Records'][0]['s3'])
    s3_object = sns_message['Records'][0]['s3']
    new_file_name = s3_object['object']['key']
    bucket = s3_object['bucket']['name']
    if pattern.match(new_file_name):
        new_json = {"text": "New file (" + new_file_name + ") added to the bucket. " + bucket,
                   "title": config['DEFAULT']['default_message_title']}
        webhook_post = requests.get("http://some-ip:4500/")
        logger.info("Webhook Post Status: " + str(webhook_post.status_code) + str(webhook_post))
        logger.info("Skip teams webhook");
        outgoing_message_dict = {
            's3Bucket': bucket,
            'somefile': new_file_name
        }
        return outgoing_message_dict

Я не получаю никаких ошибок от запроса, он просто зависает до истечения времени ожидания моей лямбды.

что происходит, когда ваша лямбда находится за пределами VPC? И ваша лямбда находится в частной подсети или в общедоступной подсети?

deosha 26.06.2019 04:44

Подключена ли функция Lambda к тем же подсетям, что и инстанс EC2, который, по вашим словам, работает? Является ли some-ip общедоступным IP-адресом или частным IP-адресом (например, 10.)? Инстанс EC2 работает в общедоступной или частной подсети?

John Rotenstein 26.06.2019 08:05

@john Lambda работает в тех же подсетях, что и EC2, которые являются частными.

stoneg64 26.06.2019 15:25

@deosha Lambda хорошо работает за пределами VPC, но, конечно, я не могу получить доступ к своим внутренним ресурсам.

stoneg64 26.06.2019 15:27

Какой IP-адрес вы открыли в своих собственных брандмауэрах? Для EC2 это будет работать, потому что вы можете открыть частный IP-адрес на своих собственных предварительных брандмауэрах. Lambda не имеет статического IP

deosha 26.06.2019 15:49

@deosha Я думаю, это хороший момент. Но я считаю, что мы открыли все IP-адреса в диапазоне CIDR VPC (я не настраивал). Мне не нужно отправлять сетевому администратору свой IP-адрес, чтобы заставить EC2 работать. Я просто запускаю и экземпляр, и он работает. Спасибо за помощь!

stoneg64 26.06.2019 15:59

Есть вероятность, что наше VPN-соединение не поддерживается в нашей локальной сети. Я получил другую ошибку, когда убедился, что VPN активен

stoneg64 26.06.2019 16:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
1 146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что нашел источник проблемы. В конечном счете, я считаю, что проблема в нашем локальном брандмауэре. Туннель VPN не был активен все время. Другие упомянули, что его необходимо активировать из локальной сети. Я создал экземпляр ec2 и подключился к нему, активировав VPN. Вскоре после этого я запустил лямбду, и мне удалось успешно подключиться к локальной конечной точке REST, к которой я пытался подключиться.

Я еще не реализовал окончательное решение, но с помощью брандмауэра мы должны иметь возможность установить для соединения постоянный пинг, чтобы наше соединение не истекало по тайм-ауту. Надеюсь, это поможет другим. Спасибо за ваш отзыв!

Другие вопросы по теме