Apache Kafka diffuse en tant que source - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Apache Kafka diffuse en tant que source

Apache Kafka est une plateforme open source de streaming d’événements qui prend en charge des charges de travail telles que les canaux de données et l’analytique de streaming. Vous pouvez utiliser Amazon Managed Streaming for Apache Kafka (Amazon MSK) ou un cluster Apache Kafka autogéré. En AWS termes terminologiques, un cluster autogéré fait référence à tout cluster Apache Kafka non hébergé par AWS. Cela inclut à la fois les clusters que vous gérez vous-même, ainsi que ceux hébergés par un fournisseur tiers Confluent Cloud, tel que CloudKarafka, ou Redpanda.

Pour plus d'informations sur les autres options d' AWS hébergement pour votre cluster, consultez la section Meilleures pratiques pour exécuter Apache Kafka AWS sur le blog AWS Big Data.

Apache Kafka en tant que source fonctionne de la même manière qu'Amazon Simple Queue Service (Amazon SQS) ou Amazon Kinesis. EventBridgeinterroge en interne les nouveaux messages provenant de la source, puis invoque la cible de manière synchrone. EventBridge lit les messages par lots et les fournit à votre fonction sous forme de charge utile d'événements. La taille de lot maximale est configurable. (par défaut, 100 messages).

Pour les sources basées sur Apache Kafka, EventBridge prend en charge les paramètres de contrôle du traitement, tels que les fenêtres de traitement par lots et la taille des lots.

EventBridge envoie le lot de messages dans le paramètre d'événement lorsqu'il invoque votre canal. La charge utile d’un événement contient un tableau de messages. Chaque élément de tableau contient les détails de la rubrique Apache Kafka et l’identifiant de partition Apache Kafka, ainsi qu’un horodatage et un message codé en base64.

Exemples d’événements

L’exemple d’événement suivant montre les informations reçues par le canal. Vous pouvez utiliser cet événement pour créer et filtrer vos modèles d’événements, ou pour définir la transformation d’entrée. Tous les champs ne peuvent pas être filtrés. Pour plus d’informations sur les champs que vous pouvez filtrer, consultez Filtrage 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 ] } ] } ]

Authentification de cluster Apache Kafka

EventBridge Pipes prend en charge plusieurs méthodes pour s'authentifier auprès de votre cluster Apache Kafka autogéré. Veillez à configurer le cluster Apache Kafka de sorte à utiliser l’une des méthodes d’authentification prises en charge suivantes : Pour plus d’informations sur la sécurité Apache Kafka, consultez la section Sécurité de la documentation d’Apache Kafka.

Accès VPC

Si vous utilisez un environnement Apache Kafka autogéré dans lequel seuls les utilisateurs d'Apache Kafka au sein de votre VPC ont accès à vos courtiers Apache Kafka, vous devez configurer Amazon Virtual Private Cloud (Amazon VPC) dans la source Apache Kafka.

Authentification SASL/SCRAM

EventBridge Pipes prend en charge l'authentification simple et l'authentification SASL/SCRAM (Security Layer/Salted Challenge Response Authentication Mechanism) avec le cryptage TLS (Transport Layer Security). EventBridge Pipes envoie les informations d'identification cryptées pour s'authentifier auprès du cluster. Pour plus d’informations sur l’authentification SASL/SCRAM, consultez RFC 5802.

EventBridge Pipes prend en charge l'authentification SASL/PLAIN avec le cryptage TLS. Avec l'authentification SASL/PLAIN, EventBridge Pipes envoie les informations d'identification sous forme de texte clair (non crypté) au serveur.

Pour l’authentification SASL, vous devez stocker les informations d’identification en tant que secret dans AWS Secrets Manager.

Authentification TLS mutuelle

Mutual TLS (mTLS) fournit une authentification bidirectionnelle entre le client et le serveur. Le client envoie un certificat au serveur pour que le serveur vérifie le client, et le serveur envoie un certificat au client pour que le client vérifie le serveur.

Dans Apache Kafka autogéré, EventBridge Pipes agit en tant que client. Vous configurez un certificat client (en tant que secret dans Secrets Manager) pour authentifier EventBridge Pipes auprès de vos courtiers Apache Kafka. Le certificat client doit être signé par une autorité de certification (CA) située dans le magasin d’approbations du serveur.

Le cluster Apache Kafka envoie un certificat de serveur à EventBridge Pipes pour authentifier les courtiers Apache Kafka auprès de Pipes. EventBridge Le certificat de serveur peut être un certificat d’autorité de certification public ou un certificat CA/auto-signé privé. Le certificat CA public doit être signé par une autorité de certification qui se trouve dans le EventBridge Pipes Trust Store. Pour un certificat privé ou auto-signé, vous configurez le certificat CA racine du serveur (en tant que secret dans Secrets Manager). EventBridge Pipes utilise le certificat racine pour vérifier les courtiers Apache Kafka.

