2017-08-16 1 views
0

Die fragliche EC2-Instanz befindet sich in einem privaten Subnetz und hat keinen Internet-Zugang, der von NAT per Design aktiviert wurde. Derzeit befindet sich mein Lambda in einem öffentlichen Subnetz, das mit derselben VPC verbunden ist. Wenn ich versuche, Lambda aufzurufen, erhalte ich Connection to lambda.us-east-1.amazonaws.com timed out.Kann ich von der EC2-Instanz in privater VPC auf meinen Lambda zugreifen?

Antwort

3

Amazon EC2-Instanzen können nicht auf eine Lambda-Funktion zugreifen, aber sie können die AWS Lambda-API mit aufrufen, um eine Lambda-Funktion aufzurufen.

Allerdings befinden sich die API endpoints for AWS services alle im Internet. Daher erfordert der Aufruf einer API Zugriff auf das Internet. (Zwei Ausnahmen sind derzeit Amazon S3 und Amazon DynamoDB, die eine VPC Endpoint verwenden können, um die API-Endpunkte zugreifen.)

daher die Lambda-Funktion von einer Amazon EC2-Instanz in einem eigenen Subnetz aufzurufen, Sie benötigt ein NAT-Gateway und eine private Routentabelle, die konfiguriert ist, um Internet-gebundenen Datenverkehr an das NAT-Gateway zu senden.

Die Tatsache, dass die Lambda-Funktion mit Ihrem öffentlichen Subnetz verbunden ist, ist für den Aufruf einer Lambda-Funktion irrelevant. Es bedeutet einfach, dass die Lambda-Funktion beim Ausführen auf Ressourcen innerhalb der VPC zugreifen kann. (Tatsächlich sind Lambda-Funktionen normalerweise mit privaten Subnetzen und nicht mit öffentlichen Subnetzen verbunden, da sie nur auf das Internet zugreifen können, wenn ihr Datenverkehr über ein NAT-Gateway geleitet wird.)

1

Wenn Sie versuchen, die Lambda-Funktion aufzurufen, spielt es keine Rolle, wo die Lambda-Funktion überhaupt ist. Das liegt daran, dass Sie nicht direkt mit der Lambda-Funktion verbinden, wenn Sie sie aufrufen. Sie stellen eine Verbindung zur AWS-API her, um die Lambda-Funktion aufzurufen. Die einzige Möglichkeit, dies von einer EC2-Instanz in einem privaten Subnetz aus zu tun, wäre über ein NAT-Gateway.

Verwandte Themen