Richiama una funzione Lambda in modo sincrono - 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à.

Richiama una funzione Lambda in modo sincrono

Quando si invoca una funzione in modo sincrono, Lambda esegue la funzione e attende una risposta. Quando l'esecuzione di una funzione termina, Lambda restituisce la risposta dal codice della funzione con dati aggiuntivi, ad esempio la versione della funzione invocata. Per richiamare una funzione in modo sincrono con, usa il AWS CLI comando. invoke

aws lambda invoke --function-name my-function \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

L'cli-binary-formatopzione è obbligatoria se si utilizza la AWS CLI versione 2. 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.

Verrà visualizzato l'output seguente:

{
    "ExecutedVersion": "$LATEST",
    "StatusCode": 200
}

Il seguente diagramma mostra i client che richiamano una funzione Lambda in modo sincrono. Lambda invia gli eventi direttamente alla funzione e invia la risposta della funzione all'invoker.

I client invocano una funzione in modo sincrono e attendono una risposta.

payloadè una stringa che contiene un evento in JSON formato. Il nome del file in cui l' AWS CLI scrive la risposta dalla funzione è response.json. Se la funzione restituisce un oggetto o un errore, il corpo della risposta è l'oggetto o l'errore nel JSON formato. Se la funzione termina senza errori, il corpo della risposta ènull.

Nota

Lambda non attende il completamento delle estensioni esterne prima di inviare la risposta. Le estensioni esterne vengono eseguite come processi indipendenti nell'ambiente di esecuzione e continuano l'esecuzione dopo che la chiamata della funzione è stata completata. Per ulteriori informazioni, consulta Potenzia le funzioni Lambda utilizzando le estensioni Lambda.

L'output del comando, che viene visualizzato nel terminale, include informazioni dalle intestazioni nella risposta da Lambda. Sono incluse la versione che ha elaborato l'evento (utile quando si utilizzano gli alias) e il codice di stato restituito da Lambda. Se Lambda è stato in grado di eseguire la funzione, il codice di stato è 200, anche se la funzione ha restituito un errore.

Nota

Per le funzioni con un lungo timeout, il client potrebbe essere scollegato durante l'invocazione sincrona mentre è in attesa della risposta. Configura il HTTP clientSDK, il firewall, il proxy o il sistema operativo per consentire connessioni lunghe con impostazioni di timeout o keep-alive.

Se Lambda non è in grado di eseguire la funzione, l'errore viene visualizzato nell'output.

aws lambda invoke --function-name my-function \ --cli-binary-format raw-in-base64-out \ --payload value response.json

Verrà visualizzato l'output seguente:

An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null')
 at [Source: (byte[])"value"; line: 1, column: 11]

AWS CLI È uno strumento open source che consente di interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare le fasi riportate in questa sezione, è necessario:

È possibile utilizzare AWS CLI per recuperare i log per una chiamata utilizzando l'opzione di comando --log-type. La risposta include un campo LogResult che contiene fino a 4 KB di log con codifica base64 del richiamo.

Esempio recuperare un ID di log

Nell'esempio seguente viene illustrato come recuperare un ID di log dal LogResult campo per una funzione denominata my-function.

aws lambda invoke --function-name my-function out --log-type Tail

Verrà visualizzato l'output seguente:

{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
Esempio decodificare i log

Nello stesso prompt dei comandi, utilizzare l'base64 utilità per decodificare i log. Nell'esempio seguente viene illustrato come recuperare i log codificati in base64 per my-function.

aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode

L'cli-binary-formatopzione è obbligatoria se si utilizza la AWS CLI versione 2. 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.

Verrà visualizzato l'output seguente:

START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB

L'utilità base64 è disponibile su Linux, macOS e Ubuntu su Windows. Gli utenti macOS potrebbero dover utilizzare base64 -D.

Per ulteriori informazioni su InvokeAPI, incluso un elenco completo di parametri, intestazioni ed errori, consulta Invoke.

Quando si invoca una funzione direttamente, è possibile controllare la risposta agli errori e riprovare. AWS SDKInoltre, AWS CLI riprova automaticamente i timeout del client, le limitazioni e gli errori di servizio. Per ulteriori informazioni, consulta Comprensione del comportamento dei tentativi in Lambda.