Private Netzwerke mit VPC - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Private Netzwerke mit VPC

Amazon Virtual Private Cloud (Amazon VPC) ist ein virtuelles Netzwerk in der AWS Cloud, das Ihrem AWS Konto gewidmet ist. Mit Amazon VPC können Sie ein privates Netzwerk für Ressourcen wie z. B. Datenbanken, Cache-Instances oder interne Services erstellen. Weitere Informationen zu Amazon VPC; finden Sie unter Was ist Amazon VPC?

Eine Lambda-Funktion läuft immer in einer VPC, die dem Lambda-Dienst gehört. Lambda wendet Netzwerkzugriffs- und Sicherheitsregeln auf diese VPC an und Lambda pflegt und überwacht die VPC automatisch. Wenn Ihre Lambda-Funktion auf die Ressourcen in Ihrer Konto-VPC zugreifen muss, konfigurieren Sie die Funktion für den Zugriff auf die VPC. Lambda stellt verwaltete Ressourcen namens Hyperplane ENIs bereit, die Ihre Lambda-Funktion verwendet, um von der Lambda-VPC eine Verbindung zu einer ENI (Elastic-Network-Schnittstelle) in Ihrer Konto-VPC herzustellen.

Für die Nutzung einer VPC oder Hyperplane ENI fallen keine zusätzlichen Gebühren an. Für einige VPC-Komponenten, wie NAT-Gateways, fallen Gebühren an. Weitere Informationen dazu finden Sie unter Amazon VPC – Preise.

VPC-Netzwerkelemente

Amazon-VPC-Netzwerke enthalten die folgenden Netzwerkelemente:

  • Elastic-Network-Schnittstelle – Eine Elastic-Network-Schnittstelle ist eine logische Netzwerkkomponente in einer VPC, die eine virtuelle Netzwerkkarte darstellt.

  • Subnetz – Ein Bereich an IP-Adressen in Ihrer VPC. Sie können AWS Ressourcen zu einem bestimmten Subnetz hinzufügen. Verwenden Sie öffentliche Subnetze für Ressourcen, die mit dem Internet verbunden sein müssen, und private Subnetze für Ressourcen, die nicht mit dem Internet verbunden sind.

  • Sicherheitsgruppe — Verwenden Sie Sicherheitsgruppen, um den Zugriff auf die AWS Ressourcen in jedem Subnetz zu steuern.

  • Zugriffssteuerungsliste (ACL) – Verwenden Sie eine Netzwerk-ACL, um zusätzliche Sicherheit in einem Subnetz zu gewährleisten. Die Standard-Subnetz-ACL lässt den gesamten ein- und ausgehenden Datenverkehr zu.

  • Routentabelle — enthält eine Reihe von Routen, über AWS die der Netzwerkverkehr für Ihre VPC geleitet wird. Sie können ein Subnetz einer bestimmten Routing-Tabelle explizit zuordnen. Standardmäßig ist die Haupt-Routing-Tabelle dem privaten Subnetz zugeordnet.

  • Route – Jede Route in einer Routing-Tabelle gibt einen Bereich von IP-Adressen und das Ziel an, an das Lambda den Datenverkehr für diesen Bereich sendet. Die Route gibt auch ein Ziel an, nämlich das Gateway, die Netzwerkschnittstelle oder die Verbindung, über die der Datenverkehr gesendet werden soll.

  • NAT-Gateway — Ein AWS Network Address Translation (NAT) -Dienst, der den Zugriff von einem privaten privaten VPC-Subnetz auf das Internet steuert.

  • VPC-Endpunkte — Sie können einen Amazon VPC-Endpunkt verwenden, um private Verbindungen zu Diensten herzustellen, auf denen gehostet wird AWS, ohne dass ein Zugriff über das Internet oder über ein NAT-Gerät, eine VPN-Verbindung oder eine Verbindung erforderlich ist. AWS Direct Connect Weitere Informationen finden Sie unter AWS PrivateLink und VPC-Endpoints.

Tipp

