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à.
Tutorial: uso di un trigger Amazon S3 per richiamare una funzione Lambda
In questo tutorial si utilizzerà la console per creare una funzione Lambda e configurare un trigger per un bucket Amazon Simple Storage Service (Amazon S3). Ogni volta che aggiungi un oggetto al tuo bucket Amazon S3, la funzione viene eseguita e invia il tipo di oggetto in Amazon Logs. CloudWatch
![Flusso di dati tra un bucket S3, una funzione Lambda e Logs CloudWatch](images/services-s3-example/s3_tut_config.png)
Questo tutorial dimostra come:
-
Crea un bucket Amazon S3.
-
Crea una funzione Lambda che restituisce il tipo di oggetto in un bucket Amazon S3.
-
Configura un trigger Lambda che richiami la tua funzione quando gli oggetti vengono caricati nel bucket.
-
Prova la tua funzione, prima con un evento fittizio e poi usando il trigger.
Completando questi passaggi, imparerai come configurare una funzione Lambda da eseguire ogni volta che vengono aggiunti o eliminati oggetti da un bucket Amazon S3. Puoi completare questo tutorial soltanto dalla AWS Management Console.
Prerequisiti
Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.
Per iscriverti a un Account AWS
Apri la https://portal.aws.amazon.com/billing/registrazione.
Segui le istruzioni online.
Nel corso della procedura di registrazione riceverai una telefonata, durante la quale sarà necessario inserire un codice di verifica attraverso la tastiera del telefono.
Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i AWS servizi nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.
AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. È possibile visualizzare l'attività corrente dell'account e gestire l'account in qualsiasi momento accedendo all'indirizzo https://aws.amazon.com/
Dopo la registrazione Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.
Proteggi i tuoi Utente root dell'account AWS
-
Accedi AWS Management Console
come proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password. Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .
-
Attiva l'autenticazione a più fattori (MFA) per il tuo utente root.
Per istruzioni, consulta Abilitare un MFA dispositivo virtuale per l'utente Account AWS root (console) nella Guida per l'IAMutente.
Crea un utente con accesso amministrativo
-
Abilita IAM Identity Center.
Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .
-
In IAM Identity Center, concedi l'accesso amministrativo a un utente.
Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con i valori predefiniti IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.
Accesso come utente amministratore
-
Per accedere con l'utente dell'IAMIdentity Center, utilizza l'accesso URL che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.
Per informazioni sull'accesso con un utente di IAM Identity Center, consulta Accesso al portale di AWS accesso nella Guida per l'Accedi ad AWS utente.
Assegna l'accesso a ulteriori utenti
-
In IAM Identity Center, crea un set di autorizzazioni che segua la migliore pratica di applicazione delle autorizzazioni con privilegi minimi.
Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .
-
Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).
Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .
Creazione di un bucket Amazon S3
![Primo passaggio: creare il bucket Amazon S3](images/services-s3-example/s3trigger_tut_steps1.png)
Come creare un bucket Amazon S3.
-
Apri la console Amazon S3
e seleziona la pagina Bucket. -
Scegliere Create bucket (Crea bucket).
-
In General configuration (Configurazione generale), eseguire le operazioni seguenti:
-
Per Nome del bucket, inserisci un nome univoco globale che soddisfi le regole di denominazione dei bucket di Amazon S3. I nomi dei bucket possono contenere solo lettere minuscole, numeri, punti (.) e trattini (-).
-
In AWS Region (Regione), scegliere una Regione. Più avanti nel tutorial, è necessario creare la funzione Lambda nella stessa regione.
-
-
Lascia tutte le altre opzioni impostate sui valori predefiniti e scegli Crea bucket.
Caricamento di un oggetto di test in un bucket
![Passaggio successivo: carica un oggetto di test](images/services-s3-example/s3trigger_tut_steps2.png)
Caricamento di un oggetto di test
-
Apri la pagina Bucket
della console Amazon S3 e scegli il bucket che hai creato durante il passaggio precedente. -
Scegli Carica.
-
Scegli Aggiungi file e seleziona l'oggetto che desideri caricare. Puoi selezionare qualsiasi file (ad esempio,
HappyFace.jpg
). -
Seleziona Apri, quindi Carica.
Più avanti nel tutorial, testerai la tua funzione Lambda utilizzando questo oggetto.
Creazione di una policy di autorizzazione
![Passaggio successivo: creare la politica delle autorizzazioni per Lambda](images/services-s3-example/s3trigger_tut_steps3.png)
Crea una politica di autorizzazioni che consenta a Lambda di ottenere oggetti da un bucket Amazon S3 e di scriverli su Amazon Logs. CloudWatch
Come creare la policy
-
Apri la pagina Policies della console
. IAM -
Scegliere Create Policy (Crea policy).
-
Scegli la JSONscheda, quindi incolla la seguente politica personalizzata nell'JSONeditor.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::*/*" } ] }
-
Scegliere Next: Tags (Successivo: Tag).
-
Scegliere Next:Review (Successivo: Rivedi).
-
In Rivedi policy, per Nome della policy inserisci
s3-trigger-tutorial
. -
Scegli Create Policy (Crea policy).
Creazione di un ruolo di esecuzione
![Passaggio successivo: creare il ruolo di esecuzione](images/services-s3-example/s3trigger_tut_steps4.png)
Un ruolo di esecuzione è un ruolo AWS Identity and Access Management (IAM) che concede a una funzione Lambda il permesso di AWS accedere a servizi e risorse. In questo passaggio, crea un ruolo di esecuzione utilizzando la politica di autorizzazioni creata nel passaggio precedente.
Creazione di un ruolo di esecuzione e collegamento di una policy di autorizzazione personalizzata
-
Apri la pagina Ruoli
della IAM console. -
Scegliere Crea ruolo.
-
Per il tipo di entità attendibile, scegli Servizio AWS , quindi per il caso d'uso seleziona Lambda.
-
Scegli Next (Successivo).
-
Nella casella di ricerca delle policy, immettere
s3-trigger-tutorial
. -
Nei risultati della ricerca, seleziona la policy creata (
s3-trigger-tutorial
), quindi scegli Next (Successivo). -
In Role details (Dettagli del ruolo), per Role name (Nome del ruolo), specifica
lambda-s3-trigger-role
, quindi scegli Create role (Crea ruolo).
Creazione della funzione Lambda
![Passaggio successivo: creare la funzione Lambda](images/services-s3-example/s3trigger_tut_steps5.png)
Crea una funzione Lambda nella console usando il runtime Python 3.12.
Creazione della funzione Lambda
-
Aprire la pagina Funzioni
della console Lambda. -
Assicurati di lavorare nello stesso bucket in Regione AWS cui hai creato il tuo bucket Amazon S3. Puoi modificare la regione utilizzando l'elenco a discesa nella parte superiore dello schermo.
-
Scegli Crea funzione.
-
Scegli Crea da zero.
-
In Basic information (Informazioni di base) eseguire queste operazioni:
-
Nel campo Nome funzione, inserisci
s3-trigger-tutorial
. -
Per Runtime, scegli Python 3.12.
-
In Architecture (Architettura), scegli x86_64.
-
-
Nella scheda Modifica ruolo di esecuzione predefinito, effettua le seguenti operazioni:
-
Espandi la scheda, quindi scegli Utilizza un ruolo esistente.
-
Seleziona il
lambda-s3-trigger-role
che hai creato in precedenza.
-
-
Scegli Crea funzione.
Implementazione del codice della funzione
![Passaggio successivo: distribuire il codice della funzione](images/services-s3-example/s3trigger_tut_steps6.png)
Questo tutorial utilizza il runtime di Python 3.12, ma abbiamo anche fornito file di codice di esempio per altri runtime. Per visualizzare il codice per il runtime che ti interessa, seleziona la scheda corrispondente nella casella seguente.
La funzione Lambda recupera il nome chiave dell'oggetto caricato e il nome del bucket dal event
parametro che riceve da Amazon S3. La funzione utilizza quindi il metodo get_object
Implementazione del codice della funzione
-
Scegli la scheda Python nella casella seguente e copia il codice.
-
Nel riquadro Codice sorgente della console Lambda, incolla il codice nel file lambda_function.py.
-
Seleziona Deploy (Implementa).
Creazione del trigger Amazon S3
![Passaggio successivo: creare il trigger S3](images/services-s3-example/s3trigger_tut_steps7.png)
Creazione del trigger Amazon S3
-
Nel riquadro Panoramica della funzione, scegli Aggiungi trigger.
-
Seleziona S3.
-
In Bucket, seleziona il bucket che hai creato in precedenza nel tutorial.
-
In Tipi di evento, assicurati che sia selezionata l'opzione Tutti gli eventi di creazione degli oggetti.
-
In Invocazione ricorsiva, seleziona la casella di controllo per confermare che non è consigliabile utilizzare lo stesso bucket Amazon S3 per input e output.
-
Scegli Aggiungi.
Nota
Quando crei un trigger Amazon S3 per una funzione Lambda utilizzando la console Lambda, Amazon S3 configura una notifica degli eventi sul bucket specificato. Prima di configurare questa notifica di evento, Amazon S3 esegue una serie di controlli per confermare che la destinazione dell'evento esista e disponga delle IAM politiche richieste. Amazon S3 esegue questi test anche su qualsiasi altra notifica di eventi configurata per quel bucket.
A causa di questo controllo, se il bucket ha precedentemente configurato destinazioni di eventi per risorse che non esistono più o per risorse che non dispongono delle politiche di autorizzazione richieste, Amazon S3 non sarà in grado di creare la nuova notifica di evento. Verrà visualizzato il seguente messaggio di errore che indica che non è stato possibile creare il trigger:
An error occurred when creating the trigger: Unable to validate the following destination configurations.
Puoi visualizzare questo errore se in precedenza hai configurato un trigger per un'altra funzione Lambda utilizzando lo stesso bucket e da allora hai eliminato la funzione o modificato le sue politiche di autorizzazione.
Test di una funzione Lambda con un evento fittizio
![Diagramma del flusso di lavoro del tutorial che mostra che ci si trova nella fase di test con un evento fittizio](images/services-s3-example/s3trigger_tut_steps8.png)
Test della funzione Lambda con un evento fittizio
-
Nella pagina della console Lambda relativa alla tua funzione, scegli la scheda Test.
-
Per Event name (Nome evento) immettere
MyTestEvent
. -
Nell'Evento JSON, incolla il seguente evento di test. Assicurati di sostituire questi valori:
-
Sostituisci
us-east-1
con la regione in cui è stato creato il bucket Amazon S3. -
Sostituisci entrambe le istanze di
amzn-s3-demo-bucket
con il nome del bucket Amazon S3. -
Sostituisci
test%2FKey
con il nome dell'oggetto di test che hai caricato in precedenza nel tuo bucket (ad esempio,HappyFace.jpg
).
{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "
us-east-1
", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "amzn-s3-demo-bucket
", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket
" }, "object": { "key": "test%2Fkey
", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] } -
-
Scegli Save (Salva).
-
Scegli Test (Esegui test).
-
Se la tua funzione viene eseguita correttamente, vedrai un output simile al seguente nella scheda Risultati dell'esecuzione.
Response "image/jpeg" Function Logs START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST 2021-02-18T21:40:59.280Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO INPUT BUCKET AND KEY: { Bucket: 'amzn-s3-demo-bucket', Key: 'HappyFace.jpg' } 2021-02-18T21:41:00.215Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO CONTENT TYPE: image/jpeg END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Duration: 976.25 ms Billed Duration: 977 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 430.47 ms Request ID 12b3cae7-5f4e-415e-93e6-416b8f8b66e6
Test della funzione Lambda mediante il trigger Amazon S3
![Diagramma del flusso di lavoro del tutorial che mostra che ci si trova nella fase di test con il trigger S3](images/services-s3-example/s3trigger_tut_steps9.png)
Per testare la tua funzione con il trigger configurato, carica un oggetto nel tuo bucket Amazon S3 utilizzando la console. Per verificare che la funzione Lambda sia stata eseguita come previsto, usa CloudWatch Logs per visualizzare l'output della funzione.
Caricamento di un oggetto nel bucket Amazon S3
-
Apri la pagina Bucket
della console Amazon S3 e scegli il bucket che hai creato in precedenza. -
Scegli Carica.
-
Scegli Aggiungi file e usa il selettore di file per scegliere un oggetto da caricare. Tale oggetto può essere qualsiasi file desideri.
-
Seleziona Apri, quindi Carica.
Per verificare l'invocazione della funzione utilizzando Logs CloudWatch
-
Apri la console. CloudWatch
-
Assicurati di lavorare nella stessa modalità in Regione AWS cui hai creato la funzione Lambda. Puoi modificare la regione utilizzando l'elenco a discesa nella parte superiore dello schermo.
-
Scegli Log e quindi Gruppi di log.
-
Scegli il nome del gruppo di log per la funzione (
/aws/lambda/s3-trigger-tutorial
). -
In Flussi di log, scegli il flusso di log più recente.
-
Se la tua funzione è stata richiamata correttamente in risposta al trigger di Amazon S3, vedrai un output simile al seguente. Il
CONTENT TYPE
visualizzato dipende dal tipo di file che hai caricato nel bucket.2022-05-09T23:17:28.702Z 0cae7f5a-b0af-4c73-8563-a3430333cc10 INFO CONTENT TYPE:
image/jpeg
Pulizia delle risorse
Ora è possibile eliminare le risorse create per questo tutorial, a meno che non si voglia conservarle. Eliminando AWS le risorse che non utilizzi più, eviti addebiti inutili ai tuoi. Account AWS
Per eliminare la funzione Lambda
-
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Selezionare la funzione creata.
-
Scegliere Operazioni, Elimina.
-
Inserisci
delete
nel campo di immissione del testo, quindi scegli Elimina.
Come eliminare il ruolo di esecuzione
-
Apri la pagina Ruoli
della IAM console. -
Selezionare il ruolo di esecuzione creato.
-
Scegliere Elimina.
-
Inserisci il nome del ruolo nel campo di immissione testo e seleziona Delete (Elimina).
Per eliminare il bucket S3
-
Aprire la console Amazon S3
. -
Selezionare il bucket creato in precedenza.
-
Scegliere Delete (Elimina).
-
Inserisci il nome del bucket nel campo di immissione testo.
-
Scegli Delete Bucket (Elimina bucket).
Passaggi successivi
InTutorial: uso di un trigger Amazon S3 per creare immagini in miniatura, il trigger di Amazon S3 richiama una funzione che crea un'immagine in miniatura per ogni file di immagine caricato in un bucket. Questo tutorial richiede un livello moderato di conoscenza del AWS dominio Lambda. Dimostra come creare risorse utilizzando AWS Command Line Interface (AWS CLI) e come creare un pacchetto di distribuzione di archivi di file.zip per la funzione e le sue dipendenze.