Verwenden von Boto in einer AWS-Lambda-Funktion in einer VPC

Verwenden von Boto in einer AWS-Lambda-Funktion in einer VPC

Ich habe ein Lambda, das auf EC2 zugreift. Ich möchte es aus Sicherheitsgründen einem VPC zuweisen, aber wenn ich das tue, funktioniert Boto einfach nicht mehr. Hier ist ein minimales Beispiel:

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)

Die Rolle des Lambda verfügt über die erforderlichen Berechtigungen auf ec2 und funktioniert außerhalb des VPC einwandfrei. Wenn ich das Lambda im VPC einfüge (in einer Sicherheitsgruppe, die den gesamten ausgehenden Datenverkehr zulässt), bleibt es hängen. Was muss ich tun?

Antwort1

Das Problem bestand darin, dass ich ein NAT im Subnetz benötigte, in dem die Lambda-Funktion ausgeführt wird – ein Internet-Gateway reicht nicht aus!

Ich gehe davon aus, dass dies daran liegt, dass Lambda nur privat ausgeführt wird und das Internet-Gateway, das bidirektionalen Datenverkehr zulässt, keine Routen zum/vom Lambda zulassen würde.

Das Hinzufügen des Lambda zu einem privaten Subnetz mit angeschlossenem NAT hat dieses Problem behoben.

verwandte Informationen