Thema von Amazon Managed Streaming for Apache Kafka als Quelle - Amazon EventBridge

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.

Thema von Amazon Managed Streaming for Apache Kafka als Quelle

Sie können EventBridge Pipes verwenden, um Datensätze von einem Amazon Managed Streaming for Apache Kafka (Amazon MSK) -Thema zu empfangen. Sie können diese Datensätze optional filtern oder optimieren, bevor Sie sie zur Verarbeitung an eines der verfügbaren Ziele senden. Es gibt Amazon MSK-spezifische Einstellungen, die Sie beim Einrichten einer Pipe auswählen können. EventBridge Pipes behält die Reihenfolge der Datensätze des Message Brokers bei, wenn diese Daten an das Ziel gesendet werden.

Amazon MSK ist ein vollständig verwalteter Service, mit dem Sie Anwendungen erstellen und ausführen können, die Apache Kafka zur Verarbeitung von Streaming-Daten nutzen. Amazon MSK vereinfacht die Einrichtung, Skalierung und Verwaltung von Clustern, auf denen Apache Kafka ausgeführt wird. Mit Amazon MSK können Sie Ihre Anwendung für mehrere Availability Zones und für die Sicherheit mit AWS Identity and Access Management (IAM) konfigurieren. Amazon MSK unterstützt mehrere Open-Source-Versionen von Kafka.

Amazon MSK als Quelle funktioniert ähnlich wie die Verwendung von Amazon Simple Queue Service (Amazon SQS) oder Amazon Kinesis. EventBridgefragt intern nach neuen Nachrichten von der Quelle ab und ruft dann synchron das Ziel auf. EventBridge liest die Nachrichten stapelweise und stellt sie Ihrer Funktion als Event-Payload zur Verfügung. Die maximale Batchgröße ist konfigurierbar. (Der Standardwert beträgt 100 Nachrichten.)

EventBridge Unterstützt bei Quellen, die auf Apache Kafka basieren, die Verarbeitung von Steuerungsparametern wie Stapelverarbeitungsfenstern und Batchgröße.

EventBridge liest die Nachrichten sequentiell für jede Partition. Nach der EventBridge Verarbeitung jedes Batches werden die Offsets der Nachrichten in diesem Batch festgeschrieben. Wenn das Ziel der Pipe für eine der Nachrichten in einem Stapel einen Fehler zurückgibt, EventBridge wird der gesamte Nachrichtenstapel wiederholt, bis die Verarbeitung erfolgreich ist oder die Nachrichten ablaufen.

EventBridge sendet den Nachrichtenstapel für das Ereignis, wenn es das Ziel aufruft. Die Ereignisnutzlast enthält ein Array von Meldungen. Jedes Array-Element enthält Details zum Amazon-MSK-Thema und zur Partitions-ID sowie einen Zeitstempel und eine base64-codierte Nachricht.

Beispielereignisse

Das folgende Beispielereignis zeigt die Informationen, die von der Pipe empfangen werden. Sie können dieses Ereignis verwenden, um Ihre Ereignismuster zu erstellen und zu filtern oder um die Eingabetransformation zu definieren. Nicht alle Felder können gefiltert werden. Weitere Informationen darüber, welche Felder Sie filtern können, finden Sie unter Filterung durch Amazon EventBridge Pipes.