Um Ihre Lambda-Funktion für den Zugriff auf eine VPC und ein Subnetz zu konfigurieren, können Sie die Lambda-Konsole oder die API verwenden.

Informationen zur Konfiguration Ihrer Funktion finden CreateFunctionSie im VpcConfig Abschnitt unter. Hinzufügen von Lambda-Funktionen zu einer Amazon VPC in Ihrem AWS-KontoAusführliche Schritte finden Sie unter.

Weitere Informationen zu Amazon-VPC-Netzwerkdefinitionen finden Sie unter Funktionsweise von Amazon VPC im Amazon-VPC-Entwicklerhandbuch und unter Häufig gestellte Fragen zu Amazon VPC.

Verbinden von Lambda-Funktionen mit Ihrer VPC

Eine Lambda-Funktion läuft immer in einer VPC, die dem Lambda-Dienst gehört. Standardmäßig ist eine Lambda-Funktion nicht mit VPCs in Ihrem Konto verbunden. Wenn Sie eine Funktion mit einer VPC in Ihrem Konto verbinden, kann die Funktion nicht auf das Internet zugreifen, es sei denn, die VPC ermöglicht den Zugriff.

Lambda greift mithilfe einer Hyperplane ENI auf Ressourcen in Ihrer VPC zu. Hyperplane ENIs bieten NAT-Funktionen von der Lambda-VPC über VPC-zu-VPC (V2N) zu Ihrer Konto-VPC. V2N bietet Konnektivität von der Lambda-VPC zu Ihrer Konto-VPC, jedoch nicht in die andere Richtung.

Wenn Sie eine Lambda-Funktion erstellen (oder ihre VPC-Einstellungen aktualisieren), weist Lambda für jedes Subnetz in der VPC-Konfiguration Ihrer Funktion eine Hyperplane ENI zu. Mehrere Lambda-Funktionen können eine Netzwerkschnittstelle gemeinsam nutzen, wenn die Funktionen dasselbe Subnetz und dieselbe Sicherheitsgruppe verwenden.

Um eine Verbindung zu einem anderen AWS Dienst herzustellen, können Sie VPC-Endpunkte für die private Kommunikation zwischen Ihrer VPC und unterstützten Diensten verwenden. AWS Ein alternativer Ansatz besteht darin, ausgehenden Datenverkehr mithilfe eines NAT-Gateways an einen anderen Dienst weiterzuleiten. AWS

Um Ihrer Funktion Zugriff auf das Internet zu gewähren, leiten Sie ausgehenden Datenverkehr an ein NAT-Gateway in einem öffentlichen Subnetz weiter. Das NAT-Gateway verfügt über eine öffentliche IP-Adresse und kann sich über das Internet-Gateway der VPC mit dem Internet verbinden. Weitere Informationen finden Sie unter Aktivieren Sie den Internetzugang für mit VPN verbundene Lambda-Funktionen.

Gemeinsam genutzte Subnetze

VPC Sharing ermöglicht es mehreren AWS Konten, ihre Anwendungsressourcen, wie Amazon EC2 EC2-Instances und Lambda-Funktionen, in gemeinsam genutzten, zentral verwalteten Virtual Private Clouds (VPCs) zu erstellen. In diesem Modell teilt sich das Konto, dem die VPC gehört (Eigentümer), ein oder mehrere Subnetze mit anderen Konten (Teilnehmern), die derselben AWS Organisation angehören.

Für den Zugriff auf private Ressourcen verbinden Sie Ihre Funktion einem privaten freigegebenen Subnetz in Ihrer VPC. Der Subnetzeigentümer muss ein Subnetz für Sie freigeben, bevor Sie eine Funktion damit verbinden können. Der Subnetzbesitzer kann die gemeinsame Nutzung des Subnetzes auch zu einem späteren Zeitpunkt aufheben, wodurch die Konnektivität entfernt wird. Einzelheiten zum Freigeben, Aufheben der Freigabe und Verwalten von VPC-Ressourcen in freigegebenen Subnetzen finden Sie unter Freigeben Ihrer VPC für andere Konten im Amazon-VPC-Leitfaden.

