Tutoriel : Utilisation d'un mappage de source d'MSKévénements Amazon pour appeler une fonction Lambda - AWS Lambda

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.

Tutoriel : Utilisation d'un mappage de source d'MSKévénements Amazon pour appeler une fonction Lambda

Dans ce didacticiel, vous allez effectuer les opérations suivantes :

  • Créez une fonction Lambda dans le même AWS compte qu'un cluster Amazon MSK existant.

  • Configurez le réseau et l'authentification pour que Lambda communique avec Amazon. MSK

  • Configurez un mappage des sources d'MSKévénements Lambda Amazon, qui exécute votre fonction Lambda lorsque des événements apparaissent dans la rubrique.

Une fois ces étapes terminées, lorsque des événements seront envoyés à AmazonMSK, vous pourrez configurer une fonction Lambda pour traiter ces événements automatiquement avec votre propre code Lambda personnalisé.

Que pouvez-vous faire avec cette fonctionnalité ?

Exemple de solution : utilisez un mappage des sources d'MSKévénements pour fournir des scores en direct à vos clients.

Imaginons le scénario suivant : votre entreprise héberge une application Web dans laquelle vos clients peuvent consulter des informations sur des événements en direct, tels que des matchs de sport. Les informations mises à jour du jeu sont fournies à votre équipe via un sujet Kafka sur AmazonMSK. Vous souhaitez concevoir une solution qui utilise les mises à jour du MSK sujet pour fournir une vue actualisée de l'événement en direct aux clients au sein d'une application que vous développez. Vous avez opté pour l'approche de conception suivante : vos applications clientes communiqueront avec un backend sans serveur hébergé dans. AWS Les clients se connecteront via des sessions Websocket à l'aide d'Amazon API Gateway WebSocket API.

Dans cette solution, vous avez besoin d'un composant qui lit les MSK événements, exécute une logique personnalisée pour préparer ces événements pour la couche application, puis transmet ces informations à la API passerelleAPI. Vous pouvez implémenter ce composant en fournissant votre logique personnalisée dans une fonction Lambda, puis en l'appelant à l'aide d'un mappage de source d'MSKévénements AWS Lambda Amazon. AWS Lambda

Pour plus d'informations sur la mise en œuvre de solutions à l'aide d'Amazon API Gateway WebSocket API, consultez les WebSocket APIdidacticiels de la documentation de API Gateway.

Prérequis

Un AWS compte avec les ressources préconfigurées suivantes :

Pour remplir ces conditions préalables, nous vous recommandons de suivre Getting started using Amazon MSK dans la MSK documentation Amazon.

  • Un MSK cluster Amazon. Consultez Créer un MSK cluster Amazon dans Getting started using Amazon MSK.

  • La configuration suivante :

    • Assurez-vous que l'authentification IAM basée sur les rôles est activée dans les paramètres de sécurité de votre cluster. Cela améliore votre sécurité en limitant votre fonction Lambda à accéder uniquement aux MSK ressources Amazon nécessaires. Ceci est activé par défaut sur les nouveaux MSK clusters Amazon.

    • Assurez-vous que l'accès public est désactivé dans les paramètres réseau de votre cluster. Restreindre l'accès à Internet de votre MSK cluster Amazon améliore votre sécurité en limitant le nombre d'intermédiaires qui traitent vos données. Ceci est activé par défaut sur les nouveaux MSK clusters Amazon.

  • Une rubrique Kafka dans votre MSK cluster Amazon à utiliser pour cette solution. Consultez Créer un sujet dans Getting started using Amazon MSK.

  • Un hôte administrateur Kafka configuré pour récupérer les informations de votre cluster Kafka et envoyer des événements Kafka à votre sujet à des fins de test, par exemple une EC2 instance Amazon sur laquelle l'administrateur Kafka et la bibliothèque CLI Amazon sont installés. MSK IAM Consultez la section Création d'un ordinateur client dans Getting started using Amazon MSK.

