Richiamo di una funzione Lambda con eventi batch Amazon S3 - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Richiamo di una funzione Lambda con eventi batch Amazon S3

È possibile utilizzare le operazioni batch di Amazon S3 per richiamare una funzione Lambda su un set di oggetti Amazon S3 di grandi dimensioni. Amazon S3 tiene traccia dello stato di avanzamento delle operazioni batch, invia notifiche e memorizza un report di completamento che mostra lo stato di ogni operazione.

Per eseguire un'operazione batch, è possibile creare un lavoro di operazioni batch Amazon S3. Quando si crea il lavoro, si fornisce un file manifest (l'elenco degli oggetti) e si configura l'operazione da eseguire su tali oggetti.

All'avvio del lavoro batch, Amazon S3 richiama la funzione Lambda in modo sincrono per ogni oggetto nel manifest. Il parametro evento include i nomi del bucket e dell'oggetto.

Nell'esempio seguente viene illustrato l'evento che Amazon S3 invia alla funzione Lambda per un oggetto denominato customerImage1.jpg nel bucket amzn-s3-demo-bucket.

Esempio Evento di richiesta batch 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" } ] }

La funzione Lambda deve restituire un oggetto JSON con i campi come mostrato nell'esempio seguente. È possibile copiare invocationId e taskId dal parametro evento. È possibile restituire una stringa in resultString. Amazon S3 salva i valori resultString nel report di completamento.

Esempio Risposta alla richiesta batch Amazon S3
{ "invocationSchemaVersion": "1.0", "treatMissingKeysAs" : "PermanentFailure", "invocationId" : "YXNkbGZqYWRmaiBhc2RmdW9hZHNmZGpmaGFzbGtkaGZza2RmaAo", "results": [ { "taskId": "dGFza2lkZ29lc2hlcmUK", "resultCode": "Succeeded", "resultString": "[\"Alice\", \"Bob\"]" } ] }

Chiamata di funzioni Lambda dalle operazioni in batch Amazon S3

È possibile richiamare la funzione Lambda con una funzione ARN non qualificata o qualificata. Se si desidera utilizzare la stessa versione di funzione per l'intero lavoro batch, configurare una versione di funzione specifica nel parametro FunctionARN quando si crea il lavoro. Se si configura un alias o il qualificatore $LATEST, il lavoro batch inizia immediatamente a chiamare la nuova versione della funzione se l'alias o $LATEST viene aggiornato durante l'esecuzione del lavoro.

Si noti che non è possibile riutilizzare una funzione basata su eventi Amazon S3 esistente per le operazioni batch. Questo perché l'operazione batch Amazon S3 passa un parametro di evento diverso alla funzione Lambda e si aspetta un messaggio di ritorno con una struttura JSON specifica.

Nella policy basata sulle risorse creata per il lavoro batch Amazon S3, assicurarsi di impostare l'autorizzazione per il lavoro per richiamare la funzione Lambda.

Nel ruolo di esecuzione per la funzione, impostare una policy di attendibilità Amazon S3 per assumere il ruolo quando viene eseguita la funzione.

Se la funzione utilizza SDK di AWS per gestire le risorse Amazon S3, è necessario aggiungere le autorizzazioni Amazon S3 nel ruolo di esecuzione.

Quando il lavoro viene eseguito, Amazon S3 avvia più istanze di funzione per elaborare gli oggetti Amazon S3 in parallelo, fino al limite di simultaneità della funzione. Amazon S3 limita l'aumento iniziale delle istanze per evitare costi eccessivi per i lavori più piccoli.

Se la funzione Lambda restituisce un codice di risposta TemporaryFailure, Amazon S3 riattiva l'operazione.

Per ulteriori informazioni sulla gestione delle operazioni in batch Amazon S3, consulta Gestione dei processi di operazioni in batch nella Guida per gli sviluppatori di Amazon S3.

Per un esempio di come utilizzare una funzione Lambda nelle operazioni batch di Amazon S3, consulta Invocare una funzione Lambda da operazioni batch di Amazon S3 nella Guida per gli sviluppatori di Amazon S3.