Tutorial: creazione di una funzione Lambda di streaming delle risposte con un URL della funzione - 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à.

Tutorial: creazione di una funzione Lambda di streaming delle risposte con un URL della funzione

In questo tutorial viene creata una funzione Lambda definita come archivio file .zip con un endpoint funzione URL che restituisce un flusso di risposte. Per ulteriori informazioni sulla configurazione della funzione URLs, vedereFunzione URLs.

Prerequisiti

Questo tutorial presuppone una certa conoscenza delle operazioni di base di Lambda e della console relativa. Se non lo si è già fatto, seguire le istruzioni riportate in Creare una funzione Lambda con la console per creare la prima funzione Lambda.

Per completare i passaggi seguenti, è necessaria la AWS CLI versione 2. I comandi e l'output previsto sono elencati in blocchi separati:

aws --version

Verrà visualizzato l'output seguente:

aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2

Per i comandi lunghi viene utilizzato un carattere di escape (\) per dividere un comando su più righe.

In Linux e macOS utilizzare la propria shell e il proprio programma di gestione dei 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. I comandi della CLI di esempio in questa guida utilizzano la formattazione Linux. Se si utilizza la CLI di Windows, i comandi che includono documenti JSON in linea dovranno essere riformattati.

Creazione di un ruolo di esecuzione

Creare il ruolo di esecuzione che offre l'autorizzazione alla funzione Lambda per accedere alle risorse AWS .

Creazione di un ruolo di esecuzione
  1. Aprire la pagina Roles (Ruoli) della console IAM AWS Identity and Access Management .

  2. Scegli Crea ruolo.

  3. Creare un ruolo con le seguenti proprietà:

    • Tipo di entità affidabile: servizio di AWS

    • Caso d'uso: Lambda

    • Autorizzazioni: AWSLambdaBasicExecutionRole

    • Nome ruoloresponse-streaming-role

La AWSLambdaBasicExecutionRolepolicy dispone delle autorizzazioni necessarie alla funzione per scrivere log su Amazon CloudWatch Logs. Una volta creato il ruolo, prendi nota del relativo nome della risorsa Amazon (ARN). Questo valore servirà nella fase successiva.

Creazione di una funzione di streaming delle risposte (AWS CLI)

Crea una funzione Lambda di streaming delle risposte con un endpoint URL della funzione utilizzando l' AWS Command Line Interface (AWS CLI).

Creazione di una funzione in grado di trasmettere le risposte
  1. Copiare il codice di esempio seguente in un file denominato index.js. Questa funzione trasmette tre risposte, separate da 1 secondo.

    exports.handler = awslambda.streamifyResponse( async (event, responseStream, _context) => { // Metadata is a JSON serializable JS object. Its shape is not defined here. const metadata = { statusCode: 200, headers: { "Content-Type": "application/json", "CustomHeader": "outerspace" } }; // Assign to the responseStream parameter to prevent accidental reuse of the non-wrapped stream. responseStream = awslambda.HttpResponseStream.from(responseStream, metadata); responseStream.write("Streaming with Helper \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 0 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 1 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.write("Hello 2 \n"); await new Promise(r => setTimeout(r, 1000)); responseStream.end(); await responseStream.finished(); } );
  2. Crea un pacchetto di implementazione.

    zip function.zip index.js
  3. Creare una funzione Lambda con il comando create-function. Sostituisci il valore di --role con l'ARN del ruolo del passaggio precedente. Questo comando imposta il timeout della funzione su 10 secondi, il che consente alla funzione di trasmettere tre risposte.

    aws lambda create-function \ --function-name my-streaming-function \ --runtime nodejs24.x \ --zip-file fileb://function.zip \ --handler index.handler \ --timeout 10 \ --role arn:aws:iam::123456789012:role/response-streaming-role
Creazione di un URL della funzione
  1. Aggiungi alla tua funzione una politica basata sulle risorse che concede e autorizzazioni. lambda:InvokeFunctionUrl lambda:InvokeFunction Ogni istruzione deve essere aggiunta in un comando separato. Sostituisci il valore di --principal con il tuo Account AWS ID.

    aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id UrlPolicyInvokeURL \ --principal 123456789012 \ --function-url-auth-type AWS_IAM
    aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunction \ --statement-id UrlPolicyInvokeFunction \ --principal 123456789012
  2. Crea un endpoint URL per la funzione con il comando create-function-url-config.

    aws lambda create-function-url-config \ --function-name my-streaming-function \ --auth-type AWS_IAM \ --invoke-mode RESPONSE_STREAM
    Nota

    Se ricevi un errore in merito--invoke-mode, potrebbe essere necessario eseguire l'aggiornamento a una versione più recente di AWS CLI.

Verifica l'endpoint URL della funzione

Testa l'integrazione richiamando la tua funzione. Puoi aprire l'URL della funzione in un browser oppure puoi usare curl.

curl --request GET "https://abcdefghijklm7nop7qrs740abcd.lambda-url.us-east-1.on.aws/" --user "AKIAIOSFODNN7EXAMPLE" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer

La nostra funzione URL utilizza il tipo di autenticazione IAM_AUTH. Ciò significa che è necessario firmare le richieste sia con la chiave di AWS accesso che con la chiave segreta. Nel comando precedente, sostituiscilo AKIAIOSFODNN7EXAMPLE con l'ID della chiave di AWS accesso. Inserisci la tua chiave AWS segreta quando richiesto. Se non disponi della chiave AWS segreta, puoi invece utilizzare AWS credenziali temporanee.

Dovresti ottenere una risposta simile a questa:

Streaming with Helper Hello 0 Hello 1 Hello 2

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 a tuo carico. Account AWS

Come eliminare il ruolo di esecuzione
  1. Aprire la pagina Ruoli della console IAM.

  2. Selezionare il ruolo di esecuzione creato.

  3. Scegliere Elimina.

  4. Inserisci il nome del ruolo nel campo di immissione testo e seleziona Delete (Elimina).

Per eliminare la funzione Lambda
  1. Aprire la pagina Functions (Funzioni) della console Lambda.

  2. Selezionare la funzione creata.

  3. Scegliere Operazioni, Elimina.

  4. Digita confirm nel campo di immissione testo e scegli Delete (Elimina).