Une fois que vous avez configuré ces ressources, collectez les informations suivantes à partir de votre AWS compte pour confirmer que vous êtes prêt à continuer.

  • Le nom de votre MSK cluster Amazon. Vous pouvez trouver ces informations dans la MSK console Amazon.

  • Le clusterUUID, qui fait partie du ARN MSK cluster Amazon, que vous pouvez trouver dans la MSK console Amazon. Suivez les procédures décrites dans la section Listing clusters de la MSK documentation Amazon pour trouver ces informations.

  • Les groupes de sécurité associés à votre MSK cluster Amazon. Vous pouvez trouver ces informations dans la MSK console Amazon. Dans les étapes suivantes, appelez-les vosclusterSecurityGroups.

  • L'identifiant de l'Amazon VPC contenant votre MSK cluster Amazon. Vous pouvez trouver ces informations en identifiant les sous-réseaux associés à votre MSK cluster Amazon dans la MSK console Amazon, puis en identifiant l'Amazon VPC associé au sous-réseau dans la console AmazonVPC.

  • Le nom du sujet Kafka utilisé dans votre solution. Vous pouvez trouver ces informations en appelant votre MSK cluster Amazon avec le Kafka topics CLI depuis votre hôte administrateur Kafka. Pour plus d'informations sur les sujetsCLI, consultez la section Ajouter et supprimer des sujets dans la documentation de Kafka.

  • Le nom d'un groupe de consommateurs pour votre sujet Kafka, adapté à une utilisation par votre fonction Lambda. Ce groupe peut être créé automatiquement par Lambda, vous n'avez donc pas besoin de le créer avec le Kafka. CLI Si vous devez gérer vos groupes de consommateurs, pour en savoir plus sur les groupes de consommateursCLI, consultez la section Gestion des groupes de consommateurs dans la documentation de Kafka.

Les autorisations suivantes dans votre AWS compte :

  • Autorisation de créer et de gérer une fonction Lambda.

  • Autorisation de créer des IAM politiques et de les associer à votre fonction Lambda.

  • Autorisation de créer des VPC points de terminaison Amazon et de modifier la configuration réseau dans l'Amazon VPC hébergeant votre MSK cluster Amazon.

Configurer la connectivité réseau pour que Lambda communique avec Amazon MSK

AWS PrivateLink À utiliser pour connecter Lambda et Amazon. MSK Vous pouvez le faire en créant une interface Amazon VPC endpoints dans la VPC console Amazon. Pour plus d'informations sur la configuration réseau, consultezConfigurer la sécurité réseau.

Lorsqu'un mappage de source d'MSKévénements Amazon s'exécute pour le compte d'une fonction Lambda, il assume le rôle d'exécution de la fonction Lambda. Ce IAM rôle autorise le mappage à accéder à des ressources sécurisées parIAM, telles que votre MSK cluster Amazon. Bien que les composants partagent un rôle d'exécution, le MSK mappage Amazon et votre fonction Lambda ont des exigences de connectivité distinctes pour leurs tâches respectives, comme le montre le schéma suivant.

Une fonction Lambda interroge un cluster et communique avec Lambda en utilisant. AWS STS

Le mappage de votre source d'événements appartient au groupe de sécurité de votre MSK cluster Amazon. Au cours de cette étape de mise en réseau, créez des VPC points de terminaison Amazon à partir de votre MSK cluster Amazon VPC pour connecter le mappage des sources d'événements au Lambda STS et aux services. Sécurisez ces points de terminaison pour accepter le trafic provenant du groupe de sécurité de votre MSK cluster Amazon. Ajustez ensuite les groupes de sécurité du MSK cluster Amazon pour permettre au mappage des sources d'événements de communiquer avec le MSK cluster Amazon.

Vous pouvez configurer les étapes suivantes à l'aide du AWS Management Console.

