Konfiguration Ihres Amazon MSK-Clusters und Ihres Amazon VPC-Netzwerks für Lambda - 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.

Konfiguration Ihres Amazon MSK-Clusters und Ihres Amazon VPC-Netzwerks für Lambda

Um Ihre AWS Lambda Funktion mit Ihrem Amazon MSK-Cluster zu verbinden, müssen Sie Ihren Cluster und die Amazon Virtual Private Cloud (VPC), in der er sich befindet, korrekt konfigurieren. Auf dieser Seite wird beschrieben, wie Sie Ihren Cluster und Ihre VPC konfigurieren. Wenn Ihr Cluster und Ihre VPC bereits ordnungsgemäß konfiguriert sind, finden Sie weitere Informationen unter Konfigurieren von Amazon MSK-Ereignisquellen für Lambda So konfigurieren Sie die Zuordnung der Ereignisquellen.

Überblick über die Netzwerkkonfigurationsanforderungen für Lambda- und MSK-Integrationen

Die für eine Lambda- und MSK-Integration erforderliche Netzwerkkonfiguration hängt von der Netzwerkarchitektur Ihrer Anwendung ab. An dieser Integration sind drei Hauptressourcen beteiligt: der Amazon MSK-Cluster, die Lambda-Funktion und die Zuordnung der Lambda-Ereignisquellen. Jede dieser Ressourcen befindet sich in einer anderen VPC:

  • Ihr Amazon MSK-Cluster befindet sich normalerweise in einem privaten Subnetz einer VPC, die Sie verwalten.

  • Ihre Lambda-Funktion befindet sich in einer AWS verwalteten VPC, die Lambda gehört.

  • Ihre Lambda-Ereignisquellenzuordnung befindet sich in einer anderen von Lambda AWS verwalteten VPC, getrennt von der VPC, die Ihre Funktion enthält.

Die Ereignisquellenzuordnung ist die Zwischenressource zwischen dem MSK-Cluster und der Lambda-Funktion. Die Zuordnung der Ereignisquellen hat zwei Hauptaufgaben. Zunächst fragt sie Ihren MSK-Cluster nach neuen Nachrichten ab. Dann ruft es Ihre Lambda-Funktion mit diesen Nachrichten auf. Da sich diese drei Ressourcen unterscheiden VPCs, erfordern sowohl der Abruf- als auch der Aufrufvorgang VPC-übergreifende Netzwerkaufrufe.

Die Netzwerkkonfigurationsanforderungen für Ihre Ereignisquellenzuordnung hängen davon ab, ob der Bereitstellungsmodus oder der On-Demand-Modus verwendet wird, wie in der folgenden Abbildung dargestellt:

Vergleich von Netzwerkanrufen für den On-Demand-Modus und für den Bereitstellungsmodus (Kafka) ESMs

Die Art und Weise, wie die Lambda-Ereignisquellenzuordnung Ihren MSK-Cluster nach neuen Nachrichten abfragt, ist in beiden Modi dieselbe. Um eine Verbindung zwischen Ihrer Ereignisquellenzuordnung und Ihrem MSK-Cluster herzustellen, erstellt Lambda in Ihrem privaten Subnetz eine Hyperebenen-ENI (oder verwendet eine vorhandene, falls verfügbar), um eine sichere Verbindung herzustellen. Wie im Diagramm dargestellt, verwendet dieses Hyperplane-ENI die Subnetz- und Sicherheitsgruppenkonfiguration Ihres MSK-Clusters, nicht Ihre Lambda-Funktion.

Nachdem Sie die Nachricht vom Cluster abgerufen haben, ist die Art und Weise, wie Lambda Ihre Funktion aufruft, in jedem Modus unterschiedlich:

  • Im Bereitstellungsmodus verarbeitet Lambda automatisch die Verbindung zwischen der VPC für die Ereignisquellenzuweisung und der Funktions-VPC. Sie benötigen also keine zusätzlichen Netzwerkkomponenten, um Ihre Funktion erfolgreich aufzurufen.

  • Im On-Demand-Modus ruft Ihre Lambda-Ereignisquellenzuordnung Ihre Funktion über einen Pfad durch Ihre vom Kunden verwaltete VPC auf. Aus diesem Grund müssen Sie entweder ein NAT-Gateway im öffentlichen Subnetz Ihrer VPC oder AWS PrivateLinkEndpoints im privaten Subnetz der VPC konfigurieren, die Zugriff auf Lambda AWS Security Token Service (STS) bieten, und optional. AWS Secrets Manager Die korrekte Konfiguration einer dieser Optionen ermöglicht eine Verbindung zwischen Ihrer VPC und der von Lambda verwalteten Runtime-VPC, die zum Aufrufen Ihrer Funktion erforderlich ist.

Ein NAT-Gateway ermöglicht Ressourcen in Ihrem privaten Subnetz den Zugriff auf das öffentliche Internet. Wenn Sie diese Konfiguration verwenden, durchquert Ihr Datenverkehr das Internet, bevor die Lambda-Funktion aufgerufen wird. AWS PrivateLink Endpunkte ermöglichen es privaten Subnetzen, sich sicher mit AWS Diensten oder anderen privaten VPC-Ressourcen zu verbinden, ohne das öffentliche Internet zu durchqueren. Einzelheiten Konfiguration von AWS PrivateLink Endpunkten für eine MSK-Ereignisquelle zur Konfiguration eines NAT-Gateways für eine MSK-Ereignisquelle Konfiguration dieser Ressourcen finden Sie unter oder.

Bisher gingen wir davon aus, dass sich Ihr MSK-Cluster in einem privaten Subnetz innerhalb Ihrer VPC befindet, was der häufigste Fall ist. Selbst wenn sich Ihr MSK-Cluster in einem öffentlichen Subnetz innerhalb Ihrer VPC befindet, müssen Sie AWS PrivateLink Endpoints konfigurieren, um eine sichere Verbindung zu ermöglichen. In der folgenden Tabelle sind die Anforderungen an die Netzwerkkonfiguration zusammengefasst, je nachdem, wie Sie Ihren MSK-Cluster und die Zuordnung der Lambda-Ereignisquellen konfigurieren:

Standort des MSK-Clusters (in der vom Kunden verwalteten VPC) Skalierungsmodus für die Zuordnung von Lambda-Ereignisquellen Erforderliche Netzwerkkonfiguration

Privates Subnetz

On-Demand-Modus

NAT-Gateway (im öffentlichen Subnetz Ihrer VPC) oder AWS PrivateLink Endpoints (im privaten Subnetz Ihrer VPC), um den Zugriff auf Lambda und optional auf Secrets Manager zu ermöglichen. AWS STS

Öffentliches Subnetz

On-Demand-Modus

AWS PrivateLink Endpunkte (im öffentlichen Subnetz Ihrer VPC), um den Zugriff auf Lambda und optional auf Secrets AWS STS Manager zu ermöglichen.

Privates Subnetz

Modus bereitgestellter Kapazität

Keine

Öffentliches Subnetz

Modus bereitgestellter Kapazität

Keine

Darüber hinaus müssen die mit Ihrem MSK-Cluster verknüpften Sicherheitsgruppen den Datenverkehr über die richtigen Ports zulassen. Stellen Sie sicher, dass Sie die folgenden Sicherheitsgruppenregeln konfiguriert haben:

  • Regeln für eingehenden Datenverkehr — Lassen Sie den gesamten Datenverkehr auf dem Standard-Broker-Port zu. Der Port, den MSK verwendet, hängt von der Art der Authentifizierung auf dem Cluster ab: 9098 für die IAM-Authentifizierung, für SASL/SCRAM und 9096 für TLS. 9094 Alternativ können Sie eine selbstreferenzierende Sicherheitsgruppenregel verwenden, um den Zugriff von Instanzen innerhalb derselben Sicherheitsgruppe aus zuzulassen.

  • Regeln für ausgehenden Datenverkehr — Erlauben Sie den gesamten Datenverkehr über 443 den Port für externe Ziele, wenn Ihre Funktion mit anderen Diensten kommunizieren muss. AWS Alternativ können Sie eine selbstreferenzierende Sicherheitsgruppenregel verwenden, um den Zugriff auf den Broker einzuschränken, wenn Sie nicht mit anderen Diensten kommunizieren müssen. AWS

  • Regeln für eingehenden Amazon VPC-Endpunkt — Wenn Sie einen Amazon VPC-Endpunkt verwenden, muss die dem Endpunkt zugeordnete Sicherheitsgruppe eingehenden Datenverkehr über den Port 443 von der Sicherheitsgruppe des Clusters zulassen.

Konfiguration eines NAT-Gateways für eine MSK-Ereignisquelle

Sie können ein NAT-Gateway so konfigurieren, dass Ihre Ereignisquellenzuordnung Nachrichten von Ihrem Cluster abfragen und die Funktion über einen Pfad durch Ihre VPC aufrufen kann. Dies ist nur erforderlich, wenn Ihre Ereignisquellenzuordnung den On-Demand-Modus verwendet und sich Ihr Cluster in einem privaten Subnetz Ihrer VPC befindet. Wenn sich Ihr Cluster in einem öffentlichen Subnetz Ihrer VPC befindet oder Ihre Ereignisquellenzuordnung den Bereitstellungsmodus verwendet, müssen Sie kein NAT-Gateway konfigurieren.

Ein NAT-Gateway ermöglicht Ressourcen in einem privaten Subnetz den Zugriff auf das öffentliche Internet. Wenn Sie eine private Verbindung zu Lambda benötigen, finden Sie Konfiguration von AWS PrivateLink Endpunkten für eine MSK-Ereignisquelle stattdessen weitere Informationen unter.

Nachdem Sie Ihr NAT-Gateway konfiguriert haben, müssen Sie die entsprechenden Routing-Tabellen konfigurieren. Dadurch kann der Datenverkehr aus Ihrem privaten Subnetz über das NAT-Gateway in das öffentliche Internet geleitet werden.

Diagramm einer vom Kunden verwalteten VPC, die ein NAT-Gateway verwendet, um den Verkehr vom privaten Subnetz zum öffentlichen Internet weiterzuleiten.

Die folgenden Schritte führen Sie durch die Konfiguration eines NAT-Gateways mithilfe der Konsole. Wiederholen Sie diese Schritte nach Bedarf für jede Availability Zone (AZ).

So konfigurieren Sie ein NAT-Gateway und das richtige Routing (Konsole)
  1. Folgen Sie den Schritten unter Erstellen eines NAT-Gateways und beachten Sie dabei Folgendes:

    • NAT-Gateways sollten sich immer in einem öffentlichen Subnetz befinden. Erstellen Sie NAT-Gateways mit öffentlicher Konnektivität.

    • Wenn Ihr MSK-Cluster über mehrere repliziert wird AZs, erstellen Sie ein NAT-Gateway pro AZ. In jeder AZ sollte Ihre VPC beispielsweise ein privates Subnetz mit Ihrem Cluster und ein öffentliches Subnetz mit Ihrem NAT-Gateway haben. Bei einem Setup mit drei haben Sie drei private Subnetze AZs, drei öffentliche Subnetze und drei NAT-Gateways.

  2. Nachdem Sie Ihr NAT-Gateway erstellt haben, öffnen Sie die Amazon VPC-Konsole und wählen Sie im linken Menü Route-Tabellen aus.

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

  4. Ordnen Sie diese Routentabelle der VPC zu, die Ihren MSK-Cluster enthält. Geben Sie optional einen Namen für Ihre Routing-Tabelle ein.

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

  6. Wählen Sie die Routing-Tabelle aus, die Sie gerade erstellt haben.

  7. Wählen Sie auf der Registerkarte Subnetzzuordnungen die Option Subnetzzuordnungen bearbeiten aus.

    • Ordnen Sie diese Routentabelle dem privaten Subnetz zu, das Ihren MSK-Cluster enthält.

  8. Wählen Sie Routen bearbeiten aus.

  9. Wählen Sie Route hinzufügen:

    1. Geben Sie für Ziel die Zeichenfolge 0.0.0.0/0 an.

    2. Wählen Sie für Target die Option NAT-Gateway aus.

    3. Wählen Sie im Suchfeld das NAT-Gateway aus, das Sie in Schritt 1 erstellt haben. Dies sollte das NAT-Gateway in derselben AZ sein wie das private Subnetz, das Ihren MSK-Cluster enthält (das private Subnetz, das Sie dieser Routentabelle in Schritt 6 zugeordnet haben).

  10. Wählen Sie Änderungen speichern aus.

