Aktivieren Sie den Internetzugang für mit VPN verbundene Lambda-Funktionen - 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.

Aktivieren Sie den Internetzugang für mit VPN verbundene Lambda-Funktionen

Standardmäßig werden Lambda-Funktionen in einer von Lambda verwalteten VPC mit Internetzugang ausgeführt. Um auf Ressourcen in einer VPC in Ihrem Konto zuzugreifen, können Sie einer Funktion eine VPC-Konfiguration hinzufügen. Dadurch wird die Funktion auf Ressourcen innerhalb dieser VPC beschränkt, es sei denn, die VPC hat Internetzugang. Auf dieser Seite wird erklärt, wie Sie den Internetzugang für mit VPN verbundene Lambda-Funktionen bereitstellen.

Erstellen Sie die VPC

Der Workflow Create VPC erstellt alle VPC-Ressourcen, die für eine Lambda-Funktion für den Zugriff auf das öffentliche Internet von einem privaten Subnetz aus erforderlich sind, einschließlich Subnetzen, NAT-Gateways, Internet-Gateways und Routentabelleneinträgen.

So erstellen Sie die VPC
  1. Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie auf dem VPC-Dashboard VPC erstellen aus.

  3. Wählen Sie unter Zu erstellende Ressourcen die Option VPC und mehr aus.

  4. Konfigurieren Sie die VPC

    1. Geben Sie unter Name tag auto-generation (Automatische Generierung des Namens-Tags) einen Namen für die VPC ein.

    2. Behalten Sie für den IPv4-CIDR-Block entweder den Standardvorschlag bei oder geben Sie den für Ihre Anwendung oder Ihr Netzwerk erforderlichen CIDR-Block ein.

    3. Wenn die Anwendung über IPv6-Adressen kommuniziert, wählen Sie IPv6-CIDR-Block und Von Amazon bereitgestellter IPv6-CIDR-Block aus.

  5. Konfiguration der Subnetze

    1. Wählen Sie für Anzahl der Availability Zones 2 aus. Wir empfehlen mindestens zwei AZs für hohe Verfügbarkeit.

    2. Wählen Sie für Number of public subnets (Anzahl der öffentlichen Subnetze) 2 aus.

    3. Wählen Sie für Number of private subnets (Anzahl der privaten Subnetze) 2 aus.

    4. Sie können die standardmäßigen CIDR-Blöcke für die Subnetze beibehalten oder alternativ CIDR-Blöcke des Subnetzes anpassen erweitern und einen CIDR-Block eingeben. Weitere Informationen finden Sie unter Subnetz-CIDR-Blöcke.

  6. Wählen Sie für NAT-Gateways 1 pro AZ aus, um die Resilienz zu verbessern.

  7. Wählen Sie für ein Internet-Gateway nur für ausgehenden Datenverkehr die Option Ja aus, wenn Sie sich dafür entschieden haben, einen IPv6-CIDR-Block einzubeziehen.

  8. Behalten Sie für VPC-Endpoints die Standardeinstellung (S3-Gateway) bei. Für diese Option fallen keine Kosten an. Weitere Informationen finden Sie unter Typen von VPC-Endpunkten für Amazon S3.

  9. Behalten Sie für DNS-Optionen die Standardeinstellungen bei.

  10. Wählen Sie VPC erstellen aus.

Konfigurieren der Lambda-Funktion

So konfigurieren Sie eine VPC bei der Funktionserstellung
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie Create function (Funktion erstellen).

  3. Geben Sie unter Basic information (Grundlegende Informationen) bei Function name (Funktionsname) einen Namen für Ihre Funktion ein.

  4. Erweiterten Sie Advanced settings (Erweiterte Einstellungen).

  5. Wählen Sie VPC aktivieren und wählen Sie dann eine VPC aus.

  6. (Optional) Um ausgehenden IPv6-Verkehr zuzulassen, wählen Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) aus.

  7. Wählen Sie für Subnetze alle privaten Subnetze aus. Die privaten Subnetze können über das NAT-Gateway auf das Internet zugreifen. Wenn eine Funktion mit einem öffentlichen Subnetz verbunden wird, erhält sie keinen Internetzugang.

    Anmerkung

    Wenn Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) ausgewählt haben, müssen alle ausgewählten Subnetze einen IPv4-CIDR-Block und einen IPv6-CIDR-Block besitzen.

  8. Wählen Sie unter Sicherheitsgruppen eine Sicherheitsgruppe aus, die ausgehenden Datenverkehr zulässt.

  9. Wählen Sie Funktion erstellen.