Pour configurer les VPC points de terminaison Amazon de l'interface afin de connecter Lambda et Amazon MSK
  1. Créez un groupe de sécurité pour votre interface Amazon VPC endpointsendpointSecurityGroup, qui autorise le TCP trafic entrant sur 443 depuis. clusterSecurityGroups Suivez la procédure décrite dans Créer un groupe de sécurité dans la EC2 documentation Amazon pour créer un groupe de sécurité. Suivez ensuite la procédure décrite dans Ajouter des règles à un groupe de sécurité dans la EC2 documentation Amazon pour ajouter les règles appropriées.

    Créez un groupe de sécurité avec les informations suivantes :

    Lorsque vous ajoutez vos règles de trafic entrant, créez une règle pour chaque groupe de sécurité dansclusterSecurityGroups. Pour chaque règle :

    • Pour Type, sélectionnez HTTPS.

    • Pour Source, sélectionnez l'un desclusterSecurityGroups.

  2. Créez un point de terminaison connectant le service Lambda à l'Amazon VPC contenant votre cluster AmazonMSK. Suivez la procédure décrite dans Créer un point de terminaison d'interface.

    Créez un point de terminaison d'interface avec les informations suivantes :

    • Dans Nom du servicecom.amazonaws.regionName.lambda, sélectionnez où regionName héberge votre fonction Lambda.

    • Pour VPC, sélectionnez l'Amazon VPC contenant votre MSK cluster Amazon.

    • Pour les groupes de sécuritéendpointSecurityGroup, sélectionnez ceux que vous avez créés précédemment.

    • Pour les sous-réseaux, sélectionnez les sous-réseaux qui hébergent votre cluster AmazonMSK.

    • Pour Policy, fournissez le document de politique suivant, qui sécurise le point de terminaison afin qu'il soit utilisé par le principal de service Lambda pour lambda:InvokeFunction l'action.

      { "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
    • Assurez-vous que le DNS nom Enable reste défini.

  3. Créez un point de terminaison connectant le AWS STS service à l'Amazon VPC contenant votre MSK cluster Amazon. Suivez la procédure décrite dans Créer un point de terminaison d'interface.

    Créez un point de terminaison d'interface avec les informations suivantes :

    • Pour Nom du service, sélectionnez AWS STS.

    • Pour VPC, sélectionnez l'Amazon VPC contenant votre MSK cluster Amazon.

    • Pour les groupes de sécurité, sélectionnezendpointSecurityGroup.

    • Pour les sous-réseaux, sélectionnez les sous-réseaux qui hébergent votre cluster AmazonMSK.

    • Pour Policy, fournissez le document de politique suivant, qui sécurise le point de terminaison afin qu'il soit utilisé par le principal de service Lambda pour sts:AssumeRole l'action.

      { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
    • Assurez-vous que le DNS nom Enable reste défini.

  4. Pour chaque groupe de sécurité associé à votre MSK cluster Amazon, c'est-à-dire dansclusterSecurityGroups, autorisez les éléments suivants :

    • Autorisez tout le TCP trafic entrant et sortant du 9098 à tousclusterSecurityGroups, y compris à l'intérieur de celui-ci.

    • Autoriser tout le TCP trafic sortant sur le 443.

    Une partie de ce trafic est autorisée par les règles des groupes de sécurité par défaut. Par conséquent, si votre cluster est attaché à un seul groupe de sécurité et que ce groupe possède des règles par défaut, des règles supplémentaires ne sont pas nécessaires. Pour ajuster les règles des groupes de sécurité, suivez les procédures décrites dans Ajouter des règles à un groupe de sécurité dans la EC2 documentation Amazon.

    Ajoutez des règles à vos groupes de sécurité avec les informations suivantes :

    • Pour chaque règle entrante ou sortante pour le port 9098, fournissez

      • Pour Type, sélectionnez Personnalisé TCP.

      • Pour la plage de ports, indiquez 9098.

      • Pour Source, indiquez l'un desclusterSecurityGroups.

    • Pour chaque règle entrante pour le port 443, sélectionnez HTTPSType.

Créez un IAM rôle pour que Lambda puisse lire un extrait de votre rubrique Amazon MSK

Identifiez les exigences d'authentification pour que Lambda puisse lire des articles de votre rubrique MSK Amazon, puis définissez-les dans une politique. Créez un rôle qui autorise Lambda à utiliser ces autorisations. lambdaAuthRole Autorisez les actions sur votre MSK cluster Amazon à l'aide d'kafka-clusterIAMactions. Autorisez ensuite Lambda à effectuer les EC2 actions Amazon et MSK kafka Amazon nécessaires pour découvrir votre MSK cluster Amazon et s'y connecter, ainsi que des CloudWatch actions afin que Lambda puisse enregistrer ce qu'il a fait.

Pour décrire les exigences d'authentification pour que Lambda puisse lire depuis Amazon MSK
  1. Rédigez un document de IAM politique (un JSON document) qui permet à Lambda de lire un extrait de votre sujet Kafka dans votre MSK cluster Amazon en utilisant votre groupe de consommateurs Kafka. clusterAuthPolicy Lambda nécessite qu'un groupe de consommateurs Kafka soit défini lors de la lecture.

    Modifiez le modèle suivant pour l'aligner sur vos prérequis :

    { "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/mskClusterName/cluster-uuid", "arn:aws:kafka:region:account-id:topic/mskClusterName/cluster-uuid/mskTopicName", "arn:aws:kafka:region:account-id:group/mskClusterName/cluster-uuid/mskGroupName" ] } ] }

    Pour plus d'informations, consultezAuthentification basée sur les rôles IAM. Lorsque vous rédigez votre politique :

    • Pour region etaccount-id, fournissez ceux qui hébergent votre MSK cluster Amazon.

    • PourmskClusterName, indiquez le nom de votre MSK cluster Amazon.

    • Pourcluster-uuid, fournissez le UUID in ARN pour votre MSK cluster Amazon.

    • PourmskTopicName, indiquez le nom de votre sujet Kafka.

    • PourmskGroupName, indiquez le nom de votre groupe de consommateurs Kafka.

  2. Identifiez AmazonMSK, Amazon EC2 et CloudWatch les autorisations requises pour que Lambda découvre et connecte votre MSK cluster Amazon, puis enregistrez ces événements.

    La politique AWSLambdaMSKExecutionRole gérée définit de manière permissive les autorisations requises. Utilisez-le dans les étapes suivantes.

    Dans un environnement de production, déterminez si vous AWSLambdaMSKExecutionRole souhaitez restreindre votre politique de rôle d'exécution sur la base du principe du moindre privilège, puis rédigez une politique pour votre rôle qui remplace cette politique gérée.

