Использование 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. Когда я помещаю лямбду в VPC (в группу безопасности, которая разрешает весь исходящий трафик), она зависает. Что мне нужно сделать?
1 ответ
Проблема заключалась в том, что мне нужно было иметь NAT в подсети, в которой работает функция Lambda - Интернет-шлюза недостаточно!
Я предполагаю, что это потому, что Lambda работает только в частном порядке, а интернет-шлюз, разрешающий двусторонний трафик, не будет разрешать маршруты в / из Lambda.
Добавление лямбды в частную подсеть с подключенным NAT исправило эту проблему.