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.
Invoquer une fonction Lambda avec des événements par lots Amazon S3
Vous pouvez utiliser des opérations par lot Amazon S3 pour appeler une fonction Lambda sur un grand ensemble d'objets Amazon S3. Amazon S3 effectue le suivi de la progression des opérations par lot, envoie des notifications et stocke un rapport d'achèvement indiquant le statut de chaque action.
Pour exécuter une opération par lot, vous créez une tâche d'opérations par lot Amazon S3. Lorsque vous créez le travail, vous fournissez un manifeste (la liste des objets) et configurez l'action à effectuer sur ces objets.
Lorsque la tâche par lots démarre, Amazon S3 appelle la fonction Lambda de manière synchrone pour chaque objet figurant dans le manifeste. Le paramètre d'événement inclut les noms du compartiment et de l'objet.
L'exemple suivant montre l'événement qu'Amazon S3 envoie à la fonction Lambda pour un objet nommé customerImage1.jpg dans le compartiment amzn-s3-demo-bucket.
Exemple Événement de demande de lot Amazon S3
{ "invocationSchemaVersion": "1.0", "invocationId": "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo", "job": { "id": "f3cc4f60-61f6-4a2b-8a21-d07600c373ce" }, "tasks": [ { "taskId": "dGFza2lkZ29lc2hlcmUK", "s3Key": "customerImage1.jpg", "s3VersionId": "1", "s3BucketArn": "arn:aws:s3:::amzn-s3-demo-bucket" } ] }
Votre fonction Lambda doit renvoyer un JSON objet avec les champs indiqués dans l'exemple suivant. Vous pouvez copier invocationId
et taskId
à partir du paramètre d'événement. Vous pouvez renvoyer une chaîne dans resultString
. Amazon S3 enregistre les valeurs resultString
dans le rapport de fin de tâche.
Exemple Réponse à la demande de lot Amazon S3
{ "invocationSchemaVersion": "1.0", "treatMissingKeysAs" : "PermanentFailure", "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo", "results": [ { "taskId": "dGFza2lkZ29lc2hlcmUK", "resultCode": "Succeeded", "resultString": "[\"Alice\", \"Bob\"]" } ] }
Appel de fonctions Lambda à partir d'opérations par lot Amazon S3
Vous pouvez appeler la fonction Lambda avec une fonction qualifiée ou non qualifiée. ARN Si vous souhaitez utiliser la même version de fonction pour l'ensemble du travail par lot, configurez une version de fonction spécifique dans le paramètre FunctionARN
lorsque vous créez votre travail. Si vous configurez un alias ou le LATEST qualificatif $, le traitement par lots commence immédiatement à appeler la nouvelle version de la fonction si l'alias ou le $ LATEST est mis à jour pendant l'exécution du travail.
Notez que vous ne pouvez pas réutiliser une fonction Amazon S3 basée sur un événement existante pour des opérations par lot. Cela est dû au fait que l'opération par lots Amazon S3 transmet un paramètre d'événement différent à la fonction Lambda et attend un message de retour avec une structure spécifiqueJSON.
Dans la stratégie basée sur une ressource que vous créez pour la tâche par lot Amazon S3, veillez à définir une autorisation pour que la tâche appelle votre fonction Lambda.
Dans le rôle d'exécution pour la fonction, définissez une stratégie d'approbation pour qu'Amazon S3 endosse ce rôle lors de l'exécution de votre fonction.
Si votre fonction utilise le AWS SDK pour gérer les ressources Amazon S3, vous devez ajouter des autorisations Amazon S3 dans le rôle d'exécution.
Lorsque le travail s'exécute, Amazon S3 démarre plusieurs instances de fonction pour traiter les objets Amazon S3 en parallèle, jusqu'à la limite de simultanéité de la fonction. Amazon S3 limite la montée en puissance initiale des instances afin d'éviter des surcoûts pour les tâches de plus petite taille.
Si la fonction Lambda renvoie un code de réponse TemporaryFailure
, Amazon S3 réessaie l'opération.
Pour plus d'informations les opérations par lot Amazon S3, consultez Exécution d'opérations par lot dans le Manuel du développeur Amazon S3.
Pour voir un exemple d'utilisation d'une fonction Lambda dans des opérations par lot Amazon S3, consultez Appel d'une fonction Lambda à partir d'opérations par lot Amazon S3 dans le Manuel du développeur Amazon S3.