Использование boto в лямбда-функции AWS в VPC

Использование boto в лямбда-функции AWS в VPC

У меня есть лямбда, которая обращается к EC2. Я хочу назначить ее VPC в целях безопасности, но когда я это делаю, boto просто перестает работать. Вот минимальный пример:

ec2 = boto3.resource('ec2', region_name='eu-west-2')
instances = ec2.instances.filter(Filters=[
  {
    'Name': 'vpc-id',
    'Values': [vpc_id]
  }
])
for instance in instances:
  # function hangs here
  print(instance)

Роль Lambda имеет необходимые разрешения на ec2 и отлично работает вне VPC. Когда я помещаю lambda в VPC (в группу безопасности, которая разрешает весь исходящий трафик), она зависает. Что мне нужно сделать?

решение1

Проблема заключалась в том, что мне нужно было иметь NAT в подсети, в которой работает функция Lambda — интернет-шлюза недостаточно!

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

Добавление Lambda в частную подсеть с подключенным NAT решило эту проблему.

Связанный контент