Crea la tua prima funzione Lambda - 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à.

Crea la tua prima funzione Lambda

Per iniziare a utilizzare Lambda, usa la console Lambda per creare una funzione. In pochi minuti puoi creare e implementare una funzione, e testarla nella console.

Mano a mano che esegui il tutorial, apprenderai alcuni concetti fondamentali di Lambda, ad esempio come passare argomenti a una funzione tramite l’oggetto evento di Lambda. Imparerai anche come restituire gli output di registro dalla tua funzione e come visualizzare i registri delle chiamate della funzione in Logs. CloudWatch

A scopo di semplificazione, crea la funzione utilizzando il runtime Python o Node.js. Con questi linguaggi interpretati, puoi modificare il codice della funzione direttamente nell'editor del codice integrato della console. Con linguaggi compilati come Java e C#, devi creare un pacchetto di implementazione sulla macchina di sviluppo locale e caricarlo su Lambda. Per informazioni sull’implementazione di funzioni in Lambda tramite altri runtime, consulta i link nella sezione Risorse aggiuntive e fasi successive.

Suggerimento

Per scoprire come creare soluzioni serverless, consulta la Guida allo sviluppo serverless.

Prerequisiti

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. 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 Servizi AWS 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. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Dopo esserti registrato 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
  1. Accedi AWS Management Consolecome 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 .

  2. 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
  1. Abilita IAM Identity Center.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. 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 tramite 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
  1. 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 .

  2. 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 .

Creare una funzione Lambda con la console

In questo esempio, la funzione accetta un JSON oggetto contenente due valori interi etichettati e. "length" "width" La funzione moltiplica questi valori per calcolare un'area e la restituisce come stringa. JSON

La funzione stampa anche l'area calcolata, insieme al nome del relativo gruppo di CloudWatch log. Più avanti nel tutorial, imparerai a usare CloudWatch Logs per visualizzare i record di invocazione delle tue funzioni.

Per creare la funzione, usa prima la console per creare una funzione Hello world base. Nella fase successiva, aggiungi il codice della tua funzione.

Per creare una funzione Lambda Hello world con la console
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegli Crea funzione.

  3. Scegli Crea da zero.

  4. Nel riquadro Informazioni base, per Nome funzione inserisci myLambdaFunction.

  5. Per Runtime, scegli Node.js 20.x o Python 3.12

  6. Lascia l’architettura impostata su x86_64 e scegli Crea funzione.

Lambda crea una funzione che restituisce il messaggio Hello from Lambda!. Lambda crea anche un ruolo di esecuzione per la tua funzione. Un ruolo di esecuzione è un ruolo AWS Identity and Access Management (IAM) che concede a una funzione Lambda l'autorizzazione all' Servizi AWS accesso e alle risorse. Per la tua funzione, il ruolo creato da Lambda concede le autorizzazioni di base per la scrittura nei registri. CloudWatch

A questo punto, utilizza l'editor di codice integrato nella console per sostituire il codice Hello world creato da Lambda con il codice della tua funzione.

Node.js
Per modificare il codice nella console
  1. Scegli la scheda Codice.

    Nell'editor di codice integrato della console, dovresti vedere il codice della funzione creato da Lambda. Se non vedi la scheda index.js nell'editor di codice, seleziona index.js in Esplora file, come illustrato nel diagramma seguente.

    Diagramma che mostra l'editor di codice della console e il file index.mjs in File Explorer
  2. Incolla il codice seguente nella scheda index.js, sostituendo il codice creato da Lambda.

    export const handler = async (event, context) => { const length = event.length; const width = event.width; let area = calculateArea(length, width); console.log(`The area is ${area}`); console.log('CloudWatch log group: ', context.logGroupName); let data = { "area": area, }; return JSON.stringify(data); function calculateArea(length, width) { return length * width; } };
  3. Scegli Implementa per aggiornare il codice della funzione. Quando Lambda ha implementato le modifiche, la console visualizza un banner che indica che la funzione è stata aggiornata correttamente.

Comprendere il codice della funzione

