Fermer

octobre 1, 2024

Configuration d’AWS Lambda en tant que producteur Kafka avec SASL_SSL et Kerberos/GSSAPI pour une communication sécurisée

Configuration d’AWS Lambda en tant que producteur Kafka avec SASL_SSL et Kerberos/GSSAPI pour une communication sécurisée


Kafka est une plateforme de streaming distribuée conçue pour le streaming en temps réel données pipelines, traitement de flux et intégration de données. AWS lambda, quant à lui, est un service de calcul sans serveur qui exécute votre code en réponse à des événements, gérant ainsi les ressources de calcul sous-jacentes pour vous. Dans les organisations où Kafka joue un rôle central dans le streaming et l’intégration des données, la mise en œuvre d’une solution sans serveur basée sur les événements qui traite les fichiers et produit de manière transparente des enregistrements pour Kafka constitue une approche efficace et évolutive.

Dans ce blog, nous expliquerons comment configurer une fonction AWS Lambda en tant que producteur Kafka, en lisant des fichiers depuis Amazon S3 et en envoyant des données à Kafka en mode batch piloté par événements. Nous utiliserons la bibliothèque confluent-kafka-python avec les configurations SASL_SSL et GSSAPI pour une communication sécurisée. Étant donné que les roues Linux pré-construites de confluent-kafka-python ne prennent pas en charge SASL Kerberos/GSSAPI, nous devons installer librdkafka et ses dépendances séparément et construire confluent-kafka. Nous allons conteneuriser la fonction Lambda avec la construction confluent-kafka, la déployer via AWS ECR (Elastic Container Registry) et l’intégrer à AWS Secrets Manager pour transmettre les informations d’identification et les certificats Kafka.

En savoir plus: Migration efficace des données de MongoDB vers S3 à l’aide de PySpark

Architecture

L’architecture ci-dessous présente un pipeline de données qui utilise divers composants AWS pour montrer comment un Lambda conteneurisé peut être utilisé pour produire des enregistrements pour Kafka.

Architecture

Étapes pour configurer AWS Lambda en tant que producteur Kafka

1. Créez un code Lambda basé sur Python pour le producteur.

Tout d’abord, nous devons créer un code Lambda basé sur Python pour notre producteur et le conditionnerons plus tard en tant que conteneur Docker. Nous utiliserons pour cela la bibliothèque confluent-kafka-python.

  • Définissez des fonctions pour récupérer les variables d’environnement et les valeurs secrètes du gestionnaire de secrets.

Extrait de code pour définir la variable d'environnement

  • Définir la configuration du producteur

Définir la configuration du producteur

Gestionnaire Lambda

En savoir plus: Améliorer l’efficacité et réduire les coûts : migration de Kafka vers AWS MSK pour une entreprise de publicité de premier plan

2. Créez un fichier Docker

Voici un simple Dockerfile pour conteneuriser la fonction Lambda avec les dépendances nécessaires, notamment librdkafka et confluent-kafka-python, permettant la communication SASL_SSL à l’aide de Kerberos/GSSAPI.

Fichier Docker

3. Créez et transférez l’image Docker vers ECR

Une fois le Dockerfile prêt, nous pouvons créer et transférer l’image vers AWS ECR.

Créer une image

4. Créer une fonction Lambda à partir de l’image ECR

Dans AWS Management Console, créez une nouvelle fonction Lambda et choisissez l’option Image du conteneur. Sélectionnez l’image dans votre référentiel ECR.

Conteneur Lambda

5. Configurez les secrets Kafka dans AWS Secrets Manager

Stockez les informations d’identification Kafka, y compris le certificat SSL et Kerberos Keytab, dans AWS Secrets Manager. Cela garantit que les informations d’identification sont récupérées en toute sécurité au moment de l’exécution.

6. Définir les variables d’environnement

Configurez les variables d’environnement pour que la fonction Lambda accède aux secrets et à d’autres variables.

7. Fournir des autorisations IAM

Fournissez les autorisations IAM nécessaires pour :

  • Accès à S3 depuis AWS Lambda.
  • Accès à ECR depuis AWS Lambda.
  • Accès à Secret Manager.

8. Test de la fonction Lambda

Afin de tester la fonction lambda avant de la déployer et de l’exécuter sur AWS :

  • Exécutez l’image Docker pour le producteur lambda et fournissez toutes les variables d’environnement nécessaires.test du conteneur lambda
  • Envoyez un exemple d’événement à l’aide de la commande curl dans une autre fenêtre. Le nom du fichier csv utilisé dans l’événement doit être présent à l’emplacement s3.exemple d'événement curl
  • Le conteneur Lambda hébergé sur une machine locale doit être déclenché et le traitement doit démarrer.
  • Lambda devrait être capable de lire tous les enregistrements CSV, de les transformer selon la logique lambda et de les produire dans le sujet Kafka.
  • Les données doivent être disponibles dans le sujet Kafka.
  • Une fois tous les scénarios testés, vous pouvez déployer votre image sur AWS et commencer à utiliser Lambda en tant que producteur Kafka.

Conclusion

La conteneurisation d’AWS Lambda nous permet de gérer efficacement des dépendances complexes et d’étendre ses capacités avec des bibliothèques externes telles que confluent-kafka-python et librdkafka. Cela fournit un moyen sécurisé d’intégrer AWS Lambda à Kafka en tant que producteur à l’aide de SASL_SSL et GSSAPI. De plus, il garantit un environnement stable et cohérent entre les étapes de développement, de test et de production. Cette architecture offre une solution évolutive et sécurisée pour créer des pipelines de données robustes qui s’intègrent de manière transparente à S3 et Kafka.

VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE






Source link