Création et configuration d'un mappage de source d'événements Amazon SQS - 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.

Création et configuration d'un mappage de source d'événements Amazon SQS

Pour traiter les messages Amazon SQS avec Lambda, configurez votre file d'attente avec les paramètres appropriés, puis créez un mappage de source d'événements Lambda.

Configuration d’une file d’attente à utiliser avec Lambda

Si vous ne possédez pas encore de file d'attente Amazon SQS, créez-en une qui servira de source d'événements pour votre fonction Lambda. Configurez ensuite la file d'attente pour laisser suffisamment de temps à votre fonction Lambda pour traiter chaque lot d'événements.

Pour laisser le temps à votre fonction de traiter chaque lot d'enregistrements, définissez le délai de visibilité de la file d'attente source à au moins six fois le délai de configuration de votre fonction. Ce délai supplémentaire permet à Lambda de réessayer si votre fonction est limitée lors du traitement d'un lot précédent.

Par défaut, si Lambda rencontre une erreur à un moment quelconque lors du traitement d'un lot, tous les messages de ce lot retournent dans la file d'attente. Après l'expiration du délai de visibilité, les messages redeviennent visibles pour Lambda. Vous pouvez configurer le mappage de votre source d'événements pour utiliser des réponses par lots partielles afin de renvoyer uniquement les messages ayant échoué dans la file d'attente. En outre, si votre fonction ne parvient pas à traiter un message plusieurs fois, Amazon SQS peut l'envoyer vers une file d'attente de lettres mortes. Nous vous recommandons de définir maxReceiveCount la politique de redrive de votre file d'attente source sur au moins 5. Cela donne à Lambda quelques chances de réessayer avant d'envoyer les messages ayant échoué directement à la file d'attente des lettres mortes.

Configuration des autorisations du rôle d'exécution Lambda

La politique AWSLambdaSQSQueueExecutionRole AWS gérée inclut les autorisations dont Lambda a besoin pour lire depuis votre file d'attente Amazon SQS. Vous pouvez ajouter cette politique gérée au rôle d'exécution de votre fonction.

En option, si vous utilisez une file d’attente chiffrée, vous devez également ajouter l’autorisation suivante à votre rôle d’exécution :

Création d'un mappage de source d'événements SQS

Créez un mappage de source d’événement pour indiquer à Lambda d’envoyer des éléments de votre file d’attente à une fonction Lambda. Vous pouvez créer plusieurs mappages de source d’événement pour traiter des éléments de plusieurs files d’attente avec une seule fonction. Quand Lambda invoque la fonction cible, l’événement peut contenir plusieurs éléments, jusqu’à une taille de lot maximale configurable.

Pour configurer votre fonction afin qu'elle puisse lire depuis Amazon SQS, associez la politique AWSLambdaSQSQueueExecutionRole AWS gérée à votre rôle d'exécution. Créez ensuite un mappage de source d'événement SQS à partir de la console en suivant les étapes suivantes.

Pour ajouter des autorisations et créer un déclencheur
  1. Ouvrez la page Functions (Fonctions) de la console Lambda.

  2. Choisissez le nom d’une fonction.

  3. Choisissez l'onglet Configuration, puis Permissions (Autorisations).

  4. Sous Nom du rôle, choisissez le lien vers votre rôle d'exécution. Ce lien ouvre le rôle dans la console IAM.

    Lien vers le rôle d'exécution
  5. Choisissez Ajouter des autorisations, puis Attacher des politiques.

    Joindre des politiques dans la console IAM
  6. Dans le champ de recherche, entrez AWSLambdaSQSQueueExecutionRole. Ajoutez cette politique à votre rôle d'exécution. Il s'agit d'une politique AWS gérée qui contient les autorisations dont votre fonction a besoin pour lire depuis une file d'attente Amazon SQS. Pour plus d'informations sur cette politique, consultez AWSLambdaSQSQueueExecutionRolela référence des politiques AWS gérées.

  7. Retournez à votre fonction dans la console Lambda. Sous Function overview (Vue d’ensemble de la fonction), choisissez Add trigger (Ajouter un déclencheur).

    Section de présentation des fonctions de la console Lambda
  8. Choisissez un type de déclencheur.

  9. Configurez les options requises, puis choisissez Add (Ajouter).

