У меня есть лямбда, которая пытается сделать вызов 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
Я не получаю никаких ошибок от запроса, он просто зависает до истечения времени ожидания моей лямбды.
Подключена ли функция Lambda к тем же подсетям, что и инстанс EC2, который, по вашим словам, работает? Является ли some-ip общедоступным IP-адресом или частным IP-адресом (например, 10.)? Инстанс EC2 работает в общедоступной или частной подсети?
@john Lambda работает в тех же подсетях, что и EC2, которые являются частными.
@deosha Lambda хорошо работает за пределами VPC, но, конечно, я не могу получить доступ к своим внутренним ресурсам.
Какой IP-адрес вы открыли в своих собственных брандмауэрах? Для EC2 это будет работать, потому что вы можете открыть частный IP-адрес на своих собственных предварительных брандмауэрах. Lambda не имеет статического IP
@deosha Я думаю, это хороший момент. Но я считаю, что мы открыли все IP-адреса в диапазоне CIDR VPC (я не настраивал). Мне не нужно отправлять сетевому администратору свой IP-адрес, чтобы заставить EC2 работать. Я просто запускаю и экземпляр, и он работает. Спасибо за помощь!
Есть вероятность, что наше VPN-соединение не поддерживается в нашей локальной сети. Я получил другую ошибку, когда убедился, что VPN активен





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