Utilisation d'une fonction Lambda en tant que sortie - Manuel du développeur des applications Amazon Kinesis Data Analytics pour SQL

Pour les nouveaux projets, nous vous recommandons d’utiliser le nouveau service géré pour Apache Flink Studio plutôt que les applications Kinesis Data Analytics pour SQL. Le service géré pour Apache Flink Studio allie facilité d’utilisation et capacités analytiques avancées, ce qui vous permet de créer des applications sophistiquées de traitement des flux en quelques minutes.

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.

Utilisation d'une fonction Lambda en tant que sortie

L'utilisation AWS Lambda comme destination vous permet d'effectuer plus facilement le post-traitement de vos résultats SQL avant de les envoyer vers une destination finale. Les tâches de post-traitement courantes sont les suivantes :

  • Agrégation de plusieurs lignes dans un seul enregistrement

  • Combinaison des résultats actuels avec des résultats antérieurs afin de mieux gérer les données tardives

  • Diffusion vers différentes destinations en fonction du type d'information

  • Traduction des formats d'enregistrement (par exemple, traduction en Protobuf)

  • Manipulation ou transformation des chaînes

  • Enrichissement des données après traitement analytique

  • Traitement personnalisé pour les cas d'utilisation de géolocalisation

  • Chiffrement des données

Les fonctions Lambda peuvent fournir des informations analytiques à divers AWS services et à d'autres destinations, notamment les suivantes :

Pour plus d’informations sur la création d’applications Lambda, consultez Mise en route avec AWS Lambda.

Autorisations de la fonction Lambda utilisée en tant que sortie

Pour utiliser Lambda comme sortie, le rôle IAM de sortie Lambda de l’application a besoin de la stratégie d’autorisations suivante :

{ "Sid": "UseLambdaFunction", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": "FunctionARN" }

Métriques de la fonction Lambda utilisée en tant que sortie

Vous utilisez Amazon CloudWatch pour surveiller le nombre d'octets envoyés, les réussites et les échecs, etc. Pour plus d'informations sur CloudWatch les métriques émises par Kinesis Data Analytics à l'aide de Lambda comme sortie, consultez Amazon Kinesis Analytics Metrics.

Modèle de données d'entrée d'événement et modèle de réponse d'enregistrement pour une fonction Lambda utilisée comme sortie

Pour envoyer des enregistrements de sortie Kinesis Data Analytics, votre fonction Lambda doit être conforme aux modèles de données d’entrée d’événement et de réponse d’enregistrement imposés.

Modèle de données d'entrée d'événement

Kinesis Data Analytics envoie continuellement les enregistrements de sortie de l’application à la fonction Lambda en tant que sortie en suivant le modèle de requête ci-dessous. Dans votre fonction, vous effectuez une itération dans la liste et appliquez votre logique métier pour réaliser vos exigences de sortie (par exemple, transformation des données avant envoi vers une destination finale).

Champ Description
invocationId ID d’appel Lambda (GUID aléatoire).
applicationArn Amazon Resource Name (ARN) de l’application Kinesis Data Analytics.
enregistrements
Champ Description
recordId ID d'enregistrement (GUID aléatoire)
lambdaDeliveryRecordMetadata
Champ Description
retryHint Nombre de nouvelles tentatives de diffusion
data Charge utile d'enregistrement de sortie codée en base64
Note

Le retryHint est une valeur qui augmente à chaque échec de diffusion. Cette valeur n'est pas conservée durablement et est réinitialisée en cas d'interruption de l'application.

Modèle de réponse d'enregistrement

Chaque enregistrement envoyé à votre fonction Lambda en tant que sortie (avec des ID d’enregistrements) doit être confirmé par Ok ou DeliveryFailed et doit contenir les paramètres suivants. À défaut, Kinesis Data Analytics les traite comme un échec de diffusion.

enregistrements
Champ Description
recordId L’ID d’enregistrement est transmis depuis Kinesis Data Analytics vers Lambda pendant l’invocation. La moindre incohérence entre l'ID de l'enregistrement initial et l'ID de l'enregistrement conformé est traitée comme un échec de diffusion.
result État de la diffusion de l'enregistrement. Les valeurs admises sont les suivantes :
  • Ok : l’enregistrement a bien été transformé et envoyé vers la destination finale. Kinesis Data Analytics reçoit l’enregistrement pour le traitement SQL.

  • DeliveryFailed : l’enregistrement n’a pas pu être envoyé vers la destination finale par la fonction Lambda en tant que sortie. Kinesis Data Analytics tente en continu de renvoyer les enregistrements qui n’ont pas pu être diffusés vers la fonction Lambda en tant que sortie.

Fréquence d'appel de sortie Lambda

Une application Kinesis Data Analytics place les enregistrements de sortie dans la mémoire tampon et appelle fréquemment la fonction de destination AWS Lambda .

  • Si des enregistrements sont émis vers le flux intégré à l'application de destination au sein de l'application d'analyse de données sous forme de fenêtre de basculement, la fonction de AWS Lambda destination est invoquée par déclencheur de fenêtre de basculement. Par exemple, si une fenêtre bascule de 60 secondes est utilisée pour transmettre les enregistrements vers le flux de destination intégré à l’application, la fonction Lambda est appelée une fois toutes les 60 secondes.

  • Si des enregistrements sont émis vers le flux de destination intégré à l’application au sein de l’application sous la forme d’une requête continue ou d’une fenêtre défilante, la fonction Lambda de destination est appelée environ une fois par seconde.

Note

Les limites de taille de la charge utile pour les demandes d’invocation par fonction Lambda s’appliquent. Si ces limites sont dépassées, les enregistrements de sortie sont fractionnés et envoyés sur plusieurs appels de fonction Lambda.

Ajout d’une fonction Lambda pour une utilisation en tant que sortie

La procédure suivante explique comment ajouter une fonction Lambda en tant que sortie pour une application Kinesis Data Analytics.

  1. Connectez-vous à la console Managed Service for Apache Flink AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/kinesisanalytics.

  2. Choisissez l'application dans la liste, puis sélectionnez Application details.

  3. Dans la section Destination, choisissez Connect new destination.

  4. Pour l'élément Destination, choisissez la fonctionAWS Lambda .

  5. Dans la section Diffuser des enregistrements vers AWS Lambda, choisissez une fonction et une version Lambda existantes ou cliquez sur Créer.

  6. Si vous créez une nouvelle fonction Lambda, procédez comme suit :

    1. Choisissez l'un des modèles fournis. Pour plus d’informations, veuillez consulter Création de fonctions Lambda pour des destinations d’application.

    2. La page Create Function (Créer une fonction) s'ouvre dans un nouvel onglet du navigateur web. Dans la zone Nom, attribuez à la fonction un nom significatif (par exemple, myLambdaFunction).

    3. Mettez à jour le modèle avec la fonctionnalité de post-traitement pour votre application. Pour plus d’informations sur la création d’une fonction Lambda, consultez Mise en route dans le Manuel du développeurAWS Lambda .

    4. Dans la console Kinesis Data Analytics, dans la liste de fonctions Lambda, choisissez la fonction Lambda que vous venez de créer. Sélectionnez $LATEST pour la version de la fonction Lambda.

  7. Dans la section In-application stream, sélectionnez Choose an existing in-application stream. Dans le champ In-application stream name, choisissez le flux de sortie de votre application. Les résultats du flux de sortie sélectionné sont envoyés à la fonction de sortie Lambda.

  8. Conservez les valeurs par défaut pour les autres champs du formulaire, puis cliquez sur Save and continue.

Votre application envoie désormais à votre fonction Lambda les enregistrements du flux intégré à l’application. Vous pouvez consulter les résultats du modèle par défaut dans la CloudWatch console Amazon. Surveillez la métrique AWS/KinesisAnalytics/LambdaDelivery.OkRecords pour voir le nombre d’enregistrements envoyés à la fonction Lambda.

Échecs courants associés à l'utilisation de Lambda en tant que sortie

Voici quelques raisons courantes qui peuvent expliquer un échec de diffusion vers une fonction Lambda.

  • Tous les enregistrements (avec ID d’enregistrement) d’un lot qui sont envoyés à la fonction Lambda ne sont pas renvoyés au service Kinesis Data Analytics.

  • L'ID d'enregistrement ou le champ d'état est manquant dans la réponse.

  • Les délais d’expiration de la fonction Lambda ne sont pas suffisants pour réaliser la logique métier au sein de la fonction Lambda.

  • La logique métier au sein de la fonction Lambda ne repère pas toutes les erreurs, ce qui se traduit par une expiration du délai d'attente et par une pression de retour en raison d'exceptions non traitées. C'est ce que l'on appelle communément les messages « poison pill ».

En cas d’échec de diffusion des données, Kinesis Data Analytics continue de relancer les invocations Lambda sur le même ensemble d’enregistrements jusqu’à ce que cela aboutisse. Pour mieux comprendre les défaillances, vous pouvez surveiller les CloudWatch indicateurs suivants :

  • L'application Lambda de l'application Kinesis Data Analytics en tant que métriques CloudWatch de sortie : indique le nombre de réussites et d'échecs, entre autres statistiques. Pour plus d'informations, consultez Métriques Amazon Kinesis Analytics.

  • AWS Lambda CloudWatch métriques et journaux des fonctions.