Prima di passare alla fase successiva, esaminiamo il codice della funzione e apprendiamo alcuni concetti chiave di Lambda.

  • Il gestore Lambda:

    La tua funzione Lambda contiene una funzione Node.js denominata handler. Una funzione Lambda in Node.js può contenere più di una funzione Node.js, ma la funzione del gestore è sempre il punto di ingresso al codice. Quando viene richiamata la funzione, Lambda esegue questo metodo.

    Una volta creata la funzione Hello world utilizzando la console, Lambda imposta automaticamente su handler il nome del metodo del gestore per la funzione. Non modificare il nome di questa funzione Node.js. Se modifichi il nome, Lambda non sarà in grado di eseguire il codice quando richiami la funzione.

    Per ulteriori informazioni sul gestore Lambda in Node.js, consulta Definire il gestore della funzione Lambda in Node.js.

  • L'oggetto evento Lambda:

    La funzione handler acquisisce due argomenti, event e context. Un evento in Lambda è un documento JSON formattato che contiene dati che la funzione deve elaborare.

    Se la funzione viene richiamata da un'altra Servizio AWS, l'oggetto evento contiene informazioni sull'evento che ha causato l'invocazione. Ad esempio, se un bucket Amazon Simple Storage Service (Amazon S3) richiama la funzione quando viene caricato un oggetto, l'evento conterrà il nome del bucket Amazon S3 e la chiave dell'oggetto.

    In questo esempio, creerete un evento nella console inserendo un documento JSON formattato con due coppie chiave-valore.

  • L'oggetto contestuale Lambda:

    Il secondo argomento acquisito dalla funzione è context. Lambda passa l’oggetto contestuale alla tua funzione automaticamente. L'oggetto contestuale contiene informazioni sull’invocazione della funzione e sull'ambiente di esecuzione.

    Puoi utilizzare l'oggetto contestuale per generare informazioni sull’invocazione della funzione a scopo di monitoraggio. In questo esempio, la funzione utilizza il logGroupName parametro per restituire il nome del relativo CloudWatch gruppo di log.

    Per ulteriori informazioni sull'oggetto contestuale Lambda in Node.js, consulta Utilizzo dell'oggetto contesto Lambda per recuperare le informazioni sulla funzione Node.js.

  • Accesso a Lambda:

    Con Node.js, puoi usare metodi della console come console.log e console.error per inviare informazioni al log della funzione. Il codice di esempio utilizza console.log istruzioni per restituire l'area calcolata e il nome del gruppo CloudWatch Logs della funzione. Puoi utilizzare anche qualunque libreria di log che scrive in stdout o stderr.

    Per ulteriori informazioni, consulta Registra e monitora le funzioni Lambda di Node.js. Per informazioni sui log in altri runtime, consulta le pagine “Creazione con” per i runtime a cui sei interessato.

Python
Per modificare il codice nella console
  1. Scegli la scheda Codice.

    Nell'editor di codice integrato della console, dovresti vedere il codice della funzione creato da Lambda. Se non vedi la scheda lambda_function.py nell'editor di codice, seleziona lambda_function.py in Esplora file, come illustrato nel diagramma seguente.

    Diagramma che mostra l'editor di codice della console e il file lambda_function.py nell'esploratore di file
  2. Incolla il codice seguente nella scheda lambda_function.py, sostituendo il codice creato da Lambda.

    import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def lambda_handler(event, context): # Get the length and width parameters from the event object. The # runtime converts the event object to a Python dictionary length = event['length'] width = event['width'] area = calculate_area(length, width) print(f"The area is {area}") logger.info(f"CloudWatch logs group: {context.log_group_name}") # return the calculated area as a JSON string data = {"area": area} return json.dumps(data) def calculate_area(length, width): return length*width
  3. Scegli Implementa per aggiornare il codice della funzione. Quando Lambda ha implementato le modifiche, la console visualizza un banner che indica che la funzione è stata aggiornata correttamente.

Comprendere il codice della funzione