Sie können AWS PrivateLink Endpoints so konfigurieren, dass sie Nachrichten von Ihrem Cluster abfragen, und die Funktion über einen Pfad durch Ihre VPC aufrufen. Diese Endpunkte sollten es Ihrem MSK-Cluster ermöglichen, auf Folgendes zuzugreifen:

Die Konfiguration von PrivateLink Endpunkten ist nur erforderlich, wenn Ihre Ereignisquellenzuordnung den On-Demand-Modus verwendet. Wenn Ihre Ereignisquellenzuordnung den Bereitstellungsmodus verwendet, richtet Lambda die erforderlichen Verbindungen für Sie ein.

PrivateLink Endpunkte ermöglichen einen sicheren, privaten Zugriff auf AWS Dienste über. AWS PrivateLink Informationen zur Konfiguration eines NAT-Gateways, das Ihrem MSK-Cluster Zugriff auf das öffentliche Internet gewährt, finden Sie alternativ unter. Konfiguration eines NAT-Gateways für eine MSK-Ereignisquelle

Nachdem Sie Ihre VPC-Endpoints konfiguriert haben, sollte Ihr MSK-Cluster direkten und privaten Zugriff auf Lambda, STS und optional Secrets Manager haben.

Diagramm einer vom Kunden verwalteten VPC, die AWS PrivateLink Endpunkte für den Zugriff auf Dienste verwendet. AWS

Die folgenden Schritte führen Sie durch die Konfiguration eines PrivateLink Endpunkts mithilfe der Konsole. Wiederholen Sie diese Schritte nach Bedarf für jeden Endpunkt (Lambda, STS, Secrets Manager).

So konfigurieren Sie PrivateLink VPC-Endpunkte (Konsole)
  1. Öffnen Sie die Amazon VPC-Konsole und wählen Sie im linken Menü Endpoints aus.

  2. Wählen Sie Endpunkt erstellen aus.

  3. Geben Sie optional einen Namen für Ihren Endpunkt ein.

  4. Wählen Sie für Typ die Option AWS Dienste aus.

  5. Beginnen Sie unter Dienste mit der Eingabe des Namens des Dienstes. Um beispielsweise einen Endpunkt für die Verbindung mit Lambda zu erstellen, geben Sie lambda in das Suchfeld ein.

  6. In den Ergebnissen sollten Sie den Service-Endpunkt in der aktuellen Region sehen. In der Region USA Ost (Nord-Virginia) sollte beispielsweise Folgendes angezeigt com.amazonaws.us-east-2.lambda werden: Wählen Sie diesen Dienst aus.

  7. Wählen Sie unter Netzwerkeinstellungen die VPC aus, die Ihren MSK-Cluster enthält.

  8. Wählen Sie unter Subnetze die aus, in der AZs sich Ihr MSK-Cluster befindet.

    • Wählen Sie für jede AZ unter Subnetz-ID das private Subnetz aus, das Ihren MSK-Cluster enthält.

  9. Wählen Sie unter Sicherheitsgruppen die Sicherheitsgruppen aus, die Ihrem MSK-Cluster zugeordnet sind.

  10. Wählen Sie Endpunkt erstellen aus.

Standardmäßig verfügen Amazon VPC-Endpunkte über offene IAM-Richtlinien, die einen umfassenden Zugriff auf Ressourcen ermöglichen. Es empfiehlt sich, diese Richtlinien auf die Durchführung der erforderlichen Aktionen über diesen Endpunkt zu beschränken. Für Ihren Secrets Manager Manager-Endpunkt können Sie beispielsweise dessen Richtlinie so ändern, dass nur die Ausführungsrolle Ihrer Funktion auf das Geheimnis zugreifen kann.

Beispiel VPC-Endpunktrichtlinie — Secrets Manager Manager-Endpunkt
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws::iam::123456789012:role/my-role" ] }, "Resource": "arn:aws::secretsmanager:us-west-2:123456789012:secret:my-secret" } ] }

Für die AWS STS und Lambda-Endpunkte können Sie den aufrufenden Principal auf den Lambda-Serviceprinzipal beschränken. Stellen Sie jedoch sicher, dass Sie diese Richtlinien verwenden"Resource": "*".

Beispiel VPC-Endpunktrichtlinie — AWS STS Endpunkt
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Beispiel VPC-Endpunktrichtlinie — Lambda-Endpunkt
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }