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 degli URL della funzione, consulta Funzione 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 l'AWS Command Line Interface (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. Scegliere Create role (Crea ruolo).

  3. Creare un ruolo con le seguenti proprietà:

    • Tipo di entità affidabile: servizio di AWS

    • Caso d'uso: Lambda

    • AutorizzazioniAWSLambdaBasicExecutionRole

    • 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.mjs.

    import util from 'util'; import stream from 'stream'; const { Readable } = stream; const pipeline = util.promisify(stream.pipeline); /* global awslambda */ export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
  2. Crea un pacchetto di implementazione.

    zip function.zip index.mjs
  3. Creare una funzione Lambda con il comando create-function. Sostituisci il valore di --role con l'ARN del ruolo del passaggio precedente.

    aws lambda create-function \ --function-name my-streaming-function \ --runtime nodejs16.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/response-streaming-role
Creazione di un URL della funzione
  1. Aggiungi alla funzione una policy basata sulle risorse per consentire l'accesso alla funzione URL. Sostituisci il valore di --principal con il tuo ID. Account AWS

    aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id 12345 \ --principal 123456789012 \ --function-url-auth-type AWS_IAM \ --statement-id url
  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

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 "<function_url>" --user "<key:token>" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer

La nostra funzione URL utilizza il tipo di autenticazione IAM_AUTH. Ciò significa che devi firmare le richieste sia con la chiave di AWS accesso che con la chiave segreta. Nel comando precedente, sostituiscilo <key:token> 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.

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 delete nel campo di immissione testo e scegli Delete (Elimina).