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: Utilizzo di Lambda con Amazon SQS
In questo tutorial creerai una funzione Lambda che utilizza messaggi da una coda di Amazon Simple Queue Service (Amazon SQS). La funzione Lambda viene eseguita ogni volta che viene aggiunto un nuovo messaggio alla coda. La funzione scrive i messaggi in un flusso Amazon CloudWatch Logs. Il seguente diagramma illustra le risorse AWS utilizzate per completare il tutorial.
Per completare questo tutorial, completa le seguenti attività:
-
Crea una funzione Lambda che scrive messaggi su File di log CloudWatch.
-
Creare una coda Amazon SQS.
-
Crea una mappatura dell'origine degli eventi Lambda. La mappatura dell'origine degli eventi legge la coda di Amazon SQS e richiama la funzione Lambda quando viene aggiunto un nuovo messaggio.
-
Verifica la configurazione completa aggiungendo messaggi alla coda e monitorando i risultati tramite File di log CloudWatch.
Prerequisiti
Se non disponi di un Account AWS, completa le fasi seguenti per crearne uno.
Per registrarsi a un Account AWS
Apri la pagina all'indirizzo https://portal.aws.amazon.com/billing/signup
. 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.
Durante la registrazione di un Account AWS, viene creato un Utente root dell'account AWS. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWSnell'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.
Al termine del processo di registrazione, riceverai un'e-mail di conferma da AWS. È possibile visualizzare l'attività corrente dell'account e gestire l'account in qualsiasi momento accedendo all'indirizzo https://aws.amazon.com/
Dopo aver effettuato la registrazione di un Account AWS, proteggi Utente root dell'account AWS, abilita AWS IAM Identity Center e crea un utente amministratore in modo da non utilizzare l'utente root per le attività quotidiane.
Protezione dell'Utente root dell'account AWS
-
Accedi alla AWS Management Console
come proprietario dell'account scegliendo Utente root e immettendo l'indirizzo email dell'Account AWS. 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.
-
Abilita l'autenticazione a più fattori (MFA) per l'utente root.
Per ricevere istruzioni, consulta Abilitare un dispositivo MFA virtuale per l'utente root della Account AWS (console) nella Guida per l'utente IAM.
Crea un utente con accesso amministrativo
-
Abilita Centro identità IAM.
Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center.
-
In IAM Identity Center, assegna l'accesso amministrativo a un utente.
Per un tutorial sull'utilizzo di IAM Identity Center directory come origine di identità, consulta Configurazione dell'accesso utente con IAM Identity Center directory predefinito nella Guida per l'utente di AWS IAM Identity Center.
Accesso come utente amministratore
-
Per accedere con l'utente IAM Identity Center, utilizza l'URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.
Per ricevere assistenza nell'accesso mediante un utente IAM Identity Center, consulta Accedere al portale di accesso AWSnella Guida per l'utente Accedi ad AWS.
Assegna l'accesso a ulteriori utenti
-
In IAM Identity Center, crea un set di autorizzazioni conforme alla best practice dell'applicazione di autorizzazioni con il privilegio minimo.
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.
Se non hai ancora installato l'AWS Command Line Interface, segui i passaggi indicati in Installazione o aggiornamento della versione più recente della AWS CLI per installarla.
Per eseguire i comandi nel tutorial, sono necessari un terminale a riga di comando o una shell (interprete di comandi). In Linux e macOS, utilizza la shell (interprete di comandi) e il gestore pacchetti preferiti.
Nota
Su Windows, alcuni comandi della CLI Bash utilizzati comunemente con Lambda (ad esempio, zip
) non sono supportati dai terminali integrati del sistema operativo. Per ottenere una versione integrata su Windows di Ubuntu e Bash, installa il sottosistema Windows per Linux
Creazione del ruolo di esecuzione
Un ruolo di esecuzione è un ruolo AWS Identity and Access Management (IAM) che concede un'autorizzazione della funzione Lambda per l'accesso a Servizi AWS e risorse. Per consentire alla tua funzione di leggere elementi da Amazon SQS, collega la policy di autorizzazione AWSLambdaSQSQueueExecutionRole.
Creazione di un ruolo di esecuzione e collegamento di una policy di autorizzazione Amazon SQS personalizzata
-
Aprire la pagina Roles (Ruoli)
della console IAM. -
Scegliere Create role (Crea ruolo).
-
Per Tipo di entità attendibile, scegli Servizio AWS.
-
In Caso d'uso, scegli Lambda.
-
Seleziona Next (Successivo).
-
Nella casella di ricerca Policy di autorizzazione, inserisci
AWSLambdaSQSQueueExecutionRole
. -
Seleziona la policy AWSLambdaSQSQueueExecutionRole, quindi scegli Avanti.
-
In Dettagli del ruolo, per Nome del ruolo inserisci
lambda-sqs-role
, quindi scegli Crea ruolo.
Dopo la creazione del ruolo, prendi nota del valore del nome della risorsa Amazon (ARN) del ruolo di esecuzione. Ne avrai bisogno nelle fasi successive.
Creazione della funzione
Crea una funzione Lambda che elabora i messaggi Amazon SQS. Il codice funzione registra il corpo del messaggio di Amazon SQS su File di log CloudWatch.
Questo tutorial utilizza il runtime Node.js 18.x, ma è fornito anche un codice di esempio in altri linguaggi di runtime. Per visualizzare il codice per il runtime che ti interessa, seleziona la scheda corrispondente nella casella seguente. Il codice JavaScript che utilizzerai in questa fase è il primo esempio mostrato nella scheda JavaScript.
Creazione di una funzione Lambda in Node.js
-
Crea una directory per il progetto, quindi passa a quella directory.
mkdir sqs-tutorial cd sqs-tutorial
-
Copia il codice JavaScript di esempio in un nuovo file denominato
index.js
. -
Crea un pacchetto di implementazione utilizzando il seguente comando
zip
.zip function.zip index.js
-
Crea una funzione Lambda utilizzando il comando create-function
della AWS CLI. Per il role
parametro, immettere l'ARN del ruolo di esecuzione creato in precedenza.Nota
La funzione Lambda e la coda Amazon SQS devono trovarsi nella stessa Regione AWS.
aws lambda create-function --function-name ProcessSQSRecord \ --zip-file fileb://function.zip --handler index.handler --runtime nodejs18.x \
--role arn:aws:iam::
111122223333
:role/lambda-sqs-role
Test della funzione
Invocare la funzione Lambda manualmente utilizzando il comando invoke
della AWS CLI e un evento Amazon SQS di esempio.
Invocazione della funzione Lambda con un evento di esempio
-
Salva il seguente JSON come un file denominato
input.json
. Questo JSON simula un evento che Amazon SQS potrebbe inviare alla tua funzione Lambda, dove"body"
contiene il messaggio effettivo dalla coda. In questo esempio, il messaggio è"test"
.Esempio Evento Amazon SQS
Questo è un evento di test: non è necessario modificare il messaggio o il numero di account.
{ "Records": [ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "test", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "098f6bcd4621d373cade4e832627b4f6", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-1:111122223333:my-queue", "awsRegion": "us-east-1" } ] }
-
Esegui il comando invoke
della AWS CLI. Questo comando restituisce i log di CloudWatch nella risposta. Per ulteriori informazioni sul recupero di oggetti, consulta Accedi ai log con AWS CLI. aws lambda invoke --function-name ProcessSQSRecord --payload file://input.json out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
L'opzione cli-binary-format è necessaria se si utilizza la versione 2 della AWS CLI. Per rendere questa impostazione come predefinita, esegui
aws configure set cli-binary-format raw-in-base64-out
. Per ulteriori informazioni, consulta la pagina AWS CLI supported global command line options nella Guida per l'utente di AWS Command Line Interface versione 2. -
Individua il log
INFO
nella risposta. È qui che la funzione Lambda registra il corpo del messaggio. I log visualizzati dovrebbero essere di questo tipo:2023-09-11T22:45:04.271Z 348529ce-2211-4222-9099-59d07d837b60 INFO Processed message test 2023-09-11T22:45:04.288Z 348529ce-2211-4222-9099-59d07d837b60 INFO done
Creazione di una coda Amazon SQS
Creare una coda Amazon SQS che la funzione Lambda può utilizzare come origine eventi. La funzione Lambda e la coda Amazon SQS devono trovarsi nella stessa Regione AWS.
Per creare una coda
-
Apri la console Amazon SQS
. -
Scegliere Crea coda.
-
Inserisci un nome per la coda. Lascia tutte le altre proprietà sui valori predefiniti.
-
Scegliere Crea coda.
Dopo aver creato la coda, prendi nota del suo ARN. Questa operazione è necessaria nella fase successiva quando si associa la coda alla funzione Lambda.
Configurazione dell'origine eventi
Collega la coda Amazon SQS alla tua funzione Lambda creando una mappatura dell'origine degli eventi. La mappatura dell'origine degli eventi legge la coda di Amazon SQS e richiama la funzione Lambda quando viene aggiunto un nuovo messaggio.
Per creare una mappatura tra la coda Amazon SQS e la funzione Lambda, esegui il comando create-event-source-mapping
aws lambda create-event-source-mapping --function-name ProcessSQSRecord --batch-size 10 \ --event-source-arn arn:aws:sqs:
us-east-1:111122223333:my-queue
Per ottenere un elenco delle mappature delle origini degli eventi, usa il comando list-event-source-mappings
aws lambda list-event-source-mappings --function-name ProcessSQSRecord
Invio di un messaggio di test
Invio di un messaggio Amazon SQS alla funzione Lambda
-
Apri la console Amazon SQS
. -
Scegli la coda creata in precedenza.
-
Scegli Invia e ricevi messaggi.
-
Nella sezione Corpo del messaggio, inserisci un messaggio di test, ad esempio "questo è un messaggio di prova".
-
Scegliere Send Message (Invia messaggio).
Lambda esegue il polling della coda per gli aggiornamenti. Quando c'è un nuovo messaggio, Lambda richiama la tua funzione con questi nuovi dati di evento dalla coda. Se il gestore della funzione conclude senza eccezioni, Lambda considera il messaggio elaborato correttamente e inizia a leggere nuovi messaggi nella coda. Dopo aver elaborato correttamente un messaggio, Lambda lo elimina automaticamente dalla coda. Se il gestore genera un'eccezione, Lambda considera il batch dei messaggi come non correttamente elaborato e Lambda richiama la funzione con lo stesso batch di messaggi.
Controllo dei log di CloudWatch
Verifica della corretta elaborazione del messaggio da parte della funzione
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Scegli la funzione ProcessSQSRecord.
-
Scegli Monitor (Monitoraggio).
-
Scegli Visualizza log CloudWatch.
-
Nella console CloudWatch, scegli il Flusso di log per la funzione.
-
Individua il log
INFO
. È qui che la funzione Lambda registra il corpo del messaggio. Dovresti vedere il messaggio che hai inviato dalla coda Amazon SQS. Esempio:2023-09-11T22:49:12.730Z b0c41e9c-0556-5a8b-af83-43e59efeec71 INFO
Processed message this is a test message.
Pulizia delle risorse
Ora è possibile eliminare le risorse create per questo tutorial, a meno che non si voglia conservarle. Eliminando le risorse AWS che non si utilizzano più, è possibile evitare addebiti superflui sul proprio account Account AWS.
Per eliminare il ruolo di esecuzione
-
Aprire la pagina Roles (Ruoli)
della console IAM. -
Selezionare il ruolo di esecuzione creato.
-
Scegliere Elimina.
-
Inserisci il nome del ruolo nel campo di immissione testo e seleziona Delete (Elimina).
Per eliminare la funzione Lambda
-
Aprire la pagina Functions (Funzioni)
della console Lambda. -
Selezionare la funzione creata.
-
Scegliere Operazioni, Elimina.
-
Digita
delete
nel campo di immissione testo e scegli Delete (Elimina).
Per eliminare la coda Amazon SQS
-
Accedere alla AWS Management Console e aprire la console Amazon SQS all'indirizzo https://console.aws.amazon.com/sqs/
. -
Selezionare la coda creata.
-
Scegliere Elimina.
-
Inserisci
confirm
nel campo di immissione del testo. -
Scegliere Elimina.