Lambda Hyperplane ENIs

Die Hyperplane ENI ist eine verwaltete Netzwerkressource, die der Lambda-Service erstellt und verwaltet. Mehrere Ausführungsumgebungen in der Lambda-VPC können eine Hyperplane ENI verwenden, um sicher auf Ressourcen innerhalb von VPCs in Ihrem Konto zuzugreifen. Hyperplane ENIs bieten NAT-Funktionen von der Lambda-VPC Ihrer Konto-VPC.

Für jedes Subnetz erstellt Lambda eine Netzwerkschnittstelle für jeden eindeutigen Satz von Sicherheitsgruppen. Funktionen im Konto, die dieselbe Kombination aus Sicherheitsgruppe und Subnetz haben, verwenden dieselben Netzwerkschnittstellen. Über die folgenden Hyperplane-Ebene hergestellte Verbindungen werden automatisch nachverfolgt, auch wenn die Konfiguration der Sicherheitsgruppe keine Nachverfolgung erfordert. Eingehende Pakete von der VPC, die keinen eingerichteten Verbindungen entsprechen, werden auf der Hyperplane-Ebene verworfen. Weitere Informationen finden Sie unter Sicherheitsgruppen und Verfolgung von Verbindungen im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

Da die Funktionen in Ihrem Konto die ENI-Ressourcen teilen, ist der ENI-Lebenszyklus komplexer als andere Lambda-Ressourcen. In den folgenden Abschnitten wird der ENI-Lebenszyklus beschrieben.

Erstellen von ENIs

Lambda kann Hyperplane-ENI-Ressourcen für eine neu erstellte VPC-basierte Funktion oder für eine VPC-Konfigurationsänderung an einer vorhandenen Funktion erstellen. Die Funktion bleibt ausstehend, während Lambda die erforderlichen Ressourcen erstellt. Wenn die Hyperplane ENI bereit ist, wechselt die Funktion in den aktiven Status und die ENI steht zur Verwendung zur Verfügung. Lambda kann mehrere Minuten benötigen, um eine Hyperplane ENI zu erstellen.

Bei einer neu erstellten VPC-basierten Funktion schlagen alle Aufrufe oder andere API-Aktionen fehl, die mit der Funktion ausgeführt werden, bis der Funktionsstatus zu „Aktiv“ wechselt.

Für eine VPC-Konfigurationsänderung an einer vorhandenen Funktion verwenden alle Funktionsaufrufe weiterhin die Hyperplane ENI, die mit der alten Subnetz- und Sicherheitsgruppenkonfiguration verknüpft ist, bis der Funktionsstatus zu „Aktiv“ wechselt.

Wenn eine Lambda-Funktion 30 Tage lang inaktiv bleibt, ruft Lambda die unbenutzten Hyperplane-ENIs zurück und setzt den Funktionsstatus auf Inaktiv. Der nächste Aufruf bewirkt, dass Lambda die Funktion im Leerlauf wieder aktiviert. Der Aufruf schlägt fehl und die Funktion wechselt in den Status „Ausstehend“, bis Lambda die Erstellung oder Zuweisung einer Hyperplane ENI abgeschlossen hat.

Weitere Informationen zu Funktionszuständen finden Sie unter Lambda-Funktionszustände.

Verwalten von ENIs

Lambda verwendet Berechtigungen in der Ausführungsrolle Ihrer Funktion, um Netzwerkschnittstellen zu erstellen und zu verwalten. Lambda erstellt eine Hyperplane ENI, wenn Sie eine eindeutige Kombination aus Subnetz und Sicherheitsgruppe für eine VPC-basierte Funktion in einem Konto definieren. Lambda verwendet Hyperplane ENI für andere VPC-basierte Funktionen in Ihrem Konto, die dieselbe Kombination aus Subnetz und Sicherheitsgruppe verwenden.

Es gibt kein Kontingent für die Anzahl der Lambda-Funktionen, die dieselbe Hyperplane ENI verwenden können. Jede Hyperplane ENI unterstützt jedoch bis zu 65.000 Verbindungen/Ports. Wenn die Anzahl der Verbindungen 65.000 überschreitet, erstellt Lambda eine neue Hyperplane ENI, um zusätzliche Verbindungen bereitzustellen.