Pour plus d’informations sur mTLS, consultez Présentation de l’authentification TLS mutuelle pour Amazon MSK en tant que source (langue française non garantie).

Configuration du secret du certificat client

Le secret CLIENT_CERTIFICATE_TLS_AUTH nécessite un champ de certificat et un champ de clé privée. Pour une clé privée chiffrée, le secret nécessite un mot de passe de clé privée. Le certificat et la clé privée doivent être au format PEM.

Note

EventBridge Pipes prend en charge les algorithmes de chiffrement à clé privée PBES1 (mais pas PBES2).

Le champ de certificat doit contenir une liste de certificats, commençant par le certificat client, suivi de tous les certificats intermédiaires et se terminant par le certificat racine. Chaque certificat doit commencer sur une nouvelle ligne avec la structure suivante :

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

Secrets Manager prend en charge les secrets jusqu’à 65 536 octets, ce qui offre suffisamment d’espace pour de longues chaînes de certificats.

La clé privée doit être au format PKCS #8, avec la structure suivante :

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

Pour une clé privée chiffrée, utilisez la structure suivante :

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

L’exemple suivant affiche le contenu d’un secret pour l’authentification mTLS à l’aide d’une clé privée chiffrée. Pour une clé privée chiffrée, incluez le mot de passe de clé privée dans le secret.

{ "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-----" }

Configuration du secret du certificat d’autorité de certification racine du serveur

Vous créez ce secret si vos agents Apache Kafka utilisent le chiffrement TLS avec des certificats signés par une CA privée. Vous pouvez utiliser le chiffrement TLS pour l’authentification VPC, SASL/SCRAM, SASL/PLAIN ou mTLS.

Le secret du certificat de CA racine du serveur requiert un champ contenant le certificat de CA racine de l’agent Apache Kafka au format PEM. La structure du secret est présentée dans l’exemple suivant.

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

Configuration réseau

Si vous utilisez un environnement Apache Kafka autogéré qui utilise une connectivité VPC privée EventBridge , vous devez avoir accès aux ressources Amazon Virtual Private Cloud (Amazon VPC) associées à vos courtiers Apache Kafka. Pour accéder au VPC de votre cluster Apache Kafka, EventBridge un accès Internet sortant est requis pour les sous-réseaux de votre source. Pour les sous-réseaux publics, il doit s’agir d’une passerelle NAT gérée. Pour les sous-réseaux privés, il peut s’agir d’une passerelle NAT ou de votre propre NAT. Assurez-vous que le NAT possède une adresse IP publique et peut se connecter à Internet.

Vous devez configurer vos groupes de sécurité Amazon VPC avec les règles suivantes (au minimum) :

  • Règles entrantes : autorise l’ensemble du trafic sur le port de l’agent Apache Kafka (9092 pour le texte brut, 9094 pour TLS, 9096 pour SASL, 9098 pour IAM) pour les groupes de sécurité spécifiés pour votre source.

  • Règles sortantes : autorisent tout le trafic sur le port 443 pour toutes les destinations. Autorisez l’ensemble du trafic sur le port de l’agent Apache Kafka (9092 pour le texte brut, 9094 pour TLS, 9096 pour SASL, 9098 pour IAM) pour les groupes de sécurité spécifiés pour votre source.

Mise à l'échelle automatique des consommateurs avec les sources Apache Kafka

Lorsque vous créez initialement une source Apache Kafka, EventBridge elle alloue un consommateur pour traiter toutes les partitions du sujet Kafka. Chaque consommateur dispose de plusieurs processeurs exécutés en parallèle pour gérer des charges de travail accrues. En outre, EventBridge augmente ou diminue automatiquement le nombre de consommateurs en fonction de la charge de travail. Pour préserver l’ordre des messages dans chaque partition, le nombre maximum de consommateurs est de un par partition dans la rubrique.

EventBridge Évalue, à intervalles d'une minute, le décalage entre les utilisateurs et toutes les partitions du sujet. Si le décalage est trop élevé, la partition reçoit les messages plus rapidement qu'elle ne EventBridge peut les traiter. Si nécessaire, EventBridge ajoute ou supprime des consommateurs du sujet. Le processus de mise à l’échelle consistant à ajouter ou à supprimer des consommateurs a lieu dans les trois minutes suivant l’évaluation.

Si votre cible est surchargée, vous EventBridge réduisez le nombre de consommateurs. Cette action réduit la charge de travail de la fonction en diminuant le nombre de messages que les consommateurs peuvent échanger avec la fonction.