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.
Pour traiter les messages Amazon SQS avec Lambda, configurez votre file d’attente avec les paramètres appropriés, puis créez un mappage des sources d’événements Lambda.
Configuration d’une file d’attente à utiliser avec Lambda
Si vous n’avez pas encore de file d’attente Amazon SQS, créez-en une à utiliser en tant que source d’événement pour votre fonction Lambda. La fonction Lambda et la file d'attente Amazon SQS doivent être Région AWS identiques, bien qu'elles puissent être différentes. Comptes AWS
Pour laisser à votre fonction le temps 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 sur votre fonction. Le délai supplémentaire permet à Lambda d’effectuer une nouvelle tentative si l’exécution de la fonction est limitée pendant le traitement d’un lot précédent.
Par défaut, si Lambda rencontre une erreur à un moment donné lors du traitement d’un lot, tous les messages de ce lot retournent dans la file d’attente. Après le délai de visibilité, les messages redeviennent visibles pour Lambda. Vous pouvez configurer le mappage des sources d’événements pour utiliser les réponses par lots partielles afin que seuls les messages ayant échoué soient renvoyés dans la file d’attente. En outre, en cas d’échec répété du traitement d’un message, Amazon SQS peut envoyer celui-ci à une file d’attente de lettres mortes. Nous vous recommandons de définir maxReceiveCount
sur la stratégie de redirection de votre file d’attente source sur au moins 5. Cela donne à Lambda la possibilité d’effectuer quelques tentatives avant d’envoyer les messages ayant échoué directement à la file d’attente de lettres mortes.
Configuration des autorisations de 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 des sources 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 des sources d’événements SQS à partir de la console en suivant les étapes suivantes.
Pour ajouter des autorisations et créer un déclencheur
Ouvrez la page Functions
(Fonctions) de la console Lambda. -
Choisissez le nom d’une fonction.
-
Choisissez l’onglet Configuration, puis Permissions (Autorisations).
-
Sous Nom du rôle, cliquez sur le lien vers votre rôle d’exécution. Ce lien ouvre le rôle dans la console IAM.
-
Choisissez Ajouter des autorisations, puis Attacher des politiques.
-
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. -
Revenez à votre fonction dans la console Lambda. Sous Function overview (Vue d’ensemble de la fonction), choisissez Add trigger (Ajouter un déclencheur).
-
Choisissez un type de déclencheur.
-
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. La fonction Lambda et la file d'attente Amazon SQS doivent être Région AWS identiques, bien qu'elles puissent être différentes. Comptes AWS
- 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’attente de votre fonction
de façon à laisser suffisamment de temps pour traiter le lot entier d’éléments. 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 registres du lot à la fonction en un seul appel, tant que la taille totale des événements ne dépasse pas le quota de taille des données utiles d’invocation pour une invocation 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 lot 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 de plus amples informations, veuillez consulter Configuration de la simultanéité maximale pour les sources d’événements Amazon SQS.
- Critères de filtrage
-
Ajoutez des critères de filtrage pour contrôler les événements que Lambda envoie à votre fonction pour traitement. Pour de plus amples informations, veuillez consulter Contrôle des événements envoyés par Lambda à votre fonction.