Prima di passare alla fase successiva, esaminiamo il codice della funzione e apprendiamo alcuni concetti chiave di Lambda.

  • Il gestore Lambda:

    La funzione Lambda contiene una funzione Python denominata lambda_handler. Una funzione Lambda in Python può contenere più di una funzione Python, ma la funzione del gestore è sempre il punto di ingresso al codice. Quando viene richiamata la funzione, Lambda esegue questo metodo.

    Una volta creata la funzione Hello world utilizzando la console, Lambda imposta automaticamente su lambda_handler il nome del metodo del gestore per la funzione. Non modificare il nome di questa funzione Python. Se modifichi il nome, Lambda non sarà in grado di eseguire il codice quando richiami la funzione.

    Per ulteriori informazioni sul gestore Lambda in Python, consulta Definisci il gestore di funzioni Lambda in Python.

  • L'oggetto evento Lambda:

    La funzione lambda_handler acquisisce due argomenti, event e context. Un evento in Lambda è un documento JSON formattato che contiene dati che la funzione deve elaborare.

    Se la funzione viene richiamata da un'altra Servizio AWS, l'oggetto evento contiene informazioni sull'evento che ha causato l'invocazione. Ad esempio, se un bucket Amazon Simple Storage Service (Amazon S3) richiama la funzione quando viene caricato un oggetto, l'evento conterrà il nome del bucket Amazon S3 e la chiave dell'oggetto.

    In questo esempio, creerete un evento nella console inserendo un documento JSON formattato con due coppie chiave-valore.

  • L'oggetto contestuale Lambda:

    Il secondo argomento acquisito dalla funzione è context. Lambda passa l’oggetto contestuale alla tua funzione automaticamente. L'oggetto contestuale contiene informazioni sull’invocazione della funzione e sull'ambiente di esecuzione.

    Puoi utilizzare l'oggetto contestuale per generare informazioni sull’invocazione della funzione a scopo di monitoraggio. In questo esempio, la funzione utilizza il log_group_name parametro per restituire il nome del relativo CloudWatch gruppo di log.

    Per ulteriori informazioni sull'oggetto contestuale Lambda in Python, consulta Utilizzo dell'oggetto contestuale Lambda per recuperare le informazioni sulla funzione Python.

  • Accesso a Lambda:

    Con Python, puoi usare un’istruzione print o una libreria di log Python per inviare informazioni al log della funzione. Per illustrare la differenza tra i dati acquisiti, il codice di esempio utilizza entrambi i metodi. In un'applicazione in produzione, è preferibile utilizzare una libreria di log.

    Per ulteriori informazioni, consulta Registra e monitora le funzioni Lambda di Python. Per informazioni sui log in altri runtime, consulta le pagine “Creazione con” per i runtime a cui sei interessato.

Richiamare la funzione Lambda con la console

Per richiamare la funzione utilizzando la console Lambda, devi prima creare un evento di test da inviare alla tua funzione. L'evento è un documento JSON formattato contenente due coppie chiave-valore con i tasti e. "length" "width"

Per creare un evento di test
  1. Nel riquadro Origine del codice, scegli Test.

  2. Seleziona Crea nuovo evento.

  3. Per Nome evento, inserisci myTestEvent.

  4. Nel JSON pannello Evento, sostituite i valori predefiniti incollando quanto segue:

    { "length": 6, "width": 7 }
  5. Seleziona Salva.

Ora testate la vostra funzione e utilizzate la console Lambda e CloudWatch Logs per visualizzare i record della chiamata della funzione.

Per testare la funzione e visualizzare i record di invocazione nella console
  • Nel riquadro Origine del codice, scegli Test. Al termine dell'esecuzione della funzione, verranno visualizzati i log della risposta e della funzione nella scheda Risultati dell'esecuzione. Dovresti visualizzare risultati simili a quelli indicati di seguito.

    Node.js
    Test Event Name myTestEvent Response "{\"area\":42}" Function Logs START RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Version: $LATEST 2023-08-31T23:39:45.313Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-31T23:39:45.331Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a REPORT RequestId: 5c012b0a-18f7-4805-b2f6-40912935034a Duration: 20.67 ms Billed Duration: 21 ms Memory Size: 128 MB Max Memory Used: 66 MB Init Duration: 163.87 ms Request ID 5c012b0a-18f7-4805-b2f6-40912935034a
    Python
    Test Event Name myTestEvent Response "{\"area\": 42}" Function Logs START RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Version: $LATEST The area is 42 [INFO] 2023-08-31T23:43:26.428Z 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b REPORT RequestId: 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b Duration: 1.42 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 39 MB Init Duration: 123.74 ms Request ID 2d0b1579-46fb-4bf7-a6e1-8e08840eae5b