Pour plus de détails sur le langage de IAM politique, consultez la IAMdocumentation.

Maintenant que vous avez rédigé votre document de stratégie, créez-en une IAM afin de pouvoir l'associer à votre rôle. Vous pouvez le faire à l'aide de la console en suivant la procédure suivante.

Pour créer une IAM politique à partir de votre document de stratégie
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le panneau de navigation de gauche, choisissez Politiques.

  3. Choisissez Create Policy (Créer une politique).

  4. Dans la section Éditeur de politiques, choisissez l'JSONoption.

  5. CollerclusterAuthPolicy.

  6. Lorsque vous avez fini d'ajouter des autorisations à la politique, choisissez Suivant.

  7. Sur la page Vérifier et créer, tapez un Nom de politique et une Description (facultative) pour la politique que vous créez. Vérifiez les Autorisations définies dans cette politique pour voir les autorisations accordées par votre politique.

  8. Choisissez Create policy (Créer une politique) pour enregistrer votre nouvelle politique.

Pour plus d'informations, consultez la section Création IAM de politiques dans la IAM documentation.

Maintenant que vous disposez des IAM politiques appropriées, créez un rôle et associez-le à celui-ci. Vous pouvez le faire à l'aide de la console en suivant la procédure suivante.

Pour créer un rôle d'exécution dans la console IAM
  1. Ouvrez la page Roles (Rôles) dans la console IAM.

  2. Choisissez Create role (Créer un rôle).

  3. Sous Trusted entity type (Type d'entité approuvée), choisissez service AWS .

  4. Sous Cas d'utilisation, choisissez Lambda.

  5. Choisissez Suivant.

  6. Sélectionnez les stratégies suivantes :

    • clusterAuthPolicy

    • AWSLambdaMSKExecutionRole

  7. Choisissez Suivant.

  8. Dans Nom du rôle, entrez lambdaAuthRole puis choisissez Créer un rôle.

Pour de plus amples informations, veuillez consulter Définition des autorisations de fonction Lambda avec un rôle d’exécution.

Créez une fonction Lambda pour lire un extrait de votre rubrique Amazon MSK

Créez une fonction Lambda configurée pour utiliser votre IAM rôle. Vous pouvez créer votre fonction Lambda à l'aide de la console.

Pour créer une fonction Lambda à l'aide de votre configuration d'authentification
  1. Ouvrez la console Lambda et sélectionnez Create function dans l'en-tête.

  2. Sélectionnez Créer à partir de zéro.

  3. Pour Nom de la fonction, indiquez le nom approprié de votre choix.

  4. Pour Runtime, choisissez la dernière version prise en charge de Node.js pour utiliser le code fourni dans ce didacticiel.

  5. Choisissez Modifier le rôle d'exécution par défaut.

  6. Sélectionnez Utiliser un rôle existant.

  7. Pour Rôle existant, sélectionnezlambdaAuthRole.

Dans un environnement de production, vous devez généralement ajouter des politiques supplémentaires au rôle d'exécution de votre fonction Lambda afin de traiter de manière significative vos événements Amazon. MSK Pour plus d'informations sur l'ajout de politiques à votre rôle, consultez la section Ajouter ou supprimer des autorisations d'identité dans la IAM documentation.

Créez une source d'événement mappée à votre fonction Lambda

Le mappage de votre source d'MSKévénements Amazon fournit au service Lambda les informations nécessaires pour appeler votre Lambda lorsque des événements Amazon appropriés se produisent. MSK Vous pouvez créer un MSK mappage Amazon à l'aide de la console. Créez un déclencheur Lambda, puis le mappage des sources d'événements est automatiquement configuré.

Pour créer un déclencheur Lambda (et un mappage des sources d'événements)
  1. Accédez à la page de présentation de votre fonction Lambda.

  2. Dans la section de présentation des fonctions, choisissez Ajouter un déclencheur en bas à gauche.

  3. Dans le menu déroulant Sélectionnez une source, sélectionnez Amazon MSK.

  4. Ne configurez pas l'authentification.

  5. Pour le MSKcluster, sélectionnez le nom de votre cluster.

  6. Pour Taille du lot, entrez 1. Cette étape facilite le test de cette fonctionnalité et ne constitue pas une valeur idéale en production.

  7. Dans le champ Nom du sujet, indiquez le nom de votre sujet Kafka.

  8. Pour l'identifiant du groupe de consommateurs, indiquez l'identifiant de votre groupe de consommateurs Kafka.

Mettez à jour votre fonction Lambda pour lire vos données de streaming

Lambda fournit des informations sur les événements Kafka via le paramètre de méthode d'événement. Pour un exemple de structure d'un MSK événement Amazon, consultez Exemple d’évènement. Après avoir compris comment interpréter les MSK événements Amazon transférés par Lambda, vous pouvez modifier le code de votre fonction Lambda pour utiliser les informations qu'ils fournissent.

Fournissez le code suivant à votre fonction Lambda pour enregistrer le contenu d'un MSK événement Lambda Amazon à des fins de test :

.NET
AWS SDK for .NET
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda en utilisant. NET.

using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.KafkaEvents; // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace MSKLambda; public class Function { /// <param name="input">The event for the Lambda function handler to process.</param> /// <param name="context">The ILambdaContext that provides methods for logging and describing the Lambda environment.</param> /// <returns></returns> public void FunctionHandler(KafkaEvent evnt, ILambdaContext context) { foreach (var record in evnt.Records) { Console.WriteLine("Key:" + record.Key); foreach (var eventRecord in record.Value) { var valueBytes = eventRecord.Value.ToArray(); var valueText = Encoding.UTF8.GetString(valueBytes); Console.WriteLine("Message:" + valueText); } } } }
Go
SDKpour Go V2
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda à l'aide de Go.

package main import ( "encoding/base64" "fmt" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(event events.KafkaEvent) { for key, records := range event.Records { fmt.Println("Key:", key) for _, record := range records { fmt.Println("Record:", record) decodedValue, _ := base64.StdEncoding.DecodeString(record.Value) message := string(decodedValue) fmt.Println("Message:", message) } } } func main() { lambda.Start(handler) }
Java
SDKpour Java 2.x
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda à l'aide de Java.

import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.KafkaEvent; import com.amazonaws.services.lambda.runtime.events.KafkaEvent.KafkaEventRecord; import java.util.Base64; import java.util.Map; public class Example implements RequestHandler<KafkaEvent, Void> { @Override public Void handleRequest(KafkaEvent event, Context context) { for (Map.Entry<String, java.util.List<KafkaEventRecord>> entry : event.getRecords().entrySet()) { String key = entry.getKey(); System.out.println("Key: " + key); for (KafkaEventRecord record : entry.getValue()) { System.out.println("Record: " + record); byte[] value = Base64.getDecoder().decode(record.getValue()); String message = new String(value); System.out.println("Message: " + message); } } return null; } }
JavaScript
SDKpour JavaScript (v3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda en utilisant. JavaScript

exports.handler = async (event) => { // Iterate through keys for (let key in event.records) { console.log('Key: ', key) // Iterate through records event.records[key].map((record) => { console.log('Record: ', record) // Decode base64 const msg = Buffer.from(record.value, 'base64').toString() console.log('Message:', msg) }) } }
PHP
SDK pour PHP
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda en utilisant. PHP

<?php // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // using bref/bref and bref/logger for simplicity use Bref\Context\Context; use Bref\Event\Kafka\KafkaEvent; use Bref\Event\Handler as StdHandler; use Bref\Logger\StderrLogger; require __DIR__ . '/vendor/autoload.php'; class Handler implements StdHandler { private StderrLogger $logger; public function __construct(StderrLogger $logger) { $this->logger = $logger; } /** * @throws JsonException * @throws \Bref\Event\InvalidLambdaEvent */ public function handle(mixed $event, Context $context): void { $kafkaEvent = new KafkaEvent($event); $this->logger->info("Processing records"); $records = $kafkaEvent->getRecords(); foreach ($records as $record) { try { $key = $record->getKey(); $this->logger->info("Key: $key"); $values = $record->getValue(); $this->logger->info(json_encode($values)); foreach ($values as $value) { $this->logger->info("Value: $value"); } } catch (Exception $e) { $this->logger->error($e->getMessage()); } } $totalRecords = count($records); $this->logger->info("Successfully processed $totalRecords records"); } } $logger = new StderrLogger(); return new Handler($logger);
Python
SDKpour Python (Boto3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda à l'aide de Python.

import base64 def lambda_handler(event, context): # Iterate through keys for key in event['records']: print('Key:', key) # Iterate through records for record in event['records'][key]: print('Record:', record) # Decode base64 msg = base64.b64decode(record['value']).decode('utf-8') print('Message:', msg)
Ruby
SDKpour Ruby
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples sans serveur.

Utilisation d'un MSK événement Amazon avec Lambda à l'aide de Ruby.

require 'base64' def lambda_handler(event:, context:) # Iterate through keys event['records'].each do |key, records| puts "Key: #{key}" # Iterate through records records.each do |record| puts "Record: #{record}" # Decode base64 msg = Base64.decode64(record['value']) puts "Message: #{msg}" end end end

Vous pouvez fournir un code de fonction à votre Lambda à l'aide de la console.

Pour mettre à jour le code de fonction à l’aide de l’éditeur de code de la console
  1. Ouvrez la page Fonctions de la console Lambda et choisissez votre fonction.

  2. Sélectionnez l’onglet Code.

  3. Dans le volet Source du code, sélectionnez votre fichier de code source et modifiez-le dans l’éditeur de code intégré.

  4. Dans la DEPLOYsection, choisissez Deploy pour mettre à jour le code de votre fonction :

    Bouton de déploiement dans l'éditeur de code de la console Lambda

Testez votre fonction Lambda pour vérifier qu'elle est connectée à votre rubrique Amazon MSK

Vous pouvez désormais vérifier si votre Lambda est invoqué par la source d'événements en consultant les journaux d'événements. CloudWatch

Pour vérifier si votre fonction Lambda est invoquée
  1. Utilisez votre hôte d'administration Kafka pour générer des événements Kafka à l'aide du. kafka-console-producer CLI Pour plus d'informations, voir Écrire des événements dans le sujet dans la documentation de Kafka. Envoyez suffisamment d'événements pour remplir le lot défini en fonction de la taille du lot pour le mappage de votre source d'événements défini à l'étape précédente, sinon Lambda attendra d'autres informations pour appeler.

  2. Si votre fonction s'exécute, Lambda écrit ce qui s'est passé à. CloudWatch Dans la console, accédez à la page détaillée de votre fonction Lambda.

  3. Sélectionnez l'onglet Configuration.

  4. Dans la barre latérale, sélectionnez Outils de surveillance et d'exploitation.

  5. Identifiez le groupe de CloudWatch journaux sous Configuration de la journalisation. Le groupe de journaux doit commencer par/aws/lambda. Choisissez le lien vers le groupe de journaux.

  6. Dans la CloudWatch console, examinez les événements du journal pour les événements du journal que Lambda a envoyés au flux de journal. Identifiez s'il existe des événements de journal contenant le message de votre événement Kafka, comme dans l'image suivante. Si tel est le cas, vous avez connecté avec succès une fonction Lambda à Amazon à l'MSKaide d'un mappage de source d'événements Lambda.

    Un événement de journal CloudWatch affichant les informations sur les événements extraites par le code fourni.