Wenn Sie Ihre Funktionskonfiguration aktualisieren, um auf eine andere VPC zuzugreifen, trennt Lambda die Verbindung zur Hyperplane ENI in der vorherigen VPC. Der Vorgang zum Aktualisieren der Verbindung zu einer neuen VPC kann mehrere Minuten dauern. Während dieser Zeit verwenden Aufrufe der Funktion weiterhin die vorherige VPC. Nachdem das Update abgeschlossen ist, verwenden neue Aufrufe die Hyperplane ENI in der neuen VPC. Zu diesem Zeitpunkt ist die Lambda-Funktion nicht mehr mit der vorherigen VPC verbunden.

Löschen von ENIs

Wenn Sie eine Funktion aktualisieren, um ihre VPC-Konfiguration zu entfernen, benötigt Lambda bis zu 20 Minuten, um die angehängte Hyperplane ENI zu löschen. Lambda löscht die ENI nur, wenn keine andere Funktion (oder veröffentlichte Funktionsversion) diese Hyperplane ENI verwendet.

Lambda verwendet Berechtigungen in der Ausführungsrolle der Funktion, um die Hyperplane ENI zu löschen. Wenn Sie die Ausführungsrolle löschen, bevor Lambda die Hyperplane ENI löscht, kann Lambda die Hyperplane ENI nicht löschen. Sie können den Löschvorgang manuell durchführen.

Lambda löscht keine Netzwerkschnittstellen, die von Funktionen oder Funktionsversionen in Ihrem Konto verwendet werden. Mit dem Lambda-ENI-Finder können Sie Funktionen oder Funktionsversionen identifizieren, die eine Hyperplane ENI verwenden. Für alle Funktionen oder Funktionsversionen, die Sie nicht mehr benötigen, können Sie die VPC-Konfiguration entfernen, damit Lambda die Hyperplane ENI löscht.

Verbindungen

Lambda unterstützt zwei Arten von Verbindungen: TCP (Transmission Control Protocol) und UDP (User Datagram Protocol).

Wenn Sie eine VPC erstellen, erstellt Lambda automatisch eine DHCP-Optionsliste und ordnet sie der VPC zu. Sie können Ihre eigene DHCP-Optionliste für Ihre VPC konfigurieren. Weitere Informationen finden Sie unter DHCP-Optionen der Amazon VPC.

Amazon stellt einen DNS-Server (den Amazon Route 53 Resolver) für Ihre VPC zur Verfügung. Weitere Informationen finden Sie unter DNS-Support für Ihre VPC.

IPv6-Support

Lambda unterstützt eingehende Verbindungen zu den öffentlichen Dual-Stack-Endpunkten von Lambda und ausgehende Verbindungen zu Dual-Stack-VPC-Subnetzen über IPv6.

Eingehend

Verwenden Sie die öffentlichen Dual-Stack-Endpunkte von Lambda, um Ihre Funktion über IPv6 aufzurufen. Dual-Stack-Endpunkte unterstützen sowohl IPv4 als auch IPv6. Lambda-Dual-Stack-Endpunkte verwenden die folgende Syntax:

protocol://lambda.us-east-1.api.aws

Sie können auch Lambda-Funktions-URLs verwenden, um Funktionen über IPv6 aufzurufen. Funktions-URL-Endpunkte haben das folgende Format:

https://url-id.lambda-url.us-east-1.on.aws
Ausgehend

Ihre Funktion kann über IPv6 eine Verbindung zu Ressourcen in Dual-Stack-VPC-Subnetzen herstellen. Diese Option ist standardmäßig deaktiviert. Um ausgehenden IPv6-Verkehr zuzulassen, verwenden Sie die Konsole oder die Option mit der Create-Funktion oder dem Befehl. --vpc-config Ipv6AllowedForDualStack=trueupdate-function-configuration

Anmerkung

