

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Invoque funciones Lambda localmente con AWS SAM
<a name="serverless-sam-cli-using-invoke"></a>

La invocación local de una función de Lambda antes de probarla o implementarla en la nube puede tener diversas ventajas. Le permite probar la lógica de la función con mayor rapidez. Probar primero a nivel local reduce la probabilidad de identificar problemas al realizar las pruebas en la nube o durante la implementación, lo que puede ayudarle a evitar costos innecesarios. Además, las pruebas locales facilitan la depuración.

Puede invocar la función de Lambda de forma local mediante el comando [sam local invoke](sam-cli-command-reference-sam-local-invoke.md) y proporcionando el ID lógico de la función y un archivo de eventos. **sam local invoke** también acepta `stdin` como evento. Para más información, consulta [Evento](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-event) en la *Guía para desarrolladores de AWS Lambda *. Para obtener información sobre los formatos de mensajes de eventos de distintos AWS servicios, consulte [Utilización AWS Lambda con otros servicios](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html) en la Guía para *AWS Lambda desarrolladores*.

**nota**  
No se recomienda utilizar las capacidades de invocación local de la CLI de SAM en código que no sea de confianza. Para tener un aislamiento completo del entorno local, ejecute el código directamente en el servicio Lambda.

**nota**  
El **sam local invoke** comando corresponde 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). Puedes utilizar cualquiera de los comandos para invocar una función de Lambda.

Debes ejecutar el comando **sam local invoke** en el directorio del proyecto que contiene la función que desea invocar.

 Ejemplos:

```
# 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
```

## Archivo de variables de entorno
<a name="serverless-sam-cli-using-invoke-environment-file"></a>

Para declarar localmente las variables de entorno que anulan los valores definidos en las plantillas, haga lo siguiente:

1. Cree un JSON o un `.env` archivo que contenga las variables de entorno que desee anular.

1. Usa el argumento `--env-vars` para anular los valores definidos en sus plantillas.

La `--env-vars` opción admite dos formatos de archivo. El formato del archivo se detecta automáticamente en función del contenido del archivo.

### Declarar variables de entorno con JSON
<a name="serverless-sam-cli-using-invoke-environment-file-declaring"></a>

Para declarar variables de entorno que se apliquen globalmente a todos los recursos, especifica un objeto `Parameters` como el siguiente:

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

Para declarar variables de entorno diferentes para cada recurso, especifica objetos para cada recurso de la siguiente manera:

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

Al especificar objetos para cada recurso, puede utilizar los siguientes identificadores, enumerados en orden de mayor a menor prioridad:

1. `logical_id`

1. `function_id`

1. `function_name`

1. Identificador de ruta completo

Puedes utilizar los dos métodos anteriores para declarar variables de entorno juntos en un único archivo. Al hacerlo, las variables de entorno que haya proporcionado para recursos específicos tienen prioridad sobre las variables de entorno globales.

Guarde las variables de entorno en un archivo JSON, como `env.json`.

### Declarar variables de entorno con archivos.env
<a name="serverless-sam-cli-using-invoke-environment-file-dotenv"></a>

También puede usar un `.env` archivo para declarar variables de entorno. Las variables declaradas en un `.env` archivo se aplican globalmente a todas las funciones, lo que equivale al `Parameters` objeto en formato JSON.

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

El `.env` formato admite comentarios (líneas que comienzan por`#`) y valores entre comillas.

**nota**  
El `.env` formato solo admite variables de entorno globales. Para declarar variables de entorno específicas de una función, utilice el formato JSON.

### Anulación de valores de variables de entorno
<a name="serverless-sam-cli-using-invoke-environment-file-override"></a>

Para sustituir las variables de entorno por las definidas en el archivo de variables de entorno, utilice el `--env-vars` argumento con los **invoke** comandos o. **start-api** Por ejemplo:

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

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

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

Si tu aplicación incluye capas, para obtener información sobre cómo depurar los problemas con las capas de su host local, consulta [Aumente la eficiencia con las capas Lambda con AWS SAM](serverless-sam-cli-layers.md).

## Más información
<a name="serverless-sam-cli-using-invoke-learn"></a>

Para ver un ejemplo práctico de cómo invocar funciones de forma local, consulte el [Módulo 2: Ejecutar de forma local](https://s12d.com/sam-ws-en-local) en *The* Complete Workshop. AWS SAM 