Je souhaite résoudre les problèmes liés aux notifications d'événements Amazon Simple Storage Service (Amazon S3) qui n'ont pas invoqué ma fonction AWS Lambda.
Résolution
Pour résoudre les problèmes liés aux notifications d'événements Amazon S3 pour les fonctions Lambda, procédez comme suit pour vérifier vos autorisations et vos paramètres de configuration :
- Ouvrez la console Amazon S3, puis accédez à votre compartiment.
- Choisissez l’onglet Propriétés.
- Dans Notifications d'événements, sélectionnez votre notification d'événement, puis choisissez Modifier.
- Dans Configuration générale, vérifiez les paramètres Préfixe et Suffixe.
- (Facultatif) Si vous utilisez un préfixe ou un suffixe, confirmez ce qui suit :
La clé d'objet de votre compartiment correspond aux directives de dénomination des clés d'objet.
Tous les caractères spéciaux sont codés au format URL (codé en pourcentage).
- Dans Destination, vérifiez que l'ARN de la fonction Lambda correspond à une fonction valide.
- Sélectionnez Enregistrer les modifications.
- Ouvrez la console Lambda, puis sélectionnez Fonctions.
- Dans Nom de la fonction, choisissez votre fonction Lambda.
- Sélectionnez l'onglet Configuration, puis choisissez Autorisations.
- Dans Déclarations de politique basées sur les ressources, choisissez votre politique, puis sélectionnez Afficher la politique.
- Assurez-vous que la politique basée sur les ressources autorise Amazon S3 à invoquer la fonction Lambda :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "ACCOUNT_ID"
},
"ArnLike": {
"AWS:SourceArn": "arn:aws:s3:::BUCKET_NAME"
}
}
}
]
}
Remarque : Remplacez REGION, ACCOUNT_ID, FUNCTION_NAME et BUCKET_NAME par votre région AWS, votre compte AWS, le nom de la fonction et le nom du compartiment. Le AWS:SourceAccount est le compte propriétaire du compartiment et ArnLike est l'ARN du compartiment.
Dans la politique basée sur les ressources précédente, le principal s3.amazonaws.com est autorisé à exécuter l'action d'API lambda:InvokeFunction sur l'ARN de la ressource.
Important : Amazon S3 envoie généralement des notifications d'événements en quelques secondes, mais cela peut parfois prendre une minute ou plus. Pour plus d'informations, consultez la section Notifications d'événements Amazon S3.
Informations connexes
Comment puis-je autoriser ma fonction Lambda à accéder à mon compartiment Amazon S3 ?
Pourquoi est-ce que je reçois des erreurs Accès refusé lorsque j'utilise une fonction Lambda pour charger des fichiers vers un compartiment Amazon S3 d'un autre compte AWS ?