Lorsque j'invoque le mappage des sources d'événements AWS Lambda (ESM) via le mode EFO (diffusion améliorée Amazon Kinesis), des métriques s’affichent pour GetRecords.
Brève description
Pour les flux de données Kinesis standard, Lambda interroge les partitions de votre flux pour les enregistrements à raison d'une fois par seconde pour chaque partition. Pour Kinesis EFO, Lambda utilise une connexion HTTP/2 pour écouter les enregistrements transmis à partir de Kinesis. Lorsque des enregistrements sont disponibles, Lambda appelle votre fonction et attend le résultat.
Résolution
Pour résoudre ce problème, procédez comme suit :
Confirmez vos autorisations
Les autorisations suivantes sont requises pour créer une fonction Lambda et configurer l'activation de Kinesis auprès d'un consommateur EFO :
kinesis:GetRecords
kinesis:GetShardIterator
Ces autorisations sont incluses dans la stratégie gérée AWSLambdaKinesisExecutionRole, qui prend en charge les consommateurs standard et EFO. Si les autorisations précédentes sont manquantes dans le rôle d'exécution, l'erreur suivante s'affiche : « An Error occurred when creating the trigger: Cannot access event source <Kinesis stream ARN>. »
Vérifiez que votre rôle AWS Identity and Access Management (IAM) dispose des autorisations suivantes : Effectuez les actions DescribeStreamSummary, ListShards, GetShardIterator et GetRecords sur votre flux et l’action SubscribeToShard sur votre consommateur.
Confirmez votre mappage de sources d’événements
Lorsque le mappage des sources d'événements Lambda est configuré avec un consommateur de flux Kinesis EFO, la fonction Lambda peut gérer les messages provenant du flux Kinesis spécifié. La métrique Amazon CloudWatch GetRecords Kinesis n'est pas présente pour les invocations Lambda réussis. Ce comportement est normal car Lambda ESM utilise un consommateur de diffusion améliorée basé sur la technologie push.
Confirmez les métriques CloudWatch vues et expliquez-les
Si l'invocation Lambda échoue, le service Lambda essaie de traiter le même lot plusieurs fois (en fonction du nombre maximal de nouvelles tentatives configuré). Au cours de ces nouvelles tentatives, les métriques de l'appel d'API GetRecords sont affichées. Cela est dû au fait que le service Lambda interroge l'enregistrement de la partition pour détecter l'échec de la tentative d'invocation de Lambda. L'interrogation de l'enregistrement est un appel d'API GetRecords qui aboutit à un point de données de métrique associé.
Informations connexes
Dimensions et métriques Amazon Kinesis Data Streams