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 dell'API di runtime Lambda per runtime personalizzati
AWS Lambda fornisce un'API HTTP per runtime personalizzati per ricevere eventi di chiamata da Lambda e inviare i dati di risposta all'interno dell'ambiente di esecuzione Lambda. Runtime Lambda In questa sezione è riportato il riferimento API per l'API di runtime Lambda.
Le istanze gestite Lambda supportano richieste simultanee
Le istanze gestite Lambda utilizzano la stessa API di runtime delle funzioni Lambda (impostazione predefinita). La differenza fondamentale è che le istanze gestite possono accettare /response richieste simultanee /next e fino al limite configurato. AWS_LAMBDA_MAX_CONCURRENCY Ciò consente di elaborare più chiamate contemporaneamente all'interno di un unico ambiente di esecuzione. Per ulteriori informazioni sulle istanze gestite, vedere. Comprendere l'ambiente di esecuzione delle istanze gestite Lambda
La specifica OpenAPI per l'API runtime versione 2018-06-01 è disponibile qui: runtime-api.zip
Per creare un URL di richiesta API, i runtime ottengono l'endpoint API dalla variabile d'ambiente AWS_LAMBDA_RUNTIME_API, aggiungere la versione dell'API e aggiungere il percorso della risorsa desiderato.
Esempio Richiesta
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"
Metodi API
Chiamata successiva
Percorso – /runtime/invocation/next
Metodo – GET
Il runtime invia questo messaggio a Lambda per richiedere un evento di chiamata. Il corpo della risposta contiene il payload della chiamata che è un documento JSON contenente i dati dell'evento dal trigger della funzione. Le intestazioni della risposta contengono dati aggiuntivi sulla chiamata.
Intestazioni di risposta
-
Lambda-Runtime-Aws-Request-Id— L'evento che ha attivato l'invocazione della funzione. Le fonti di eventi forniscono gli ID delle richieste oppure Lambda li genera automaticamente al momento dell'inserimento. Un singolo ID di richiesta potrebbe comportare più tentativi di richiamo. Utilizzalo nel percorso dell'URL quando invii la risposta o l'errore.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– L'ARN della funzione Lambda, la versione o l'alias specificato 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 da AWS Mobile SDK, dati sull'applicazione client e sul dispositivo. -
Lambda-Runtime-Cognito-Identity— Per le chiamate dall'SDK per AWS dispositivi mobili, dati sul provider di identità Amazon Cognito. -
Lambda-Runtime-Invocation-Id— Un identificatore univoco per questo tentativo di chiamata.
Non impostare un timeout sulla richiesta GET in quanto la risposta potrebbe essere ritardata. Tra il momento in cui Lambda avvia il runtime e il momento in cui il runtime ha un evento da restituire, il processo di runtime potrebbe rimanere bloccato per diversi secondi.
Un ID di richiesta (Lambda-Runtime-Aws-Request-Id) identifica un evento univoco. Gli ID delle richieste sono forniti dalle fonti di eventi o generati automaticamente da Lambda al momento dell'inserimento. Utilizza l'ID della richiesta nel percorso dell'URL quando invii la risposta o l'errore.
Un ID di chiamata (Lambda-Runtime-Invocation-Id) rappresenta un singolo tentativo di chiamata per un evento. Un singolo ID di richiesta può comportare più tentativi di chiamata, ciascuno con il proprio ID di chiamata univoco. Lambda utilizza ogni ID di chiamata esattamente una volta e non lo riutilizza mai. Riattiva questo valore e chiama. /response /error L'intestazione è opzionale per la retrocompatibilità con i runtime esistenti: la sua omissione non comporta un rifiuto. Lambda rifiuta solo 400 InvalidInvocationId quando l'intestazione è presente, ma il suo valore non corrisponde alla chiamata attiva.
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 SDK lo legge per ottenere gli ID 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.
Intestazioni della richiesta
Lambda-Runtime-Invocation-Id— Restituisce il valore ricevuto da. /next Lambda rifiuta la richiesta con 400 InvalidInvocationId se il valore non corrisponde alla chiamata attiva.
Esempio Richiesta con esito positivo
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 INVOCATION_ID=<value from Lambda-Runtime-Invocation-Id response header> curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS" --header "Lambda-Runtime-Invocation-Id: $INVOCATION_ID"
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
Metodo – POST
Headers
Lambda-Runtime-Function-Error-Type: il tipo di errore rilevato dal runtime. Questa intestazione è opzionale. Lambda accetta qualsiasi valore di stringa; consigliamo di utilizzare il formato<Category.Reason>, dove Category è Runtime o Function e Reason inizia con una lettera maiuscola. Ad esempio:
Runtime.NoSuchHandlerRuntime.APIKeyNotFoundRuntime.ConfigInvalidRuntime.BeforeSnapshotError(per) SnapStartRuntime.UnknownReason
I valori che non corrispondono a questo modello vengono normalizzati in Runtime.Unknown oFunction.Unknown.
Parametri corpo
ErrorRequest – Informazioni sull'errore. Campo obbligatorio: no.
Questo campo è un oggetto JSON 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— Informazioni aggiuntive sull'errore, inviate con i codici di risposta all'errore. ErrorResponse contiene un tipo di errore e un messaggio di errore.
Codice di risposta
-
202 – Accettato
-
403 – Non consentito
-
500 — Errore nel contenitore. Non-recoverable stato. Il runtime 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
Metodo – POST
Headers
Lambda-Runtime-Function-Error-Type – Tipo di errore rilevato dal runtime. Campo obbligatorio: no.
L'intestazione è costituita da un valore stringa. Lambda accetta qualsiasi stringa, ma si consiglia di utilizzare il formato <categoria.motivo>. Ad esempio:
Runtime.NoSuchHandler
Runtime.APIKeyNotFound
Runtime.ConfigInvalid
Runtime.UnknownReason
Lambda-Runtime-Invocation-Id— Restituisce il valore ricevuto da/next. Lambda rifiuta la richiesta con 400 InvalidInvocationId se il valore non corrisponde alla chiamata attiva.
Parametri corpo
ErrorRequest – Informazioni sull'errore. Campo obbligatorio: no.
Questo campo è un oggetto JSON 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— Informazioni aggiuntive sull'errore, inviate con i codici di risposta all'errore. 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 nel contenitore. Non-recoverable stato. 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"
After-Restore (applicabile solo per SnapStart)
Percorso – /runtime/restore/next
Metodo – GET
Una volta completati gli hook pre-snapshot, il runtime chiama. GET /runtime/restore/next Si tratta di una chiamata di blocco in stile iteratore, simile a/runtime/invocation/next, che segnala a Lambda che il runtime è pronto per l'istantanea dell'ambiente di esecuzione. La richiesta si blocca finché Lambda non ripristina l'ambiente di esecuzione da un'istantanea, quindi restituisce una risposta HTTP 200 con un corpo vuoto.
Headers
Non sono richieste intestazioni.
Codice di risposta
-
200 — Lambda ha ripristinato l'ambiente di esecuzione. Esegui gli hook dopo il ripristino. Il corpo della risposta è vuoto.
-
403 — Vietato. Lo stato del runtime non è consentito
/restore/next(ad esempio, il runtime ha già chiamato/invocation/nexto/restore/next). -
404: non SnapStart è abilitato per questa funzione.
-
500 – Errore del container. L'ambiente di esecuzione è in uno stato non recuperabile. Uscire dal processo di runtime.
Sintassi della richiesta
GET /2018-06-01/runtime/restore/next HTTP/1.1 Host: ${AWS_LAMBDA_RUNTIME_API}
Sintassi della risposta
HTTP/1.1 200 OK Content-Length: 0
Nota
Non impostate un socket sul lato client o un timeout di lettura su questa (o qualsiasi altra) richiesta Runtime API. Si tratta di una chiamata di blocco in stile iteratore; Lambda blocca l'ambiente di esecuzione mentre la richiesta è aperta. La richiesta può rimanere aperta per l'intera durata dell'istantanea (potenzialmente giorni, settimane o più) senza che la connessione venga considerata inattiva dal servizio Lambda.
Errore di ripristino (applicabile solo per) SnapStart
Se un hook dopo il ripristino fallisce o il runtime rileva un errore durante il ripristino, utilizza questo metodo per segnalare l'errore a Lambda. Lambda fallisce l'invocazione in corso e distrugge l'ambiente di esecuzione.
Percorso – /runtime/restore/error
Metodo – POST
Headers
Lambda-Runtime-Function-Error-Type: il tipo di errore rilevato dal runtime. Questa intestazione è opzionale. Lambda accetta qualsiasi valore di stringa; consigliamo di utilizzare il formato<Category.Reason>, dove Category è Runtime o Function e Reason inizia con una lettera maiuscola (ad esempio,). Runtime.AfterRestoreError I valori che non corrispondono a questo modello vengono normalizzati in o. Runtime.Unknown Function.Unknown
Codice di risposta
-
202 — Accettato. Il corpo di risposta è
{"status":"OK"}. Il runtime dovrebbe uscire dal processo. -
403 — Proibito. Lo stato del runtime non è consentito
/restore/error(ad esempio, non/restore/nextè stato chiamato). -
404: non SnapStart è abilitato per questa funzione.
-
500 – Errore del container. L'ambiente di esecuzione è in uno stato non recuperabile. Uscire dal processo di runtime.
Esempio Richiesta di esempio
POST /2018-06-01/runtime/restore/error HTTP/1.1 Host: ${AWS_LAMBDA_RUNTIME_API} Lambda-Runtime-Function-Error-Type: Runtime.AfterRestoreError
Esempio Esempio di risposta
HTTP/1.1 202 Accepted Content-Type: application/json {"status":"OK"}