In questo esempio hai richiamato il codice utilizzando la funzionalità di test della console. Ciò implica che puoi visualizzare i risultati dell’esecuzione della funzione direttamente nella console. Quando la funzione viene richiamata all'esterno della console, è necessario utilizzare Logs. CloudWatch

Per visualizzare i record di invocazione della funzione in Logs CloudWatch
  1. Apri la pagina Log groups della console. CloudWatch

  2. Scegli il nome del gruppo di log per la funzione (/aws/lambda/myLambdaFunction). Questo è il nome del gruppo di log che la funzione ha stampato sulla console.

  3. Nella scheda Flussi di log, scegli il flusso di log per l’invocazione della funzione.

    Verrà visualizzato un output simile al seguente:

    Node.js
    INIT_START Runtime Version: nodejs:20.v13 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:e3aaabf6b92ef8755eaae2f4bfdcb7eb8c4536a5e044900570a42bdba7b869d9 START RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Version: $LATEST 2023-08-23T22:04:15.809Z 5c012b0a-18f7-4805-b2f6-40912935034a INFO The area is 42 2023-08-23T22:04:15.810Z aba6c0fc-cf99-49d7-a77d-26d805dacd20 INFO CloudWatch log group: /aws/lambda/myLambdaFunction END RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 REPORT RequestId: aba6c0fc-cf99-49d7-a77d-26d805dacd20 Duration: 17.77 ms Billed Duration: 18 ms Memory Size: 128 MB Max Memory Used: 67 MB Init Duration: 178.85 ms
    Python
    INIT_START Runtime Version: python:3.12.v16 Runtime Version ARN: arn:aws:lambda:us-west-2::runtime:ca202755c87b9ec2b58856efb7374b4f7b655a0ea3deb1d5acc9aee9e297b072 START RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Version: $LATEST The area is 42 [INFO] 2023-09-01T00:05:22.464Z 9315ab6b-354a-486e-884a-2fb2972b7d84 CloudWatch logs group: /aws/lambda/myLambdaFunction END RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e REPORT RequestId: 9d4096ee-acb3-4c25-be10-8a210f0a9d8e Duration: 1.15 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 40 MB

Eliminazione

Quando hai terminato il lavoro con la funzione di esempio, eliminala. Puoi anche eliminare il gruppo di log che memorizza i log della funzione e il ruolo di esecuzione creato dalla console.

Come eliminare una funzione Lambda
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere una funzione.

  3. Scegli Operazioni > Elimina.

  4. Nella finestra di dialogo Delete function (Elimina funzione), digita delete, quindi seleziona Delete (Elimina).

Come eliminare il gruppo di log
  1. Apri la pagina Registra gruppi della CloudWatch console.

  2. Scegli il gruppo di log della funzione (/aws/lambda/my-function).

  3. Scegli Actions (Azioni), Delete log group(s) (Elimina gruppo/i di log).

  4. Nella finestra di dialogo Delete log group(s) (Elimina gruppo/i di log) scegli Delete (Elimina).

Come eliminare il ruolo di esecuzione
  1. Apri la pagina Ruoli della console AWS Identity and Access Management (IAM).

  2. Seleziona il ruolo di esecuzione della funzione (ad esempio, myLambdaFunction-role-31exxmpl).

  3. Scegli Elimina.

  4. Nella finestra di dialogo Delete role (Elimina ruolo), immetti il nome del ruolo, quindi scegli Delete (Elimina).

Puoi automatizzare la creazione e la pulizia di funzioni, gruppi di log e ruoli con AWS CloudFormation and the AWS Command Line Interface ()AWS CLI.

Risorse aggiuntive e fasi successive

Una volta creata e testata una semplice funzione Lambda con la console, effettua le seguenti fasi successive: