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
Die Apache Kafka (Kafka) -Aktion sendet Nachrichten direkt an Ihr Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka-Cluster, die von Drittanbietern wie Confluent Cloud
Anmerkung
Dieses Thema setzt Vertrautheit mit der Apache Kafka-Plattform und verwandten Konzepten voraus. Weitere Informationen zu Apache Kafka finden Sie unter Apache Kafka
Voraussetzungen
Diese Regelaktion hat die folgenden Anforderungen:
-
Eine IAM-Rolle, die die Ausführung der
ec2:CreateNetworkInterface
,,,,ec2:DescribeNetworkInterfaces
ec2:CreateNetworkInterfacePermission
ec2:DeleteNetworkInterface
ec2:DescribeSubnets
,ec2:DescribeVpcs
und -Operationen übernehmen AWS IoT kann.ec2:DescribeVpcAttribute
ec2:DescribeSecurityGroups
Diese Rolle erstellt und verwaltet ENIs zu Ihrer Amazon Virtual Private Cloud, um Ihren Kafka-Broker zu erreichen. Weitere Informationen finden Sie unter Gewähren Sie einer AWS IoT Regel den Zugriff, den sie benötigt.In der AWS IoT Konsole können Sie eine Rolle auswählen oder erstellen, um die Ausführung dieser Regelaktion AWS IoT Core zu ermöglichen.
Weitere Informationen zu Netzwerkschnittstellen finden Sie unter Elastic-Network-Schnittstellen im Amazon-EC2-Benutzerhandbuch.
Die Richtlinie, die der von Ihnen angegebenen Rolle zugewiesen ist, sollte wie im folgenden Beispiel aussehen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcAttribute", "ec2:DescribeSecurityGroups" ], "Resource": "*" } ] }
Wenn Sie die Anmeldeinformationen speichern AWS Secrets Manager , die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind, müssen Sie eine IAM-Rolle erstellen, die die Ausführung der
secretsmanager:GetSecretValue
AND-Operationen übernehmen AWS IoT Core kann.secretsmanager:DescribeSecret
Die Richtlinie, die der von Ihnen angegebenen Rolle zugewiesen ist, sollte wie im folgenden Beispiel aussehen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:
region
:123456789012
:secret:kafka_client_truststore-*", "arn:aws:secretsmanager:region
:123456789012
:secret:kafka_keytab-*" ] } ] }-
Sie können Ihre Apache Kafka-Cluster in Amazon Virtual Private Cloud (Amazon VPC) ausführen. Sie müssen ein Amazon VPC-Ziel erstellen und ein NAT-Gateway in Ihren Subnetzen verwenden, um Nachrichten von AWS IoT an einen öffentlichen Kafka-Cluster weiterzuleiten. Die AWS IoT Regel-Engine erstellt in jedem der im VPC-Ziel aufgeführten Subnetze eine Netzwerkschnittstelle, um den Verkehr direkt an die VPC weiterzuleiten. Wenn Sie ein VPC-Ziel erstellen, erstellt die AWS IoT Regel-Engine automatisch eine VPC-Regelaktion. Weitere Informationen zu VPC-Regelaktionen finden Sie unter Virtual Private Cloud (VPC) -Ziele.
-
Wenn Sie einen vom Kunden verwalteten AWS KMS key (KMS-Schlüssel) verwenden, um Daten im Ruhezustand zu verschlüsseln, muss der Dienst die Erlaubnis haben, den KMS-Schlüssel im Namen des Anrufers zu verwenden. Weitere Informationen finden Sie unter Amazon-MSK-Verschlüsselung im Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka.
Parameter
Wenn Sie mit dieser Aktion eine AWS IoT Regel erstellen, müssen Sie die folgenden Informationen angeben:
- destinationArn
Der Amazon-Ressourcenname (ARN) des VPC-Ziels. Weitere Informationen zum Erstellen eines VPC-Ziels finden Sie unter Virtual Private Cloud (VPC) -Ziele.
- Thema
Das Kafka-Thema für Nachrichten, die an den Kafka-Broker gesendet werden sollen.
Sie können dieses Feld durch eine Ersatzvorlage ersetzen. Weitere Informationen finden Sie unter Ersetzungsvorlagen.
- Schlüssel (optional)
Der Kafka-Nachrichtenschlüssel.
Sie können dieses Feld durch eine Ersatzvorlage ersetzen. Weitere Informationen finden Sie unter Ersetzungsvorlagen.
- Überschriften (optional)
-
Die Liste der Kafka-Header, die Sie festlegen. Jeder Header ist ein Schlüssel-Wert-Paar, das Sie beim Erstellen einer Kafka-Aktion angeben können. Sie können diese Header verwenden, um Daten von IoT-Clients an Downstream-Kafka-Cluster weiterzuleiten, ohne Ihre Nachrichtennutzlast zu ändern.
Sie können dieses Feld durch eine Ersatzvorlage ersetzen. Um zu verstehen, wie die Funktion einer Inline-Regel als Ersatzvorlage in den Header von Kafka Action übergeben wird, siehe Beispiele. Weitere Informationen finden Sie unter Ersetzungsvorlagen.
Anmerkung
Header im Binärformat werden nicht unterstützt.
- Partition (optional)
Die Kafka-Nachrichten-Partition.
Sie können dieses Feld durch eine Ersatzvorlage ersetzen. Weitere Informationen finden Sie unter Ersetzungsvorlagen.
- clientProperties
Ein Objekt, das die Eigenschaften des Apache Kafka-Producer-Clients definiert.
- acks (optional)
Die Anzahl der Bestätigungen, die der Hersteller beim Server erhalten haben muss, bevor eine Anfrage als abgeschlossen betrachtet werden kann.
Wenn Sie 0 als Wert angeben, wartet der Producer nicht auf eine Bestätigung vom Server. Wenn der Server die Nachricht nicht empfängt, versucht der Producer nicht erneut, die Nachricht zu senden.
Zulässige Werte:
-1
,0
,1
,all
. Der Standardwert ist1
.- bootstrap.servers
Eine Liste von Host- und Port-Paaren (z. B.
host1:port1
,host2:port2
), die verwendet wurden, um die erste Verbindung zu Ihrem Kafka-Cluster herzustellen.- compression.type (optional)
Der Komprimierungstyp für alle vom Hersteller generierten Daten.
Zulässige Werte:
none
,gzip
,snappy
,lz4
,zstd
. Der Standardwert istnone
.- security.protocol
Das Sicherheitsprotokoll, das für die Verbindung mit Ihrem Kafka-Broker verwendet wird.
Zulässige Werte:
SSL
,SASL_SSL
. Der Standardwert istSSL
.- key.serializer
Gibt an, wie die Schlüsselobjekte, die Sie mit
ProducerRecord
bereitstellen, in Bytes umgewandelt werden sollen.Zulässiger Wert:
StringSerializer
.- value.serializer
Gibt an, wie Wertobjekte, die Sie mit dem
ProducerRecord
bereitstellen, in Bytes umgewandelt werden sollen.Zulässiger Wert:
ByteBufferSerializer
.- ssl.truststore
Die Truststore-Datei im Base64-Format oder der Speicherort der Truststore-Datei in AWS Secrets Manager. Dieser Wert ist nicht erforderlich, wenn Ihr Truststore von den Amazon-Zertifizierungsstellen (CA) als vertrauenswürdig eingestuft wird.
Dieses Feld unterstützt Substitutionsvorlagen. Wenn Sie Secrets Manager verwenden, um die Anmeldeinformationen zu speichern, die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind, können Sie die
get_secret
SQL-Funktion verwenden, um den Wert für dieses Feld abzurufen. Weitere Informationen zu Ersatzvorlagen finden Sie unter Ersetzungsvorlagen. Weitere Informationen zurget_secret
SQL Funktion finden Sie unter get_secret (secretId, geheimer Typ, Schlüssel, roleArn). Wenn der Truststore in Form einer Datei vorliegt, verwenden Sie denSecretBinary
Parameter. Wenn der Truststore die Form einer Zeichenfolge hat, verwenden Sie denSecretString
Parameter.Die maximale Größe dieses Wertes beträgt 65 KB.
- ssl.truststore.password
Das Passwort für den Truststore Dieser Wert ist nur erforderlich, wenn Sie ein Passwort für den Truststore erstellt haben.
- ssl.keystore
Die Keystore-Datei. Dieser Wert ist erforderlich, wenn Sie
SSL
als Wert fürsecurity.protocol
angeben.Dieses Feld unterstützt Substitutionsvorlagen. Verwenden Sie Secrets Manager, um die Anmeldeinformationen zu speichern, die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind. Verwenden Sie die
get_secret
SQL-Funktion, um den Wert für dieses Feld abzurufen. Weitere Informationen zu Ersatzvorlagen finden Sie unter Ersetzungsvorlagen. Weitere Informationen zurget_secret
SQL Funktion finden Sie unter get_secret (secretId, geheimer Typ, Schlüssel, roleArn). Verwenden Sie den ParameterSecretBinary
.- ssl.keystore.password
Das Speicherpasswort für die Keystore-Datei. Dieser Wert ist erforderlich, wenn Sie einen Wert für
ssl.keystore
angeben.Der Wert dieses Feldes kann Klartext sein. Dieses Feld unterstützt auch Ersatzvorlagen. Verwenden Sie Secrets Manager, um die Anmeldeinformationen zu speichern, die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind. Verwenden Sie die
get_secret
SQL-Funktion, um den Wert für dieses Feld abzurufen. Weitere Informationen zu Ersatzvorlagen finden Sie unter Ersetzungsvorlagen. Weitere Informationen zurget_secret
SQL Funktion finden Sie unter get_secret (secretId, geheimer Typ, Schlüssel, roleArn). Verwenden Sie den ParameterSecretString
.- ssl.key.password
Das Passwort des privaten Schlüssels in Ihrer Keystore-Datei.
Dieses Feld unterstützt Substitutionsvorlagen. Verwenden Sie Secrets Manager, um die Anmeldeinformationen zu speichern, die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind. Verwenden Sie die
get_secret
SQL-Funktion, um den Wert für dieses Feld abzurufen. Weitere Informationen zu Ersatzvorlagen finden Sie unter Ersetzungsvorlagen. Weitere Informationen zurget_secret
SQL Funktion finden Sie unter get_secret (secretId, geheimer Typ, Schlüssel, roleArn). Verwenden Sie den ParameterSecretString
.- sasl.mechanik
Der Sicherheitsmechanismus, der für die Verbindung zu Ihrem Kafka-Broker verwendet wird. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
angeben.Zulässige Werte:
PLAIN
,SCRAM-SHA-512
,GSSAPI
.Anmerkung
SCRAM-SHA-512
ist der einzige unterstützte Sicherheitsmechanismus in den Regionen cn-north-1, cn-northwest-1, -1 und -1. us-gov-east us-gov-west- sasl.plain.username
Der Benutzername, der verwendet wird, um die geheime Zeichenfolge vom Secrets Manager abzurufen. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undPLAIN
fürsasl.mechanism
angeben.- sasl.plain.password
Das Passwort, das zum Abrufen der geheimen Zeichenfolge von Secrets Manager verwendet wird. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undPLAIN
fürsasl.mechanism
angeben.- sasl.scram.username
Der Benutzername, der verwendet wird, um die geheime Zeichenfolge vom Secrets Manager abzurufen. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undSCRAM-SHA-512
fürsasl.mechanism
angeben.- sasl.scram.password
Das Passwort, das zum Abrufen der geheimen Zeichenfolge von Secrets Manager verwendet wird. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undSCRAM-SHA-512
fürsasl.mechanism
angeben.- sasl.kerberos.keytab
Die Keytab-Datei für die Kerberos-Authentifizierung in Secrets Manager. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undGSSAPI
fürsasl.mechanism
angeben.Dieses Feld unterstützt Substitutionsvorlagen. Verwenden Sie Secrets Manager, um die Anmeldeinformationen zu speichern, die für die Verbindung mit Ihrem Kafka-Broker erforderlich sind. Verwenden Sie die
get_secret
SQL-Funktion, um den Wert für dieses Feld abzurufen. Weitere Informationen zu Ersatzvorlagen finden Sie unter Ersetzungsvorlagen. Weitere Informationen zurget_secret
SQL Funktion finden Sie unter get_secret (secretId, geheimer Typ, Schlüssel, roleArn). Verwenden Sie den ParameterSecretBinary
.- sasl.kerberos.service.name
Der Kerberos-Prinzipalname, unter dem Apache Kafka ausgeführt wird. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undGSSAPI
fürsasl.mechanism
angeben.- sasl.kerberos.krb5.kdc
Der Hostname des Key Distribution Center (KDC), mit dem Ihr Apache Kafka Producer-Client eine Verbindung herstellt. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undGSSAPI
fürsasl.mechanism
angeben.- sasl.kerberos.krb5.realm
Der Realm, mit dem Ihr Apache Kafka Producer-Client eine Verbindung herstellt. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undGSSAPI
fürsasl.mechanism
angeben.- sasl.kerberos.principal
Die eindeutige Kerberos-Identität, der Kerberos Tickets für den Zugriff auf Kerberos-fähige Dienste zuweisen kann. Dieser Wert ist erforderlich, wenn Sie
SASL_SSL
fürsecurity.protocol
undGSSAPI
fürsasl.mechanism
angeben.
Beispiele
Das folgende JSON-Beispiel definiert eine Apache Kafka-Aktion in einer Regel. AWS IoT Im folgenden Beispiel wird die Inline-Funktion sourceIp () als Ersatzvorlage im Kafka Action-Header übergeben.
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "kafka": { "destinationArn": "arn:aws:iot:region:123456789012:ruledestination/vpc/VPCDestinationARN", "topic": "TopicName", "clientProperties": { "bootstrap.servers": "kafka.com:9092", "security.protocol": "SASL_SSL", "ssl.truststore": "${get_secret('kafka_client_truststore', 'SecretBinary','arn:aws:iam::123456789012:role/kafka-get-secret-role-name')}", "ssl.truststore.password": "kafka password", "sasl.mechanism": "GSSAPI", "sasl.kerberos.service.name": "kafka", "sasl.kerberos.krb5.kdc": "kerberosdns.com", "sasl.kerberos.keytab": "${get_secret('kafka_keytab','SecretBinary', 'arn:aws:iam::123456789012:role/kafka-get-secret-role-name')}", "sasl.kerberos.krb5.realm": "KERBEROSREALM", "sasl.kerberos.principal": "kafka-keytab/kafka-keytab.com" }, "headers": [ { "key": "static_header_key", "value": "static_header_value" }, { "key": "substitutable_header_key", "value": "${value_from_payload}" }, { "key": "source_ip", "value": "${sourceIp()}" } ] } } ] } }
Wichtige Hinweise zu Ihrem Kerberos-Setup
Ihr Key Distribution Center (KDC) muss über ein privates Domain Name System (DNS) innerhalb Ihrer Ziel-VPC auflösbar sein. Ein möglicher Ansatz besteht darin, den KDC-DNS-Eintrag zu einer privaten gehosteten Zone hinzuzufügen. Weitere Informationen zu diesem Ansatz finden Sie unter Arbeiten mit privat gehosteten Zonen.
Für jede VPC muss die DNS-Auflösung aktiviert sein. Weitere Informationen finden Sie unter Verwenden von DNS in Ihrer VPC.
Sicherheitsgruppen für Netzwerkschnittstellen und Sicherheitsgruppen auf Instance-Ebene im VPC-Ziel müssen Datenverkehr aus Ihrer VPC an den folgenden Ports zulassen.
TCP-Verkehr auf dem Bootstrap-Broker-Listener-Port (häufig 9092, muss aber im Bereich 9000—9100 liegen)
TCP- und UDP-Verkehr auf Port 88 für das KDC
SCRAM-SHA-512
ist der einzige unterstützte Sicherheitsmechanismus in den Regionen cn-north-1, cn-northwest-1, -1 und -1. us-gov-east us-gov-west