Pourquoi ma notification d'évènement Amazon S3 n’appelle-t-elle pas ma fonction Lambda ?

Date de la dernière mise à jour : 15/06/2021

J'ai configuré une notification d'événement Amazon Simple Storage Service (Amazon S3) pour déclencher ma fonction AWS Lambda. La fonction n'est pas appelée lorsque l'évènement Amazon S3 se produit. Comment résoudre ce problème ?

Solution

Remarque: si vous recevez des erreurs lors de l'exécution de commandes AWS Command Line Interface (AWS CLI), assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Vérifier que votre type d'évènement Amazon S3 est correctement configuré

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 Amazon S3, alors Amazon S3 n'envoie pas de notification.

Vérifier que les filtres de noms de clés d'objets sont au format encodé en URL (encodé en pourcentage)

Si vos notifications d'évènements sont configurées pour utiliser le filtrage des noms de clé d'objet, elles sont publiées uniquement pour les objets comportant des préfixes ou des suffixes spécifiques.

Si vous utilisez des caractères spéciaux dans vos préfixes ou suffixes, vous devez les saisir au format encodé en URL (encodé en pourcentage):

  • Parenthèse (« () »)
  • 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 la section Utilisation des métadonnées d’objet.

Vérifier que la stratégie AWS Identity and Access Management (IAM) de votre fonction Lambda dispose des autorisations requises

Vérifiez votre politique basée sur les ressources de votre fonction Lambda pour confirmer qu'elle autorise votre compartiment Amazon S3 à appeler la fonction. Si ce n'est pas le cas, ajoutez les autorisations requises en suivant les instructions de la section Octroi de l'accès aux fonctions aux services AWS.

Pour plus d’informations, consultez Autorisations AWS Lambda.

Remarque : lorsque vous ajoutez une nouvelle notification d'événement à l'aide de la console Amazon S3, les autorisations requises sont automatiquement ajoutées à la politique de votre fonction. Si vous utilisez l'action put-bucket-notification-configuration dans l'interface de ligne de commande AWS pour ajouter une notification d'événement, la politique de votre fonction n'est pas mise à jour automatiquement.

Vérifier que votre fonction Lambda est configurée pour gérer les appels simultanés à partir des notifications d'évènements Amazon S3

Votre fonction Lambda doit être configurée pour gérer les appels simultanés à partir des notifications d'évènements Amazon S3. Si les demandes d’appel sont plus rapides que la capacité de mise à l’échelle de votre fonction ou si votre fonction a atteint la simultanéité maximale, Lambda limite ces demandes.

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