J’ai configuré ma notification d’événement Amazon Simple Storage Service (Amazon S3) pour invoquer ma fonction AWS Lambda. Cependant, la fonction n'est pas invoquée lorsque l'événement Amazon S3 se produit.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vérifier que votre type d’événement Amazon S3 est correctement configuré
Lorsque vous configurez S3 Event Notifications, vous devez spécifier chaque type d'événement qui entraîne l'envoi de la notification par Amazon S3. Si un type d’événement que vous n’avez pas indiqué se produit dans votre compartiment Amazon S3, Amazon S3 n’envoie pas de notification.
Par exemple, vous configurez une notification d'événement pour invoquer Lambda avec le type d'événement s3:ObjectCreated:Put. Si vous chargez un fichier volumineux, Amazon S3 utilise automatiquement le processus de chargement partitionné pour charger le fichier dans le compartiment. Pour invoquer la fonction Lambda pour ce chargement, vous devez également configurer le type d'événement s3:ObjectCreated:CompleteMultipartUpload. Vous pouvez également utiliser le type d'événement s3:ObjectCreated:* pour demander des notifications pour chaque API utilisée par Amazon S3 pour créer un objet.
Vérifier que vos filtres de nom de clé d'objet incluent le nom du fichier chargé
Si S3 Event Notifications utilise le filtrage de nom de clé d'objet, Amazon S3 publie des notifications uniquement pour les objets dotés de préfixes ou de suffixes spécifiques. Assurez-vous que les filtres de préfixe ou de suffixe spécifiés dans la notification d'événement incluent le nom de clé de l'objet chargé.
Remarque : Dans les filtres, vous ne pouvez pas utiliser de caractère générique (« * ») comme préfixe ou suffixe
Pour le filtrage des noms de clés d'objet, certains caractères spéciaux de vos préfixes ou suffixes doivent être encodés en URL (encodés en pourcentage). Par exemple, pour définir la valeur d'un préfixe comme test=abc/, saisissez la valeur encodée en URL test%3Dabc/.
Pour plus d'informations sur la gestion des caractères spécifiques dans les noms de clé d'objet, consultez la section Directives concernant la dénomination des clés d'objet.
Vérifier que la stratégie IAM basée sur les ressources de votre fonction Lambda dispose des autorisations requises afin qu'Amazon S3 puisse invoquer la fonction
Vérifiez la stratégie basée sur les ressources AWS Identity and Access Management (IAM) de votre fonction Lambda pour vérifier que la stratégie autorise votre compartiment à invoquer la fonction. Si le compartiment ne peut pas invoquer la fonction, ajoutez la stratégie requise.
Exemple de stratégie :
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "lambda-allow-s3-my-function",
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "123456789012"
},
"ArnLike": {
"AWS:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
}
}
}
]
}
Pour plus d'informations, consultez la section Gestion des autorisations dans AWS Lambda.
Remarque : Lorsque vous utilisez la console Amazon S3 pour ajouter une nouvelle notification d'événement, Amazon S3 ajoute automatiquement les autorisations requises à la stratégie basée sur les ressources de votre fonction. Toutefois, si vous utilisez la commande de l'AWS CLI put-bucket-notification-configuration pour ajouter une notification d'événement, la stratégie de votre fonction n'est pas automatiquement mise à jour.
Vérifier que votre fonction Lambda est configurée pour gérer les appels simultanés depuis S3 Event Notifications
Vous devez configurer votre fonction Lambda pour gérer les appels simultanés depuis S3 Event Notifications. Si les requêtes d'invocation arrivent plus rapidement que votre fonction ne peut évoluer ou si votre fonction atteint sa simultanéité maximale, Lambda limite les requêtes.
Pour plus d'informations, consultez la section Invocation d'une fonction Lambda de manière asynchrone.
Informations connexes
Comment puis-je utiliser AWS Systems Manager Automation pour résoudre les problèmes qui surviennent lorsque ma notification d’événement Amazon S3 n’invoque aucune fonction Lambda ?
Traiter les notifications d'événement Amazon S3 avec Lambda
Tutoriel : Utilisation d'un déclencheur Amazon S3 pour invoquer une fonction Lambda
Pourquoi l'erreur « Unable to validate the following destination configurations » s'affiche-t-elle lorsque je crée une notification d'événements Amazon S3 ?
Comment puis-je configurer une notification d'événement Amazon S3 pour invoquer une fonction Lambda qui se trouve dans un autre compte AWS ?