Um ausgehenden IPv6-Verkehr in einer VPC zuzulassen, müssen alle Subnetze, die mit der Funktion verbunden sind, Dual-Stack-Subnetze sein. Lambda unterstützt keine ausgehenden IPv6-Verbindungen für reine IPv6-Subnetze in einer VPC, ausgehende IPv6-Verbindungen für Funktionen, die nicht mit einer VPC verbunden sind, oder eingehende IPv6-Verbindungen mit VPC-Endpunkten (AWS PrivateLink).

Sie können Ihren Funktionscode aktualisieren, um explizit eine Verbindung zu Subnetzressourcen über IPv6 herzustellen. Das folgende Python-Beispiel öffnet einen Socket und stellt eine Verbindung zu einem IPv6-Server her.

Beispiel — Verbindung zum IPv6-Server herstellen
def connect_to_server(event, context): server_address = event['host'] server_port = event['port'] message = event['message'] run_connect_to_server(server_address, server_port, message) def run_connect_to_server(server_address, server_port, message): sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM, 0) try: # Send data sock.connect((server_address, int(server_port), 0, 0)) sock.sendall(message.encode()) BUFF_SIZE = 4096 data = b'' while True: segment = sock.recv(BUFF_SIZE) data += segment # Either 0 or end of data if len(segment) < BUFF_SIZE: break return data finally: sock.close()

Sicherheit

AWS bietet Sicherheitsgruppen und Netzwerk-ACLs, um die Sicherheit in Ihrer VPC zu erhöhen. Sicherheitsgruppen kontrollieren eingehenden und ausgehenden Verkehr für Ihre Ressourcen, Netzwerk-ACLs kontrollieren eingehenden und ausgehenden Zugriff für Ihre Subnetze. Sicherheitsgruppen bieten ausreichend Zugriffskontrolle für die meisten Subnetze. Sie können Netzwerk-ACLs verwenden, wenn Sie eine zusätzliche Sicherheitsebene für Ihre VPC benötigen. Weitere Informationen finden Sie unter Richtlinie für den Datenverkehr zwischen Netzwerken in Amazon VPC. Jedem Subnetz, das Sie erstellen, wird automatisch die standardmäßige Netzwerk-ACL der VPC zugeordnet. Sie können die Zuordnung und die Inhalte der standardmäßigen Netzwerk-ACL ändern.

Weitere bewährte Methoden für die Sicherheit finden Sie unter Bewährte Methoden für VPC-Sicherheit. Weitere Informationen darüber, wie Sie IAM für die Verwaltung des Zugriffs auf die Lambda-API und Ressourcen verwenden können, finden Sie unter AWS Lambda -Berechtigungen.

Sie können Lambda-spezifische Bedingungsschlüssel für VPC-Einstellungen verwenden, um zusätzliche Berechtigungssteuerungen für Ihre Lambda-Funktionen bereitzustellen. Weitere Informationen zu VPC-Bedingungsschlüsseln finden Sie unter Verwenden von IAM-Bedingungsschlüsseln für VPC-Einstellungen.

Anmerkung

Lambda-Funktionen können über das öffentliche Internet oder über AWS PrivateLink-Endpunkte aufgerufen werden. Auf Ihre Funktions-URLs können Sie nur über das öffentliche Internet zugreifen. Lambda-Funktionen unterstützen zwar AWS PrivateLink, Funktions-URLs jedoch nicht.

Beobachtbarkeit

Mit VPC-Flow-Protokollen können Sie Informationen zum IP-Datenverkehr zu und von Netzwerkschnittstellen in Ihrer VPC erfassen. Sie können Flow-Protokolldaten in Amazon CloudWatch Logs oder Amazon S3 veröffentlichen. Nachdem Sie ein Flow-Protokoll erstellt haben, können Sie die darin enthaltenen Daten abrufen und an dem gewählten Ziel anzeigen.

Hinweis: Wenn Sie eine Funktion an eine VPC anhängen, verwenden die CloudWatch Protokollnachrichten nicht die VPC-Routen. Lambda sendet sie mit dem regulären Routing für Protokolle.