Pourquoi ma notification d'événement Amazon S3 ne déclenche-t-elle pas ma fonction Lambda ?

Dernière mise à jour : 28/12/2020

J'ai configuré une notification d'événement Amazon Simple Storage Service (Amazon S3) pour déclencher ma fonction AWS Lambda. Pourquoi la fonction ne se déclenche-t-elle pas comme prévu lorsque l'événement se produit ?

Brève description

Vérifiez que toutes les options suivantes sont correctement configurées :

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes à partir de l'interface de ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Type d'événement Amazon S3

Lorsque vous configurez une notification d'événement Amazon S3, vous devez spécifier quels types d'événements Amazon S3 pris en charge entraînent l'envoi de la notification par Amazon S3. Si un type d'événement que vous n'avez pas spécifié se produit dans votre compartiment S3, Amazon S3 n'envoie pas de notification.

Filtres de nom de clé d'objet

Si une notification d'événement Amazon S3 est configurée pour utiliser le filtrage des noms de clé d'objet, les notifications sont publiées uniquement pour les objets avec un certain préfixe de nom de clé ou suffixe.

Si vous utilisez l'un de ces caractères spéciaux dans la valeur du préfixe ou du suffixe, vous devez les entrer au format codé en URL (codé en pourcentage) :

  • Les caractères ASCII vont de 00 à 1F hexadécimal (valeurs décimales de 0 à 31) et 7F (valeur décimale 127)
  • Dollar (« $ »)
  • esperluette (« & »)
  • Signe plus (« + »)
  • virgule (« , »)
  • Deux points (« : »)
  • Point-virgule (« ; »)
  • Signe égal (« = »)
  • Point d'interrogation (« ? »)
  • Arobase (« @ »)
  • Espace (« »)

Par exemple, pour définir la valeur d'un préfixe comme « test = abc/ », entrez « test%3Dabc/ » pour sa valeur.

Remarque : un caractère générique (« * ») ne peut pas être utilisé dans les filtres comme préfixe ou suffixe pour représenter n'importe quel caractère.

Pour plus d'informations, consultez les Instructions d'attribution de noms de clé d'objet.

Autorisations Lambda

La stratégie basée sur les ressources de votre fonction Lambda doit autoriser le compartiment Amazon S3 spécifique à appeler la fonction. Lorsque vous ajoutez une nouvelle notification d'événement à l'aide de la console Amazon S3, ces autorisations sont automatiquement ajoutées à cette stratégie.

Remarque : l'ajout d'une nouvelle notification d'événement à l'aide de put-bucket-notification-configuration dans l' interface de ligne de commande AWS ne met pas à jour la stratégie de fonction Lambda. Toutefois, les notifications d'événements Amazon S3 peuvent toujours ne pas appeler votre fonction comme prévu ultérieurement si vous avez supprimé les autorisations à un moment donné.

Vérifiez la stratégie pour confirmer qu'elle dispose des autorisations requises et ajoutez-les si nécessaire. Pour plus d’informations, consultez Pourquoi l'erreur « Unable to validate the following destination configurations » (Impossible de valider les configurations de destinations suivantes) se produit-elle lors de la création d'une notification d'événement Amazon S3 permettant de déclencher ma fonction Lambda ?

Simultanéité Lambda

Votre fonction Lambda doit être configurée pour gérer les exécutions simultanées des notifications d'événements Amazon S3 entrantes. Si l'entrée des demandes est plus rapide que la capacité de mise à l’échelle de votre fonction ou si votre fonction a atteint la simultanéité maximale, Lambda limite ces demandes et se désactive avant de réessayer automatiquement.

Pour plus d'informations, consultez Appel asynchrone et Mise à l'échelle d'une fonction AWS Lambda.