Utilizzo del runtime Lambda API per runtime personalizzati - 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à.

Utilizzo del runtime Lambda API per runtime personalizzati

AWS Lambda fornisce un runtime personalizzato HTTP API per ricevere eventi di chiamata da Lambda e inviare i dati di risposta all'interno dell'ambiente di esecuzione Lambda. Questa sezione contiene il API riferimento per il runtime Lambda. API

Diagramma di architettura dell'ambiente di esecuzione.

La API specifica Open per la API versione runtime 2018-06-01 è disponibile in runtime-api.zip

Per creare una API richiestaURL, i runtime ottengono l'APIendpoint dalla variabile di AWS_LAMBDA_RUNTIME_API ambiente, aggiungono la API versione e aggiungono il percorso di risorsa desiderato.

Esempio Richiesta
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"

Chiamata successiva

Percorso/runtime/invocation/next

MetodoGET

Il runtime invia questo messaggio a Lambda per richiedere un evento di chiamata. Il corpo della risposta contiene il payload dell'invocazione, che è un JSON documento che contiene i dati degli eventi provenienti dal trigger della funzione. Le intestazioni della risposta contengono dati aggiuntivi sulla chiamata.

Intestazioni di risposta
  • Lambda-Runtime-Aws-Request-Id – L'ID della richiesta che identifica la richiesta che ha attivato la chiamata della funzione.

    Ad esempio 8476a536-e9f4-11e8-9739-2dfe598c3fcd.

  • Lambda-Runtime-Deadline-Ms – La data del timeout della funzione in millisecondi Unix.

    Ad esempio 1542409706888.

  • Lambda-Runtime-Invoked-Function-Arn— La ARN funzione, la versione o l'alias Lambda specificata nella chiamata.

    Ad esempio arn:aws:lambda:us-east-2:123456789012:function:custom-runtime.

  • Lambda-Runtime-Trace-Id – L'intestazione di tracciamento AWS X-Ray.

    Ad esempio Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1.

  • Lambda-Runtime-Client-Context— Per le chiamate dal AWS dispositivo mobileSDK, dati sull'applicazione client e sul dispositivo.

  • Lambda-Runtime-Cognito-Identity— Per le chiamate dal AWS dispositivo mobileSDK, dati sul provider di identità Amazon Cognito.

Non impostare un timeout sulla richiesta GET in quanto la risposta potrebbe essere ritardata. Nell'intervallo di tempo che va dal bootstrap del runtime di Lambda al momento in cui il runtime dispone di un evento da restituire, il processo di runtime potrebbe rimanere bloccato per alcuni secondi.

L'ID della richiesta tiene traccia della chiamata in Lambda. Utilizzalo per specificare la chiamata quando invii la risposta.

L'intestazione di traccia contiene l'ID di traccia, l'ID dell'elemento padre e la selezione per il campionamento. Se la richiesta viene campionata, la richiesta è stata campionata da Lambda o da un servizio upstream. Il runtime deve impostare _X_AMZN_TRACE_ID sul valore dell'intestazione. L'X-Ray lo SDK legge per ottenere IDs e determinare se tracciare la richiesta.

Risposta all'invocazione

Percorso/runtime/invocation/AwsRequestId/response

Metodo — POST

Una volta che la funzione è stata eseguita fino al completamento, il runtime invia una risposta di chiamata a Lambda. Per le chiamate sincrone, Lambda invia la risposta al client.

Esempio Richiesta con esito positivo
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"

Errore di inizializzazione

Se la funzione restituisce un errore o il runtime rileva un errore durante l'inizializzazione, il runtime utilizzerà questo metodo per segnalare l'errore a Lambda.

Percorso/runtime/init/error

MetodoPOST

Headers

Lambda-Runtime-Function-Error-Type – Tipo di errore rilevato dal tempo di esecuzione. Campo obbligatorio: no.

L'intestazione è costituita da un valore stringa. Lambda accetta qualsiasi stringa, ma si consiglia di utilizzare il formato <categoria.motivo>. Per esempio:

  • Runtime. NoSuchHandler

  • Runtime. APIKeyNotFound

  • Runtime. ConfigInvalid

  • Runtime. UnknownReason

Parametri corpo

ErrorRequest – Informazioni sull'errore. Campo obbligatorio: no.

Questo campo è un JSON oggetto con la seguente struttura:

{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }

NB: Lambda accetta qualsiasi valore per errorType.

Nell'esempio seguente viene mostrato un messaggio di errore della funzione Lambda in cui la funzione non è stata in grado di analizzare i dati evento forniti nell'invocazione.

Esempio Errore di funzione
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Parametri del corpo della risposta
  • StatusResponse – Stringa. Informazioni sullo stato, inviate con codici di risposta 202.

  • ErrorResponse – Ulteriori informazioni sull'errore, inviate con i codici di risposta agli errori. ErrorResponse contiene un tipo di errore e un messaggio di errore.

Codice di risposta
  • 202 – Accettato

  • 403 – Non consentito

  • 500 – Errore del container. Stato non recuperabile. Il tempo di esecuzione dovrebbe uscire tempestivamente.

Esempio Richiesta con errore di inizializzazione
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"

Errore della chiamata

Se la funzione restituisce un errore o il runtime rileva un errore, il runtime utilizzerà questo metodo per segnalare l'errore a Lambda.

Percorso/runtime/invocation/AwsRequestId/error

MetodoPOST

Headers

Lambda-Runtime-Function-Error-Type – Tipo di errore rilevato dal tempo di esecuzione. Campo obbligatorio: no.

L'intestazione è costituita da un valore stringa. Lambda accetta qualsiasi stringa, ma si consiglia di utilizzare il formato <categoria.motivo>. Per esempio:

  • Runtime. NoSuchHandler

  • Runtime. APIKeyNotFound

  • Runtime. ConfigInvalid

  • Runtime. UnknownReason

Parametri corpo

ErrorRequest – Informazioni sull'errore. Campo obbligatorio: no.

Questo campo è un JSON oggetto con la seguente struttura:

{ errorMessage: string (text description of the error), errorType: string, stackTrace: array of strings }

NB: Lambda accetta qualsiasi valore per errorType.

Nell'esempio seguente viene mostrato un messaggio di errore della funzione Lambda in cui la funzione non è stata in grado di analizzare i dati evento forniti nell'invocazione.

Esempio Errore di funzione
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException", "stackTrace": [ ] }
Parametri del corpo della risposta
  • StatusResponse – Stringa. Informazioni sullo stato, inviate con codici di risposta 202.

  • ErrorResponse – Ulteriori informazioni sull'errore, inviate con i codici di risposta agli errori. ErrorResponse contiene un tipo di errore e un messaggio di errore.

Codice di risposta
  • 202 – Accettato

  • 400 – Richiesta non valida

  • 403 – Non consentito

  • 500 – Errore del container. Stato non recuperabile. Il tempo di esecuzione dovrebbe uscire tempestivamente.

Esempio Richiesta con esito errato
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"