

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
<a name="runtimes-api"></a>

AWS Lambda [fornisce un'API HTTP per [runtime personalizzati](runtimes-custom.md) per ricevere eventi di chiamata da Lambda e inviare i dati di risposta all'interno dell'ambiente di esecuzione Lambda.](lambda-runtimes.md) 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 (predefinite). La differenza fondamentale è che le istanze gestite possono accettare `/response` richieste simultanee `/next` e fino al limite configurato. `AWS_LAMBDA_MAX_CONCURRENCY` Ciò consente l'elaborazione simultanea di più chiamate all'interno di un unico ambiente di esecuzione. Per ulteriori informazioni sulle istanze gestite, consulta. [Comprendere l'ambiente di esecuzione di Lambda Managed Instances](lambda-managed-instances-execution-environment.md)

![\[Diagramma di architettura dell'ambiente di esecuzione.\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/telemetry-api-concept-diagram.png)


La specifica OpenAPI per l'API runtime versione **2018-06-01** è disponibile qui: [runtime-api.zip](samples/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.

**Example Richiesta**  

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

**Topics**
+ [Chiamata successiva](#runtimes-api-next)
+ [Risposta all'invocazione](#runtimes-api-response)
+ [Errore di inizializzazione](#runtimes-api-initerror)
+ [Errore della chiamata](#runtimes-api-invokeerror)

## Chiamata successiva
<a name="runtimes-api-next"></a>

**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'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` – 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](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader). 

  Ad esempio, `Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1`.
+ `Lambda-Runtime-Client-Context`— Per le chiamate da AWS Mobile SDK, i dati sull'applicazione client e sul dispositivo.
+ `Lambda-Runtime-Cognito-Identity`— Per le chiamate da AWS Mobile SDK, 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 SDK lo legge per ottenere IDs e determinare se tracciare la richiesta.

## Risposta all'invocazione
<a name="runtimes-api-response"></a>

**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.

**Example 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
<a name="runtimes-api-initerror"></a>

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` – 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>. Esempio:
+ Runtime. NoSuchHandler
+ Tempo di esecuzione. APIKeyNotFound
+ Tempo di esecuzione. ConfigInvalid
+ Tempo di esecuzione. UnknownReason

**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.

**Example 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 del container. Stato non recuperabile. Il runtime dovrebbe uscire tempestivamente.

**Example 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
<a name="runtimes-api-invokeerror"></a>

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>. Esempio:
+ Runtime. NoSuchHandler
+ Tempo di esecuzione. APIKeyNotFound
+ Tempo di esecuzione. ConfigInvalid
+ Tempo di esecuzione. UnknownReason

**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.

**Example 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 del container. Stato non recuperabile. Il tempo di esecuzione dovrebbe uscire tempestivamente.

**Example 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"
```