[ { "eventSource": "aws:kafka", "eventSourceArn": "arn:aws:kafka:sa-east-1:123456789012:cluster/vpc-2priv-2pub/751d2973-a626-431c-9d4e-d7975eb44dd7-2", "eventSourceKey": "mytopic-0", "topic": "mytopic", "partition": "0", "offset": 15, "timestamp": 1545084650987, "timestampType": "CREATE_TIME", "key":"abcDEFghiJKLmnoPQRstuVWXyz1234==", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers": [ { "headerKey": [ 104, 101, 97, 100, 101, 114, 86, 97, 108, 117, 101 ] } ] } ]

Abfrage und Startposition des Streams

Beachten Sie, dass die Stream-Quellenabfrage bei der Pipe-Erstellung und -Aktualisierung letztendlich konsistent ist.

  • Bei der Pipe-Erstellung kann es mehrere Minuten dauern, bis mit der Abfrage von Ereignissen aus dem Stream begonnen wird.

  • Bei Pipe-Aktualisierungen der Quellenabfragekonfiguration kann es mehrere Minuten dauern, bis die Abfrage von Ereignissen aus dem Stream gestoppt und neu gestartet wird.

Dies bedeutet, dass, wenn Sie LATEST als Startposition für den Stream angeben, die Pipe möglicherweise Ereignisse übersehen könnte, die bei der Pipe-Erstellung oder -Aktualisierung gesendet werden. Um sicherzustellen, dass keine Ereignisse übersehen werden, geben Sie die Stream-Startposition als TRIM_HORIZON an.

MSK-Cluster-Authentifizierung

EventBridge benötigt die Erlaubnis, auf den Amazon MSK-Cluster zuzugreifen, Datensätze abzurufen und andere Aufgaben auszuführen. Amazon MSK unterstützt mehrere Optionen zur Steuerung des Client-Zugriffs auf den MSK-Cluster. Weitere Informationen darüber, welche Authentifizierungsmethode wann verwendet wird, finden Sie unter Wie wählt man EventBridge einen Bootstrap-Broker.

Nicht authentifizierter Zugriff

Wir empfehlen, für die Entwicklung nur nicht authentifizierten Zugriff zu verwenden. Ein nicht authentifizierter Zugriff funktioniert nur, wenn die rollenbasierte IAM-Authentifizierung für den Cluster deaktiviert ist.

SASL/SCRAM-Authentifizierung

Amazon MSK unterstützt die Authentifizierung mit Transport Layer Security (TLS)-Verschlüsselung von Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM). EventBridge Um eine Verbindung zum Cluster herzustellen, speichern Sie die Authentifizierungsdaten (Anmeldedaten) geheim. AWS Secrets Manager

Weitere Informationen zur Verwendung von Secrets Manager finden Sie unter Benutzername und Passwortauthentifizierung mit AWS Secrets Manager im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

Amazon MSK unterstützt die SASL/PLAIN-Authentifizierung nicht.

Auf IAM-Rolle basierende Authentifizierung

Sie können IAM verwenden, um die Identität von Clients zu authentifizieren, die sich mit dem MSK-Cluster verbinden. Wenn die IAM-Authentifizierung auf Ihrem MSK-Cluster aktiv ist und Sie kein Geheimnis für die Authentifizierung angeben, EventBridge wird standardmäßig die IAM-Authentifizierung verwendet. Verwenden Sie die IAM-Konsole oder API, um Richtlinien zu erstellen und zu implementieren, die auf IAM-Benutzern oder -Rollen basieren. Weitere Informationen finden Sie unter IAM-Zugriffskontrolle im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

Damit Sie eine Verbindung EventBridge zum MSK-Cluster herstellen, Datensätze lesen und andere erforderliche Aktionen ausführen können, fügen Sie der Ausführungsrolle Ihrer Pipes die folgenden Berechtigungen hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kafka-cluster:Connect", "kafka-cluster:DescribeGroup", "kafka-cluster:AlterGroup", "kafka-cluster:DescribeTopic", "kafka-cluster:ReadData", "kafka-cluster:DescribeClusterDynamicConfiguration" ], "Resource": [ "arn:aws:kafka:region:account-id:cluster/cluster-name/cluster-uuid", "arn:aws:kafka:region:account-id:topic/cluster-name/cluster-uuid/topic-name", "arn:aws:kafka:region:account-id:group/cluster-name/cluster-uuid/consumer-group-id" ] } ] }

Sie können diese Berechtigungen für einen bestimmten Cluster, ein bestimmtes Thema und eine bestimmte Gruppe einteilen. Weitere Informationen finden Sie unter Amazon-MSK-Kafka-Aktionen im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

Gegenseitige TLS-Authentifizierung

Gegenseitige TLS (mTLS) bietet eine bidirektionale Authentifizierung zwischen Client und Server. Der Client sendet ein Zertifikat an den Server, damit der Server den Client überprüfen kann, und der Server sendet ein Zertifikat an den Client, damit der Client den Server überprüfen kann.

Fungiert für Amazon EventBridge MSK als Client. Sie konfigurieren ein Client-Zertifikat (als Secret in Secrets Manager), um sich EventBridge bei den Brokern in Ihrem MSK-Cluster zu authentifizieren. Das Clientzertifikat muss von einer Zertifizierungsstelle (CA) im Trust Store des Servers signiert sein. Der MSK-Cluster sendet ein Serverzertifikat an, mit dem EventBridge die Broker authentifiziert werden. EventBridge Das Serverzertifikat muss von einer Zertifizierungsstelle signiert sein, die sich im AWS Trust Store befindet.

Amazon MSK unterstützt keine selbstsignierten Serverzertifikate, da alle Broker in Amazon MSK öffentliche Zertifikate verwenden, die von Amazon Trust Services-Zertifizierungsstellen signiert wurden, die standardmäßig EventBridge vertrauen.

Weitere Informationen über mTLS für Amazon MSK finden Sie unter Gegenseitige TLS-Authentifizierung im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.

Konfigurieren des mTLS-Secrets

Das Secret CLIENT_CERTIFICATE_TLS_AUTH erfordert ein Zertifikatfeld und ein Feld für einen privaten Schlüssel. Für einen verschlüsselten privaten Schlüssel erfordert das Secret ein Passwort für den privaten Schlüssel. Sowohl das Zertifikat als auch der private Schlüssel müssen im PEM-Format vorliegen.

Anmerkung

EventBridge unterstützt die Verschlüsselungsalgorithmen mit privaten Schlüsseln von PBES1 (aber nicht von PBES2).

Das Zertifikatfeld muss eine Liste von Zertifikaten enthalten, beginnend mit dem Client-Zertifikat, gefolgt von etwaigen Zwischenzertifikaten und endend mit dem Root-Zertifikat. Jedes Zertifikat muss in einer neuen Zeile mit der folgenden Struktur beginnen:

-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----

Secrets Manager unterstützt Secrets von bis zu 65 536 Bytes, was genügend Platz für lange Zertifikatsketten bietet.

Der private Schlüssel muss im Format PKCS #8 mit folgender Struktur vorliegen:

-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----

Verwenden Sie für einen verschlüsselten privaten Schlüssel die folgende Struktur:

-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----

Im folgenden Beispiel sehen Sie den Inhalt eines Secrets für mTLS-Authentifizierung mit einem verschlüsselten privaten Schlüssel. Fügen Sie für einen verschlüsselten privaten Schlüssel das Passwort für den privaten Schlüssel in das Secret ein.

{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }

Wie wählt man EventBridge einen Bootstrap-Broker

EventBridge wählt einen Bootstrap-Broker auf der Grundlage der in Ihrem Cluster verfügbaren Authentifizierungsmethoden aus und legt fest, ob Sie ein Geheimnis für die Authentifizierung angeben. Wenn Sie ein Geheimnis für mTLS oder SASL/SCRAM angeben, wählt EventBridge automatisch diese Authentifizierungsmethode aus. Wenn Sie kein Geheimnis angeben, EventBridge wählt die stärkste Authentifizierungsmethode, die auf Ihrem Cluster aktiv ist. Im Folgenden finden Sie die Reihenfolge der Priorität, in der ein Broker EventBridge ausgewählt wird, von der stärksten zur schwächsten Authentifizierung:

  • mTLS (Geheimnis für mTLS bereitgestellt)

  • SASL/SCRAM (Geheimnis für SASL/SCRAM bereitgestellt)

  • SASL IAM (kein Secret angegeben und IAM-Authentifizierung ist aktiv)

  • Nicht authentifiziertes TLS (kein Secret angegeben und IAM-Authentifizierung ist nicht aktiv)

  • Klartext (kein Secret angegeben und sowohl IAM-Authentifizierung als auch nicht authentifiziertes TLS sind nicht aktiv)

Anmerkung

Wenn keine Verbindung mit dem sichersten Brokertyp hergestellt werden EventBridge kann, wird nicht versucht, eine Verbindung zu einem anderen (schwächeren) Brokertyp herzustellen. Wenn Sie einen schwächeren Brokertyp wählen möchten EventBridge , deaktivieren Sie alle stärkeren Authentifizierungsmethoden in Ihrem Cluster.

Netzwerkkonfiguration

EventBridge muss Zugriff auf die Amazon Virtual Private Cloud (Amazon VPC) -Ressourcen haben, die mit Ihrem Amazon MSK-Cluster verknüpft sind.

  • Um auf die VPC Ihres Amazon MSK-Clusters zuzugreifen, EventBridge können Sie den ausgehenden Internetzugang für die Subnetze Ihrer Quelle verwenden. Für öffentliche Subnetze muss es sich um ein verwaltetes NAT-Gateway handeln. Für private Subnetze kann es sich um ein NAT-Gateway oder Ihr eigenes NAT handeln. Stellen Sie sicher, dass das NAT über eine öffentliche IP-Adresse verfügt und sich mit dem Internet verbinden kann.

  • EventBridge Pipes unterstützt auch die Übertragung von Ereignissen über AWS PrivateLink, sodass Sie Ereignisse von einer Ereignisquelle, die sich in an Amazon Virtual Private Cloud (Amazon VPC) befindet, an ein Pipes-Ziel senden können, ohne das öffentliche Internet zu nutzen. Sie können Pipes für Abfragen von Amazon Managed Streaming for Apache Kafka (Amazon MSK), selbstverwaltetem Apache Kafka und Amazon MQ Quellen verwenden, die sich in einem privaten Subnetz befinden, ohne dass Sie ein Internet-Gateway einrichten, Firewallregeln konfigurieren oder Proxyserver einrichten müssen.

    Informationen zum Einrichten eines VPC-Endpunkts finden Sie unter Erstellen eines VPC-Endpunkts im AWS PrivateLink Benutzerhandbuch. Wählen Sie als Dienstnamen aus. com.amazonaws.region.pipes-data

Konfigurieren Sie Ihre Amazon-VPC-Sicherheitsgruppen (mindestens) mit den folgenden Regeln:

  • Regeln für eingehenden Datenverkehr — Lassen Sie den gesamten Verkehr auf dem Amazon MSK-Broker-Port für die für Ihre Quelle angegebenen Sicherheitsgruppen zu.

  • Ausgehende Regeln - Erlauben Sie allen Datenverkehr auf Port 443 für alle Ziele. Lassen Sie den gesamten Verkehr auf dem Amazon MSK-Broker-Port für die für Ihre Quelle angegebenen Sicherheitsgruppen zu.

    Zu den Broker-Ports gehören:

    • 9092 für Klartext

    • 9094 für TLS

    • 9096 für SASL

    • 9098 für IAM

Anmerkung

Ihre Amazon-VPC-Konfiguration ist über die Amazon MSK API erkennbar. Sie müssen sie während der Einrichtung nicht konfigurieren.

Anpassbare Konsumentengruppen-ID

Wenn Sie Apache Kafka als Quelle einrichten, können Sie eine Konsumentengruppen-ID angeben. Diese Konsumentengruppen-ID ist eine vorhandene Kennung für die Apache-Kafka-Konsumentengruppe, der Ihre Pipe beitreten soll. Sie können diese Funktion verwenden, um alle laufenden Einstellungen für die Verarbeitung von Apache Kafka-Datensätzen von anderen Benutzern zu migrieren. EventBridge

Wenn Sie eine Konsumentengruppen-ID angeben und sie innerhalb dieser Konsumentengruppe weitere aktive Poller gibt, verteilt Apache Kafka Nachrichten an alle Konsumenten. Mit anderen Worten, empfängt EventBridge nicht alle Nachrichten zum Apache Kafka-Thema. Wenn Sie alle Nachrichten im Thema bearbeiten EventBridge möchten, schalten Sie alle anderen Poller in dieser Nutzergruppe aus.

Wenn Sie außerdem eine Nutzergruppen-ID angeben und Apache Kafka eine gültige bestehende Nutzergruppe mit derselben ID findet, EventBridge ignoriert Apache Kafka den StartingPosition Parameter für Ihre Pipe. EventBridge Beginnt stattdessen mit der Verarbeitung von Datensätzen entsprechend dem festgeschriebenen Offset der Nutzergruppe. Wenn Sie eine Nutzergruppen-ID angeben und Apache Kafka keine bestehende Nutzergruppe finden kann, EventBridge konfiguriert Apache Kafka Ihre Quelle mit der angegebenen. StartingPosition

Die Konsumentengruppen-ID, die Sie angeben, muss unter all Ihren Apache-Kafka-Ereignisquellen eindeutig sein. Nachdem Sie eine Pipe mit der angegebenen Konsumentengruppen-ID erstellt haben, können Sie diesen Wert nicht aktualisieren.

Auto Scaling der Amazon-MSK-Quelle

Wenn Sie zum ersten Mal eine Amazon MSK-Quelle erstellen, EventBridge weist sie einen Consumer zu, um alle Partitionen im Apache Kafka-Thema zu verarbeiten. Jeder Verbraucher hat mehrere Prozessoren, die parallel laufen, um erhöhte Workloads zu bewältigen. Darüber hinaus EventBridge wird die Anzahl der Verbraucher je nach Arbeitslast automatisch nach oben oder unten skaliert. Um die Nachrichtenreihenfolge in jeder Partition beizubehalten, ist die maximale Anzahl von Verbrauchern pro Partition im Thema ein Verbraucher pro Partition.

In Intervallen von einer Minute EventBridge wird die Consumer-Offset-Verzögerung aller Partitionen im Thema ausgewertet. Wenn die Verzögerung zu hoch ist, empfängt die Partition Nachrichten schneller, als sie verarbeiten EventBridge kann. EventBridge Fügt bei Bedarf Benutzer zum Thema hinzu oder entfernt sie aus dem Thema. Der Skalierungsprozess zum Hinzufügen oder Entfernen von Verbrauchern erfolgt innerhalb von drei Minuten nach der Bewertung.

Wenn Ihr Ziel überlastet ist, wird die Anzahl der Verbraucher EventBridge reduziert. Diese Aktion reduziert den Workload für die Pipe, indem die Anzahl der Nachrichten reduziert wird, die Verbraucher abrufen und an die Pipe senden können.