Verarbeiten Amazon MQ MQ-Nachrichten mit 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.

Verarbeiten Amazon MQ MQ-Nachrichten mit Lambda

Netzwerkzugriff konfigurieren

Um Lambda über Ihre Ereignisquellenzuordnung vollen Zugriff auf Ihren Broker zu gewähren, muss Ihr Broker entweder einen öffentlichen Endpunkt (öffentliche IP-Adresse) verwenden oder Sie müssen Zugriff auf das Amazon gewähren, in dem VPC Sie den Broker erstellt haben.

Bei der Erstellung eines Amazon-MQ-Brokers wird das Flag PubliclyAccessible standardmäßig auf „false“ festgelegt. Damit Ihr Broker eine öffentliche IP-Adresse erhält, muss das Flag PubliclyAccessible auf „true“ festgelegt werden.

Eine bewährte Methode für die Verwendung von Amazon MQ mit Lambda besteht darin, AWS PrivateLink VPCEndpunkte zu verwenden und Ihrer Lambda-Funktion Zugriff auf die Ihres Brokers zu gewähren. VPC Stellen Sie einen Endpunkt für Lambda und, nur für ActiveMQ, einen Endpunkt für AWS Security Token Service () bereit.AWS STS Wenn Ihr Broker Authentifizierung verwendet, stellen Sie auch einen Endpunkt für bereit. AWS Secrets Manager Weitere Informationen hierzu finden Sie unter VPCAmazon-Endpunkte einrichten.

Alternativ können Sie in jedem öffentlichen Subnetz, das Ihren Amazon VPC MQ-Broker enthält, ein NAT Gateway konfigurieren. Weitere Informationen finden Sie unter Aktivieren Sie den Internetzugang für VPC verbundene Lambda-Funktionen.

Wenn Sie eine Ereignisquellenzuordnung für einen Amazon MQ-Broker erstellen, prüft Lambda, ob Elastic Network Interfaces (ENIs) bereits für die Subnetze und Sicherheitsgruppen Ihres Brokers vorhanden sind. VPC Wenn Lambda feststellt, dass sie vorhanden ENIs sind, versucht es, sie wiederzuverwenden. Andernfalls erstellt Lambda neue, ENIs um eine Verbindung zur Ereignisquelle herzustellen und Ihre Funktion aufzurufen.

Anmerkung

Lambda-Funktionen werden immer intern ausgeführt, die dem Lambda-Dienst VPCs gehören. Diese VPCs werden automatisch vom Dienst verwaltet und sind für Kunden nicht sichtbar. Sie können Ihre Funktion auch mit einem Amazon verbindenVPC. In beiden Fällen hat die VPC Konfiguration Ihrer Funktion keinen Einfluss auf die Zuordnung der Ereignisquelle. Nur die Konfiguration der Ereignisquellen VPC bestimmt, wie Lambda eine Verbindung zu Ihrer Ereignisquelle herstellt.

Konfigurieren Sie Sicherheitsgruppenregeln

Konfigurieren Sie die Sicherheitsgruppen für das Amazon, das Ihren Amazon MQ VPC enthält.

Anmerkung

Standardmäßig verwendet Amazon MQ für ActiveMQ den Port und Amazon MQ für 61617 RabbitMQ den Port. 5671

  • Regeln für eingehenden Datenverkehr — Erlauben Sie den gesamten Datenverkehr auf dem Broker-Port für die Sicherheitsgruppe, die mit Ihrer Ereignisquelle verknüpft ist, innerhalb der eigenen Sicherheitsgruppe.

  • Regeln für ausgehenden Datenverkehr — Erlauben Sie den gesamten Datenverkehr auf dem Port 443 für alle Ziele. Lässt den gesamten Verkehr auf dem Broker-Port innerhalb der eigenen Sicherheitsgruppe zu.

  • Regeln für eingehende VPC Amazon-Endgeräte — Lassen Sie für die Sicherheitsgruppe, die Ihrem VPC Amazon-Endpunkt zugeordnet ist, eingehenden Datenverkehr über den Port 443 von der Sicherheitsgruppe des Brokers zu

VPCAmazon-Endpunkte einrichten

Wenn Sie VPC Amazon-Endpunkte verwenden, AWS leitet Ihre API Aufrufe über das Elastic Network Interface () ENI des Endpunkts zum Aufrufen einer Funktion weiter. Der Lambda-Serviceprinzipal muss alle Funktionen aufrufenlambda:InvokeFunction, die diese ENIs verwenden. Darüber hinaus muss der Lambda-Serviceprinzipal für Amazon MQ for ActiveMQ Rollen ausführen, die sts:AssumeRole den verwenden. ENIs

Standardmäßig verfügen VPC Amazon-Endgeräte über offene IAM Richtlinien, die einen breiten Zugriff auf Ressourcen ermöglichen. Um Amazon MQ mit Lambda in der Produktion zu verwenden, können Sie diese Richtlinien so einschränken, dass nur bestimmte Prinzipale nur auf bestimmte Rollen und Funktionen zugreifen können.