Lambda prend en charge les options de configuration suivantes pour les sources d'événements Amazon SQS :

File d’attente SQS

La file d’attente Amazon SQS à partir de laquelle lire les enregistrements.

Activation du déclencheur

L’état du mappage des sources d’événements. Activez le déclencheur est sélectionné par défaut.

Taille de lot

Le nombre maximum d’enregistrements à envoyer à la fonction dans chaque lot. Pour une file d’attente standard, cela peut aller jusqu’à 10 000 registres. Pour une file d’attente FIFO, le maximum est de 10. Pour une taille de lot supérieure à 10, vous devez également définir la fenêtre de lot (MaximumBatchingWindowInSeconds) sur au moins 1 seconde.

Configurez le délai d'expiration de votre fonction afin de disposer de suffisamment de temps pour traiter un lot complet d'articles. Si les éléments sont longs à traiter, choisissez une taille de lot plus petite. Une grande taille de lot peut améliorer l’efficacité pour des charges de travail qui sont très rapides ou qui induisent beaucoup d’efforts supplémentaires. Si vous configurez une simultanéité réservée sur votre fonction, définissez un minimum de cinq exécutions simultanées pour réduire le risque d’erreurs de limitation lorsque Lambda invoque votre fonction.

Lambda transmet tous les enregistrements du lot à la fonction en un seul appel, à condition que la taille totale des événements ne dépasse pas le quota de charge utile d'appel pour un appel synchrone (6 Mo). Des métadonnées sont générées par Lambda et Amazon SQS pour chaque registre. Ces métadonnées supplémentaires sont comptabilisées dans la taille de charge utile totale, ce qui peut entraîner l’envoi dans un lot d’un nombre total d’enregistrements inférieur à la taille du lot configuré. Les champs de métadonnées qu’Amazon SQS envoie peuvent être de longueur variable. Pour plus d'informations sur les champs de métadonnées Amazon SQS, consultez la documentation relative aux opérations d'ReceiveMessageAPI dans le manuel Amazon Simple Queue Service API Reference.

Fenêtre de lot

Intervalle de temps maximal (en secondes) pour collecter des enregistrements avant d’invoquer la fonction. Cela s’applique uniquement aux files d’attente standards.

Si vous utilisez une fenêtre de traitement par lots supérieure à 0 seconde, vous devez tenir compte de l'augmentation du temps de traitement dans le délai de visibilité de votre file d'attente. Nous vous recommandons de paramétrer votre délai de visibilité de file d’attente à six fois le délai d’expiration de la fonction, en plus de la valeur de MaximumBatchingWindowInSeconds. Cela permet à votre fonction Lambda de traiter chaque lot d’événements et de réessayer en cas d’erreur de limitation.

Lorsque les messages sont disponibles, Lambda commence à les traiter par lots. Lambda commence à traiter cinq lots à la fois avec cinq invocations simultanés de votre fonction. Si les messages sont toujours disponibles, Lambda ajoute jusqu’à 300 instances supplémentaires de votre fonction par minute, jusqu’à un maximum de 1 000 instances de fonction supplémentaires. Pour en savoir plus sur la mise à l’échelle et la simultanéité de la fonction, consultez Mise à l’échelle de fonction Lambda.

Pour traiter plus de messages, vous pouvez optimiser votre fonction Lambda pour un débit plus élevé. Pour plus d'informations, consultez Comprendre comment s' AWS Lambda adapte aux files d'attente standard Amazon SQS.

Simultanéité maximum

Le nombre maximum de fonctions simultanées que la source d’événement peut invoquer. Pour plus d’informations, consultez Configuration de la simultanéité maximale pour les sources d'SQSévénements Amazon.

Critères de filtrage

Ajoutez des critères de filtrage pour contrôler les événements que Lambda envoie à votre fonction pour traitement. Pour plus d'informations, voir Contrôlez les événements que Lambda envoie à votre fonction.