Lambda erstellt automatisch eine Ausführungsrolle mit der AWSLambdaVPCAccessExecutionRole AWS verwalteten Richtlinie. Die Berechtigungen in dieser Richtlinie sind nur erforderlich, um elastische Netzwerkschnittstellen für die VPC-Konfiguration zu erstellen, nicht aber, um Ihre Funktion aufzurufen. Um Berechtigungen mit den geringsten Rechten anzuwenden, können Sie die AWSLambdaVPCAccessExecutionRoleRichtlinie aus Ihrer Ausführungsrolle entfernen, nachdem Sie die Funktion und die VPC-Konfiguration erstellt haben. Weitere Informationen finden Sie unter Erforderliche IAM-Berechtigungen.

So konfigurieren Sie eine VPC für eine vorhandene Funktion

Um einer vorhandenen Funktion eine VPC-Konfiguration hinzuzufügen, muss die Ausführungsrolle der Funktion über die Berechtigung verfügen, elastische Netzwerkschnittstellen zu erstellen und zu verwalten. Die AWSLambdaVPCAccessExecutionRole AWS verwaltete Richtlinie umfasst die erforderlichen Berechtigungen. Um Berechtigungen mit den geringsten Rechten anzuwenden, können Sie die AWSLambdaVPCAccessExecutionRoleRichtlinie aus Ihrer Ausführungsrolle entfernen, nachdem Sie die VPC-Konfiguration erstellt haben.

  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie die Registerkarte Konfiguration und dann VPC aus.

  4. Wählen Sie unter VPC die Option Edit (Bearbeiten) aus.

  5. Wählen Sie die VPC aus.

  6. (Optional) Um ausgehenden IPv6-Verkehr zuzulassen, wählen Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) aus.

  7. Wählen Sie für Subnetze alle privaten Subnetze aus. Die privaten Subnetze können über das NAT-Gateway auf das Internet zugreifen. Wenn eine Funktion mit einem öffentlichen Subnetz verbunden wird, erhält sie keinen Internetzugang.

    Anmerkung

    Wenn Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) ausgewählt haben, müssen alle ausgewählten Subnetze einen IPv4-CIDR-Block und einen IPv6-CIDR-Block besitzen.

  8. Wählen Sie unter Sicherheitsgruppen eine Sicherheitsgruppe aus, die ausgehenden Datenverkehr zulässt.

  9. Wählen Sie Speichern.

Testen der Funktion

Verwenden Sie den folgenden Beispielcode, um zu bestätigen, dass Ihre VPC-verbundene Funktion das öffentliche Internet erreichen kann. Bei Erfolg gibt der Code einen 200 Statuscode zurück. Wenn dies nicht erfolgreich ist, wird das Zeitlimit für die Funktion überschritten.

Node.js

