

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 localmente le funzioni Lambda con AWS SAM
<a name="serverless-sam-cli-using-invoke"></a>

Richiamare localmente una funzione Lambda prima del test o dell'implementazione nel cloud può avere una serie di vantaggi. Ti consente di testare più rapidamente la logica della tua funzione. I test innanzitutto a livello locale riducono la probabilità di identificare problemi durante i test nel cloud o durante l'implementazione, il che può aiutarvi a evitare costi inutili. Inoltre, i test locali semplificano l'esecuzione del debug.

È possibile richiamare la funzione Lambda localmente utilizzando [sam local invoke](sam-cli-command-reference-sam-local-invoke.md) il comando e fornendo l'ID logico della funzione e un file di eventi. **sam local invoke**accetta anche `stdin` come evento. Per ulteriori informazioni sugli eventi, consulta [Event](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event) nella *AWS Lambda Developer Guide*. Per informazioni sui formati dei messaggi relativi agli eventi di diversi AWS servizi, consulta [Utilizzo AWS Lambda con altri servizi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html) nella *Guida per gli AWS Lambda sviluppatori*.

**Nota**  
Non è consigliabile utilizzare le funzionalità di richiamo locale di SAM CLI in codice non attendibile. Per ottenere un isolamento completo dall'ambiente locale, esegui il codice direttamente nel servizio Lambda.

**Nota**  
Il **sam local invoke** comando corrisponde al comando AWS Command Line Interface [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/invoke.html)(AWS CLI). È possibile utilizzare entrambi i comandi per richiamare una funzione Lambda.

È necessario eseguire il **sam local invoke** comando nella directory del progetto che contiene la funzione che si desidera richiamare.

 Esempi:

```
# Invoking function with event file
$ sam local invoke "Ratings" -e event.json

# Invoking function with event via stdin
$ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings"

# For more options
$ sam local invoke --help
```

## File di variabili di ambiente
<a name="serverless-sam-cli-using-invoke-environment-file"></a>

Per dichiarare localmente le variabili di ambiente che sovrascrivono i valori definiti nei modelli, procedi come segue:

1. Crea un JSON o un `.env` file che contenga le variabili di ambiente da sovrascrivere.

1. Usa l'`--env-vars`argomento per sovrascrivere i valori definiti nei tuoi modelli.

L'`--env-vars`opzione supporta due formati di file. Il formato del file viene rilevato automaticamente in base al contenuto del file.

### Dichiarazione delle variabili di ambiente con JSON
<a name="serverless-sam-cli-using-invoke-environment-file-declaring"></a>

Per dichiarare le variabili di ambiente che si applicano globalmente a tutte le risorse, specificate un `Parameters` oggetto come il seguente:

```
{
    "Parameters": {
        "TABLE_NAME": "localtable",
        "BUCKET_NAME": "amzn-s3-demo-bucket",
        "STAGE": "dev"
    }
}
```

Per dichiarare variabili di ambiente diverse per ogni risorsa, specificate gli oggetti per ogni risorsa come segue:

```
{
    "MyFunction1": {
        "TABLE_NAME": "localtable",
        "BUCKET_NAME": "amzn-s3-demo-bucket",
    },
    "MyFunction2": {
        "TABLE_NAME": "localtable",
        "STAGE": "dev"
    }
}
```

Quando si specificano oggetti per ogni risorsa, è possibile utilizzare i seguenti identificatori, elencati in ordine di precedenza dalla più alta alla più bassa:

1. `logical_id`

1. `function_id`

1. `function_name`

1. Identificatore di percorso completo

È possibile utilizzare entrambi i metodi precedenti per dichiarare le variabili di ambiente insieme in un unico file. In tal caso, le variabili di ambiente fornite per risorse specifiche hanno la precedenza sulle variabili di ambiente globali.

Salva le variabili di ambiente in un file JSON, ad esempio. `env.json`

### Dichiarazione delle variabili di ambiente con i file.env
<a name="serverless-sam-cli-using-invoke-environment-file-dotenv"></a>

Puoi anche usare un `.env` file per dichiarare le variabili di ambiente. Le variabili dichiarate in un `.env` file si applicano globalmente a tutte le funzioni, equivalenti all'`Parameters`oggetto in formato JSON.

```
TABLE_NAME=localtable
BUCKET_NAME=amzn-s3-demo-bucket
STAGE=dev
```

Il `.env` formato supporta commenti (righe che iniziano con`#`) e valori tra virgolette.

**Nota**  
Il `.env` formato supporta solo variabili di ambiente globali. Per dichiarare variabili di ambiente specifiche della funzione, utilizzate il formato JSON.

### Ignorare i valori delle variabili di ambiente
<a name="serverless-sam-cli-using-invoke-environment-file-override"></a>

Per sovrascrivere le variabili di ambiente con quelle definite nel file delle variabili di ambiente, utilizzate l'`--env-vars`argomento con i comandi **invoke** or**start-api**. Esempio:

```
# Using a JSON file
sam local invoke --env-vars env.json

# Using a .env file
sam local invoke --env-vars .env
```

## Livelli
<a name="serverless-sam-cli-using-invoke-layers"></a>

Se l'applicazione include livelli, per informazioni su come eseguire il debug dei problemi con i layer sull'host locale, consulta[Aumenta l'efficienza utilizzando i livelli Lambda con AWS SAM](serverless-sam-cli-layers.md).

## Ulteriori informazioni
<a name="serverless-sam-cli-using-invoke-learn"></a>

Per un esempio pratico di invocazione di funzioni a livello locale, vedi [Modulo 2 - Esegui localmente](https://s12d.com/sam-ws-en-local) in *The* Complete Workshop. AWS SAM 