Die folgenden VPC Beispiel-Endpunktrichtlinien zeigen, wie der erforderliche Zugriff für AWS STS und Lambda-Endpunkte gewährt wird.

Beispiel Endpunktrichtlinie — AWS STS Endpunkt (nur ActiveMQ)
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::iam::123456789012:role/my-role" } ] }
Beispiel Endpunktrichtlinie — Lambda-Endpunkt
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "arn:aws::lambda:us-west-2:123456789012:function:my-function" } ] }

Wenn Ihr Amazon MQ-Broker Authentifizierung verwendet, können Sie auch die Endpunktrichtlinie für den Secrets Manager Manager-Endpunkt einschränken. Um den Secrets Manager aufzurufenAPI, verwendet Lambda Ihre Funktionsrolle, nicht den Lambda-Serviceprinzipal. Das folgende Beispiel zeigt eine Secrets Manager Manager-Endpunktrichtlinie.

Beispiel VPCEndpunktrichtlinie — 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" } ] }
Warnung

Wenn Sie Ihre Endpunktrichtlinien so einschränken, dass sie nur API Anrufe zulassen, die innerhalb Ihrer Organisation stammen, verhindert, dass die Zuordnung der Ereignisquellen ordnungsgemäß funktioniert.

Erstellen Sie die Zuordnung der Ereignisquellen

Erstellen Sie ein Ereignisquellen-Zuweisung, um Lambda anzuweisen, Datensätze aus einem Amazon-MQ-Broker an eine Lambda-Funktion zu senden. Sie können mehrere Ereignisquellen-Zuweisungen erstellen, um gleiche Daten mit mehreren Funktionen oder Elemente aus mehreren Streams mit nur einer Funktion zu verarbeiten.

Um Ihre Funktion für das Lesen aus Amazon MQ zu konfigurieren, fügen Sie die erforderlichen Berechtigungen hinzu und erstellen Sie einen MQ-Trigger in der Lambda-Konsole.

Um Datensätze von einem Amazon MQ-Broker zu lesen, benötigt Ihre Lambda-Funktion die folgenden Berechtigungen. Sie gewähren Lambda die Erlaubnis, mit Ihrem Amazon MQ-Broker und den zugrunde liegenden Ressourcen zu interagieren, indem Sie Ihrer Funktionsausführungsrolle Berechtigungsanweisungen hinzufügen:

Anmerkung

Wenn Sie einen verschlüsselten, von Kunden verwalteten Schlüssel verwenden, fügen Sie auch die kms:Decrypt-Berechtigung hinzu.

Um Berechtigungen hinzuzufügen und einen Trigger zu erstellen
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen einer Funktion aus.

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

  4. Wählen Sie unter Rollenname den Link zu Ihrer Ausführungsrolle aus. Dieser Link öffnet die Rolle in der IAM Konsole.

    Link zur Ausführungsrolle
  5. Wählen Sie Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.

    Erstellen Sie eine Inline-Richtlinie in der IAM Konsole
  6. Wählen Sie im Richtlinien-Editor JSON. Geben Sie die folgende Richtlinie ein: Ihre Funktion benötigt diese Berechtigungen, um von einem Amazon MQ-Broker lesen zu können.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "mq:DescribeBroker", "secretsmanager:GetSecretValue", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
    Anmerkung

    Wenn Sie einen verschlüsselten, vom Kunden verwalteten Schlüssel verwenden, müssen Sie auch die kms:Decrypt Berechtigung hinzufügen.

  7. Wählen Sie Weiter. Geben Sie einen Richtliniennamen ein und wählen Sie dann Richtlinie erstellen aus.

  8. Kehren Sie zu Ihrer Funktion in der Lambda-Konsole zurück. Wählen Sie unter Function overview (Funktionsübersicht) die Option Add trigger (Trigger hinzufügen).

    Abschnitt „Funktionsübersicht“ der Lambda-Konsole
  9. Wählen Sie den MQ-Triggertyp.

  10. Konfigurieren Sie die erforderlichen Optionen und wählen Sie dann Add (Hinzufügen) aus.

Lambda unterstützt die folgenden Optionen für Amazon-MQ-Ereignisquellen.

  • MQ-Broker – Wählen Sie einen Amazon-MQ-Broker aus.

  • Batchgröße – Legen Sie die maximale Anzahl von Nachrichten fest, die in einem einzelnen Batch abgerufen werden sollen.

  • Name der Warteschlange – Geben Sie die zu konsumierende Amazon-MQ-Warteschlange ein.

  • Konfiguration des Zugriffs – Geben Sie die Informationen zum virtuellen Host und das Secrets Manager-Geheimnis ein, in dem Ihre Broker-Anmeldeinformationen gespeichert sind.

  • Auslöser aktivieren – Deaktivieren Sie den Auslöser, um die Verarbeitung von Datensätzen anzuhalten.

Um den Auslöser zu aktivieren oder zu deaktivieren (oder zu löschen), wählen Sie den MQ-Auslöser im Designer aus. Verwenden Sie die Operationen zur Zuordnung API der Ereignisquellen, um den Trigger neu zu konfigurieren.