In diesem Beispiel wird verwendetfetch, was in nodejs18.x und späteren Laufzeiten verfügbar ist.

  1. Fügen Sie im Bereich Codequelle der Lambda-Konsole den folgenden Code in die Datei index.mjs ein. Die Funktion sendet eine HTTP-GET-Anfrage an einen öffentlichen Endpunkt und gibt den HTTP-Antwortcode zurück, um zu testen, ob die Funktion Zugriff auf das öffentliche Internet hat.

    Code-Editor für die Lambda-Konsole.
    Beispiel — HTTP-Anfrage mit async/await
    const url = "https://aws.amazon.com/"; export const handler = async(event) => { try { // fetch is available with Node.js 18 and later runtimes const res = await fetch(url); console.info("status", res.status); return res.status; } catch (e) { console.error(e); return 500; } };
  2. Wählen Sie Bereitstellen.

  3. Wählen Sie die Registerkarte Test.

    Registerkarte „Test“ der Lambda-Konsole.
  4. Wählen Sie Test aus.

  5. Die Funktion gibt einen 200 Statuscode zurück. Das bedeutet, dass die Funktion über einen ausgehenden Internetzugang verfügt.

    Registerkarte „Test“ der Lambda-Konsole.

    Wenn die Funktion das öffentliche Internet nicht erreichen kann, erhalten Sie eine Fehlermeldung wie diese:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }
Python
  1. Fügen Sie im Bereich Codequelle der Lambda-Konsole den folgenden Code in die Datei lambda_function.py ein. Die Funktion sendet eine HTTP-GET-Anfrage an einen öffentlichen Endpunkt und gibt den HTTP-Antwortcode zurück, um zu testen, ob die Funktion Zugriff auf das öffentliche Internet hat.

    Code-Editor für die Lambda-Konsole.
    import urllib.request def lambda_handler(event, context): try: response = urllib.request.urlopen('https://aws.amazon.com') status_code = response.getcode() print('Response Code:', status_code) return status_code except Exception as e: print('Error:', e) raise e
  2. Wählen Sie Bereitstellen.

  3. Wählen Sie die Registerkarte Test.

    Registerkarte „Test“ der Lambda-Konsole.
  4. Wählen Sie Test aus.

  5. Die Funktion gibt einen 200 Statuscode zurück. Das bedeutet, dass die Funktion über einen ausgehenden Internetzugang verfügt.

    Registerkarte „Test“ der Lambda-Konsole.

    Wenn die Funktion das öffentliche Internet nicht erreichen kann, erhalten Sie eine Fehlermeldung wie diese:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }

Wenn Sie bereits über eine VPC verfügen, aber den öffentlichen Internetzugang für eine Lambda-Funktion konfigurieren müssen, gehen Sie wie folgt vor. Bei diesem Verfahren wird davon ausgegangen, dass Ihre VPC über mindestens zwei Subnetze verfügt. Wenn Sie nicht über zwei Subnetze verfügen, finden Sie weitere Informationen unter Erstellen eines Subnetzes im Amazon VPC-Benutzerhandbuch.

Überprüfen Sie die Konfiguration der Routing-Tabelle

  1. Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie die VPC-ID.

    VPC-Konsolenliste der VPCs.
  3. Scrollen Sie nach unten zum Abschnitt Ressourcenübersicht. Beachten Sie die Zuordnungen der Routentabellen. Öffnen Sie jede Routing-Tabelle, die einem Subnetz zugeordnet ist.

    Abschnitt zur Ressourcenübersicht der VPC-Konsole
  4. Scrollen Sie nach unten zur Registerkarte Routen. Überprüfen Sie die Routen, um festzustellen, ob eine der folgenden Bedingungen zutrifft. Jede dieser Anforderungen muss durch eine separate Routentabelle erfüllt werden.

    • Internetdatenverkehr (0.0.0.0/0für IPv4, ::/0 für IPv6) wird an ein Internet-Gateway () weitergeleitet. igw-xxxxxxxxxx Das bedeutet, dass das der Routing-Tabelle zugeordnete Subnetz ein öffentliches Subnetz ist.

      Anmerkung

      Wenn Ihr Subnetz keinen IPv6-CIDR-Block hat, wird Ihnen nur die IPv4-Route () angezeigt. 0.0.0.0/0

      Beispiel öffentliche Subnetz-Routentabelle
      Routingtabelle für öffentliche Subnetze mit Route zum Internet-Gateway
    • Internetgebundener Datenverkehr für IPv4 (0.0.0.0/0) wird an ein NAT-Gateway (nat-xxxxxxxxxx) weitergeleitet, das einem öffentlichen Subnetz zugeordnet ist. Das bedeutet, dass das Subnetz ein privates Subnetz ist, das über das NAT-Gateway auf das Internet zugreifen kann.

      Anmerkung

      Wenn Ihr Subnetz über einen IPv6-CIDR-Block verfügt, muss die Routing-Tabelle auch internetgebundenen IPv6-Verkehr () an ein Internet-Gateway (::/0) weiterleiten, das nur für ausgehenden Datenverkehr bestimmt ist. eigw-xxxxxxxxxx Wenn Ihr Subnetz keinen IPv6-CIDR-Block hat, wird Ihnen nur die IPv4-Route () angezeigt. 0.0.0.0/0

      Beispiel private Subnetz-Routentabelle
      Routingtabelle für private Subnetze mit Route zum NAT-Gateway
  5. Wiederholen Sie den vorherigen Schritt, bis Sie alle Routing-Tabellen überprüft haben, die einem Subnetz in Ihrer VPC zugeordnet sind, und bestätigt haben, dass Sie über eine Routentabelle mit einem Internet-Gateway und eine Routing-Tabelle mit einem NAT-Gateway verfügen.

    Wenn Sie nicht über zwei Routing-Tabellen verfügen, eine mit einer Route zu einem Internet-Gateway und eine mit einer Route zu einem NAT-Gateway, gehen Sie wie folgt vor, um die fehlenden Ressourcen und Routing-Tabelleneinträge zu erstellen.

Gehen Sie wie folgt vor, um eine Routing-Tabelle zu erstellen und sie einem Subnetz zuzuordnen.

Um eine benutzerdefinierte Routing-Tabelle mit der Amazon VPC-Konsole zu erstellen
  1. Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich Route Tables (Routing-Tabellen) aus.

  3. Klicken Sie auf Create Route Table (Routing-Tabelle erstellen).

  4. (Optional) Geben Sie bei Name einen Namen für Ihre Routing-Tabelle ein.

  5. Wählen Sie unter VPC Ihre VPC aus.

  6. (Optional) Sie fügen ein Tag hinzu, indem Sie Add new tag (Neuen Tag hinzufügen) auswählen und den Tag-Schlüssel und -Wert eingeben.

  7. Klicken Sie auf Create Route Table (Routing-Tabelle erstellen).

  8. Wählen Sie auf der Registerkarte Subnet associations (Subnetzzuordnungen) die Option Edit subnet associations (Subnetzzuordnungen bearbeiten) aus.

    Internet-Gateway an VPC anhängen
  9. Aktivieren Sie das Kontrollkästchen für das Subnetz, um es der Routing-Tabelle zuzuordnen.

  10. Klicken Sie auf Save associations (Zuordnungen speichern).

Gehen Sie wie folgt vor, um ein Internet-Gateway zu erstellen, es an Ihre VPC anzuhängen und es der Routing-Tabelle Ihres öffentlichen Subnetzes hinzuzufügen.

So erstellen Sie ein Internet-Gateway
  1. Öffnen Sie die Amazon-VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsbereich Internet Gateways (Internet-Gateways) aus.

  3. Wählen Sie Create internet gateway (Internet-Gateway erstellen) aus.

  4. (Optional) Geben Sie einen Namen für Ihr Internet-Gateway ein.

  5. (Optional) Um ein Tag hinzuzufügen, wählen Sie Add new tag (Neuen Tag hinzufügen) aus und geben Sie den Schlüssel und den Wert für den Tag ein.

  6. Wählen Sie Create internet gateway (Internet-Gateway erstellen) aus.

  7. Wählen Sie im Banner oben auf dem Bildschirm die Option An eine VPC anhängen, wählen Sie eine verfügbare VPC aus und wählen Sie dann Internet-Gateway anhängen aus.

    Internet-Gateway an VPC anhängen
  8. Wählen Sie die VPC-ID.

    Seite mit den Details zum Internet-Gateway
  9. Wählen Sie erneut die VPC-ID aus, um die VPC-Detailseite zu öffnen.

    Gefilterte VPC-Liste
  10. Scrollen Sie nach unten zum Abschnitt Ressourcenübersicht und wählen Sie dann ein Subnetz aus. Die Subnetzdetails werden auf einer neuen Registerkarte angezeigt.

    Ressourcenübersicht der VPC-Konsole mit Liste der Subnetze.
  11. Wählen Sie den Link unter Routentabelle aus.

    Link zur Routing-Tabelle auf der Seite mit den Subnetzdetails
  12. Wählen Sie die Routentabellen-ID, um die Detailseite der Routentabelle zu öffnen.

    Liste der gefilterten Routentabellen
  13. Wählen Sie unter Routen die Option Routen bearbeiten aus.

    Routenliste mit der Schaltfläche „Routen bearbeiten“
  14. Wählen Sie Route hinzufügen und geben Sie sie dann 0.0.0.0/0 in das Feld Ziel ein.

    Ziel für neue Route hinzufügen
  15. Wählen Sie für Target Internet-Gateway und dann das Internet-Gateway aus, das Sie zuvor erstellt haben. Wenn Ihr Subnetz über einen IPv6-CIDR-Block verfügt, müssen Sie auch eine Route für dasselbe ::/0 Internet-Gateway hinzufügen.

    Ziel für eine neue Route hinzufügen
  16. Wählen Sie Änderungen speichern aus.

Gehen Sie wie folgt vor, um ein NAT-Gateway zu erstellen, es einem öffentlichen Subnetz zuzuordnen und es dann der Routing-Tabelle Ihres privaten Subnetzes hinzuzufügen.

Um ein NAT-Gateway zu erstellen und es einem öffentlichen Subnetz zuzuordnen
  1. Klicken Sie im Navigationsbereich auf NAT-Gateways.

  2. Wählen Sie NAT-Gateway erstellen aus.

  3. (Optional) Geben Sie einen Namen für Ihr NAT-Gateway ein.

  4. Wählen Sie für Subnetz ein öffentliches Subnetz in Ihrer VPC aus. (Ein öffentliches Subnetz ist ein Subnetz, dessen Routing-Tabelle eine direkte Route zu einem Internet-Gateway enthält.)

    Anmerkung

    NAT-Gateways sind einem öffentlichen Subnetz zugeordnet, aber der Routing-Tabelleneintrag befindet sich im privaten Subnetz.

  5. Wählen Sie als Elastic IP Allocation ID eine Elastic IP Address oder Allocate Elastic IP aus.

  6. Wählen Sie NAT-Gateway erstellen aus.

Um eine Route zum NAT-Gateway in der Routing-Tabelle des privaten Subnetzes hinzuzufügen
  1. Wählen Sie im Navigationsbereich Subnetze aus.

  2. Wählen Sie ein privates Subnetz in Ihrer VPC aus. (Ein privates Subnetz ist ein Subnetz, dessen Routing-Tabelle keine Route zu einem Internet-Gateway enthält.)

  3. Wählen Sie den Link unter Routentabelle aus.

    Link zur Routing-Tabelle auf der Seite mit den Subnetzdetails
  4. Scrollen Sie nach unten und wählen Sie die Registerkarte Routen und anschließend Routen bearbeiten

    Registerkarte „Routen“ auf der Detailseite der Routentabelle
  5. Wählen Sie Route hinzufügen und geben Sie sie dann 0.0.0.0/0 in das Feld Ziel ein.

    Ziel für neue Route hinzufügen
  6. Wählen Sie für Target NAT-Gateway und dann das NAT-Gateway aus, das Sie zuvor erstellt haben.

    Ziel für neue Route hinzufügen
  7. Wählen Sie Änderungen speichern aus.

Gehen Sie wie folgt vor, um ein Internet-Gateway nur für ausgehenden Datenverkehr zu erstellen und es der Routing-Tabelle Ihres privaten Subnetzes hinzuzufügen.

So erstellen Sie ein Internet-Gateway nur für ausgehenden Verkehr
  1. Wählen Sie im Navigationsbereich Internet-Gateways für ausgehenden Datenverkehr.

  2. Klicken Sie auf Internet-Gateway für ausgehenden Datenverkehr erstellen.

  3. (Optional) Geben Sie einen Namen ein.

  4. Wählen Sie die VPC aus, in der Sie das Internet-Gateway für ausgehenden Verkehr erstellen möchten.

  5. Klicken Sie auf Internet-Gateway für ausgehenden Datenverkehr erstellen.

  6. Wählen Sie den Link unter Angehängte VPC-ID aus.

    Detailseite für Internet-Gateways nur für ausgehenden Datenverkehr
  7. Wählen Sie den Link unter VPC-ID, um die VPC-Detailseite zu öffnen.

  8. Scrollen Sie nach unten zum Abschnitt Ressourcenübersicht und wählen Sie dann ein privates Subnetz aus. Die Subnetzdetails werden auf einer neuen Registerkarte angezeigt.

    Ressourcenübersicht der VPC-Konsole mit Liste der Subnetze.
  9. Wählen Sie den Link unter Routentabelle aus.

    Link zur Routing-Tabelle auf der Seite mit den Subnetzdetails
  10. Wählen Sie die Routentabellen-ID, um die Detailseite der Routentabelle zu öffnen.

    Liste der gefilterten Routentabellen
  11. Wählen Sie unter Routen die Option Routen bearbeiten aus.

    Routenliste mit der Schaltfläche „Routen bearbeiten“
  12. Wählen Sie Route hinzufügen und geben Sie sie dann ::/0 in das Feld Ziel ein.

    Ziel für neue Route hinzufügen
  13. Wählen Sie für Target die Option Internet Gateway Only Egress Only und dann das Gateway aus, das Sie zuvor erstellt haben.

    Ziel für neue Route hinzufügen
  14. Wählen Sie Änderungen speichern aus.

Konfigurieren der Lambda-Funktion

So konfigurieren Sie eine VPC bei der Funktionserstellung
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie Create function (Funktion erstellen).

  3. Geben Sie unter Basic information (Grundlegende Informationen) bei Function name (Funktionsname) einen Namen für Ihre Funktion ein.

  4. Erweiterten Sie Advanced settings (Erweiterte Einstellungen).

  5. Wählen Sie VPC aktivieren und wählen Sie dann eine VPC aus.

  6. (Optional) Um ausgehenden IPv6-Verkehr zuzulassen, wählen Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) aus.

  7. Wählen Sie für Subnetze alle privaten Subnetze aus. Die privaten Subnetze können über das NAT-Gateway auf das Internet zugreifen. Wenn eine Funktion mit einem öffentlichen Subnetz verbunden wird, erhält sie keinen Internetzugang.

    Anmerkung

    Wenn Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) ausgewählt haben, müssen alle ausgewählten Subnetze einen IPv4-CIDR-Block und einen IPv6-CIDR-Block besitzen.

  8. Wählen Sie unter Sicherheitsgruppen eine Sicherheitsgruppe aus, die ausgehenden Datenverkehr zulässt.

  9. Wählen Sie Funktion erstellen.

Lambda erstellt automatisch eine Ausführungsrolle mit der AWSLambdaVPCAccessExecutionRole AWS verwalteten Richtlinie. Die Berechtigungen in dieser Richtlinie sind nur erforderlich, um elastische Netzwerkschnittstellen für die VPC-Konfiguration zu erstellen, nicht aber, um Ihre Funktion aufzurufen. Um Berechtigungen mit den geringsten Rechten anzuwenden, können Sie die AWSLambdaVPCAccessExecutionRoleRichtlinie aus Ihrer Ausführungsrolle entfernen, nachdem Sie die Funktion und die VPC-Konfiguration erstellt haben. Weitere Informationen finden Sie unter Erforderliche IAM-Berechtigungen.

So konfigurieren Sie eine VPC für eine vorhandene Funktion

Um einer vorhandenen Funktion eine VPC-Konfiguration hinzuzufügen, muss die Ausführungsrolle der Funktion über die Berechtigung verfügen, elastische Netzwerkschnittstellen zu erstellen und zu verwalten. Die AWSLambdaVPCAccessExecutionRole AWS verwaltete Richtlinie umfasst die erforderlichen Berechtigungen. Um Berechtigungen mit den geringsten Rechten anzuwenden, können Sie die AWSLambdaVPCAccessExecutionRoleRichtlinie aus Ihrer Ausführungsrolle entfernen, nachdem Sie die VPC-Konfiguration erstellt haben.

  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie die Registerkarte Konfiguration und dann VPC aus.

  4. Wählen Sie unter VPC die Option Edit (Bearbeiten) aus.

  5. Wählen Sie die VPC aus.

  6. (Optional) Um ausgehenden IPv6-Verkehr zuzulassen, wählen Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) aus.

  7. Wählen Sie für Subnetze alle privaten Subnetze aus. Die privaten Subnetze können über das NAT-Gateway auf das Internet zugreifen. Wenn eine Funktion mit einem öffentlichen Subnetz verbunden wird, erhält sie keinen Internetzugang.

    Anmerkung

    Wenn Sie Allow IPv6 traffic for dual-stack subnets (IPv6-Verkehr für Dual-Stack-Subnetze zulassen) ausgewählt haben, müssen alle ausgewählten Subnetze einen IPv4-CIDR-Block und einen IPv6-CIDR-Block besitzen.

  8. Wählen Sie unter Sicherheitsgruppen eine Sicherheitsgruppe aus, die ausgehenden Datenverkehr zulässt.

  9. Wählen Sie Speichern.

Testen der Funktion

Verwenden Sie den folgenden Beispielcode, um zu bestätigen, dass Ihre VPC-verbundene Funktion das öffentliche Internet erreichen kann. Bei Erfolg gibt der Code einen 200 Statuscode zurück. Wenn dies nicht erfolgreich ist, wird das Zeitlimit für die Funktion überschritten.

Node.js

In diesem Beispiel wird verwendetfetch, was in nodejs18.x und späteren Laufzeiten verfügbar ist.

  1. Fügen Sie im Bereich Codequelle der Lambda-Konsole den folgenden Code in die Datei index.mjs ein. Die Funktion sendet eine HTTP-GET-Anfrage an einen öffentlichen Endpunkt und gibt den HTTP-Antwortcode zurück, um zu testen, ob die Funktion Zugriff auf das öffentliche Internet hat.

    Code-Editor für die Lambda-Konsole.
    Beispiel — HTTP-Anfrage mit async/await
    const url = "https://aws.amazon.com/"; export const handler = async(event) => { try { // fetch is available with Node.js 18 and later runtimes const res = await fetch(url); console.info("status", res.status); return res.status; } catch (e) { console.error(e); return 500; } };
  2. Wählen Sie Bereitstellen.

  3. Wählen Sie die Registerkarte Test.

    Registerkarte „Test“ der Lambda-Konsole.
  4. Wählen Sie Test aus.

  5. Die Funktion gibt einen 200 Statuscode zurück. Das bedeutet, dass die Funktion über einen ausgehenden Internetzugang verfügt.

    Registerkarte „Test“ der Lambda-Konsole.

    Wenn die Funktion das öffentliche Internet nicht erreichen kann, erhalten Sie eine Fehlermeldung wie diese:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }
Python
  1. Fügen Sie im Bereich Codequelle der Lambda-Konsole den folgenden Code in die Datei lambda_function.py ein. Die Funktion sendet eine HTTP-GET-Anfrage an einen öffentlichen Endpunkt und gibt den HTTP-Antwortcode zurück, um zu testen, ob die Funktion Zugriff auf das öffentliche Internet hat.

    Code-Editor für die Lambda-Konsole.
    import urllib.request def lambda_handler(event, context): try: response = urllib.request.urlopen('https://aws.amazon.com') status_code = response.getcode() print('Response Code:', status_code) return status_code except Exception as e: print('Error:', e) raise e
  2. Wählen Sie Bereitstellen.

  3. Wählen Sie die Registerkarte Test.

    Registerkarte „Test“ der Lambda-Konsole.
  4. Wählen Sie Test aus.

  5. Die Funktion gibt einen 200 Statuscode zurück. Das bedeutet, dass die Funktion über einen ausgehenden Internetzugang verfügt.

    Registerkarte „Test“ der Lambda-Konsole.

    Wenn die Funktion das öffentliche Internet nicht erreichen kann, erhalten Sie eine Fehlermeldung wie diese:

    { "errorMessage": "2024-04-11T17:22:20.857Z abe12jlc-640a-8157-0249-9be825c2y110 Task timed out after 3.01 seconds" }