Apache Kafka streamt 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.

Apache Kafka streamt als Quelle

Apache Kafka ist eine Open-Source-Event-Streaming-Plattform, die Workloads wie Datenpipelines und Streaming-Analysen unterstützt. Sie können Amazon Managed Streaming for Apache Kafka (Amazon MSK) oder einen selbstverwalteten Apache Kafka-Cluster verwenden. In der AWS Terminologie bezieht sich ein selbstverwalteter Cluster auf jeden Apache Kafka-Cluster, der nicht von gehostet wird. AWS Dazu gehören sowohl Cluster, die Sie selbst verwalten, als auch solche, die von einem Drittanbieter gehostet werden, z. B. Confluent CloudCloudKarafka, oder Redpanda.

Weitere Informationen zu anderen AWS Hosting-Optionen für Ihren Cluster finden Sie unter Best Practices for Running Apache Kafka AWS on im AWS Big Data-Blog.

Apache Kafka 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 sendet den Nachrichtenstapel im Event-Parameter, wenn es Ihre Pipe aufruft. Die Ereignisnutzlast enthält ein Array von Meldungen. Jedes Array-Element enthält Details zum Apache-Kafka-Thema und zur Apache-Kafka-Partitions-ID, zusammen mit einem Zeitstempel und einer base64-codierten 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": "SelfManagedKafka", "bootstrapServers": "b-2.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092,b-1.demo-cluster-1.a1bcde.c1.kafka.us-east-1.amazonaws.com:9092", "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 ] } ] } ]

Authentifizierung für Apache-Kafka-Cluster

EventBridge Pipes unterstützt mehrere Methoden zur Authentifizierung bei Ihrem selbst verwalteten Apache Kafka-Cluster. Stellen Sie sicher, dass Sie den Apache-Kafka-Cluster für die Verwendung einer der folgenden unterstützten Authentifizierungsmethoden konfigurieren. Weitere Informationen zur Sicherheit von Apache Kafka finden Sie unter Sicherheit in der Apache-Kafka-Dokumentation.

VPC-Zugriff

Wenn Sie eine selbstverwaltete Apache Kafka-Umgebung verwenden, in der nur Apache Kafka-Benutzer in Ihrer VPC Zugriff auf Ihre Apache Kafka-Broker haben, müssen Sie die Amazon Virtual Private Cloud (Amazon VPC) in der Apache Kafka-Quelle konfigurieren.

SASL/SCRAM-Authentifizierung

EventBridge Pipes unterstützt Simple Authentication und Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) -Authentifizierung mit Transport Layer Security (TLS) -Verschlüsselung. EventBridge Pipes sendet die verschlüsselten Anmeldeinformationen zur Authentifizierung beim Cluster. Weitere Informationen zur IAM-Authentifizierung finden Sie unter RFC 5802.

EventBridge Pipes unterstützt die SASL/PLAIN-Authentifizierung mit TLS-Verschlüsselung. Bei der SASL/PLAIN-Authentifizierung sendet EventBridge Pipes Anmeldeinformationen als Klartext (unverschlüsselt) an den Server.

Für die SASL-Authentifizierung speichern Sie die Anmeldeinformationen als Secret in AWS Secrets Manager.

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.

Im selbstverwalteten Apache Kafka fungiert EventBridge Pipes als Client. Sie konfigurieren ein Client-Zertifikat (als Secret in Secrets Manager), um EventBridge Pipes bei Ihren Apache Kafka-Brokern zu authentifizieren. Das Clientzertifikat muss von einer Zertifizierungsstelle (CA) im Trust Store des Servers signiert sein.

Der Apache Kafka-Cluster sendet ein Serverzertifikat an Pipes, um die Apache Kafka-Broker mit EventBridge Pipes zu authentifizieren. EventBridge Das Serverzertifikat kann ein öffentliches CA-Zertifikat oder ein privates CA-Zertifikat/selbstsigniertes Zertifikat sein. Das öffentliche CA-Zertifikat muss von einer CA signiert werden, die sich im EventBridge Pipes Trust Store befindet. Für ein privates CA/selbstsigniertes Zertifikat konfigurieren Sie das Root-CA-Zertifikat des Servers (als Secret in Secrets Manager). EventBridge Pipes verwendet das Stammzertifikat, um die Apache Kafka-Broker zu verifizieren.

Weitere Informationen über mTLS finden Sie unter Vorstellung von gegenseitiger TLS-Authentifizierung für Amazon MSK als Quelle.

Konfigurieren des Client-Zertifikat-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 Pipes 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-----" }

Konfigurieren des Secrets des Server-Root-CA-Zertifikats

Sie erstellen dieses Secret, wenn Ihre Apache-Kafka-Broker TLS-Verschlüsselung mit Zertifikaten verwenden, die von einer privaten Zertifizierungsstelle signiert wurden. Sie können die TLS-Verschlüsselung zur VPC-, SASL/SCRAM-, SASL/PLAIN- oder mTLS-Authentifizierung verwenden.

Das Secret des Server-Root-CA-Zertifikats erfordert ein Feld, das das Root-CA-Zertifikat des Apache-Kafka-Brokers im PEM-Format enthält. Das folgende Beispiel zeigt die Struktur des Secrets.

{ "certificate": "-----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dG... -----END CERTIFICATE-----"

Netzwerkkonfiguration

Wenn Sie eine selbstverwaltete Apache Kafka-Umgebung verwenden, die private VPC-Konnektivität verwendet, EventBridge müssen Sie Zugriff auf die Amazon Virtual Private Cloud (Amazon VPC) -Ressourcen haben, die Ihren Apache Kafka-Brokern zugeordnet sind.

  • Um auf die VPC Ihres Apache Kafka-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 durch 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 durchqueren. 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 — Erlauben Sie den gesamten Datenverkehr auf dem Apache Kafka-Broker-Port für die für Ihre Quelle angegebenen Sicherheitsgruppen.

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

    Zu den Broker-Ports gehören:

    • 9092 für Klartext

    • 9094 für TLS

    • 9096 für SASL

    • 9098 für IAM

Automatische Skalierung für Verbraucher mit Apache Kafka-Quellen

Wenn Sie zum ersten Mal eine Apache Kafka-Quelle erstellen, EventBridge weist sie einem Verbraucher die Verarbeitung aller Partitionen im Kafka-Thema zu. 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 die Workload für die Funktion, indem die Anzahl der Nachrichten reduziert wird, die Verbraucher abrufen und an die Funktion senden können.