

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.

# Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales
<a name="using-samcli-terraform"></a>

En este tema se explica cómo utilizar los AWS Serverless Application Model comandos de la interfaz de línea de comandos (AWS SAMCLI) compatibles con sus Terraform proyectos yTerraform Cloud.

Para enviar comentarios y solicitudes de características, cree un [Problema de GitHub](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform).

**Topics**
+ [Testeo local con sam local invoke](#using-samcli-terraform-local-invoke)
+ [Testeo local con sam local start-api](#using-samcli-terraform-local-start-api)
+ [Testeo local con sam local start-lambda](#using-samcli-terraform-local-start-lambda)
+ [Limitaciones de Terraform](#using-samcli-terraform-unsupported)

## Testeo local con sam local invoke
<a name="using-samcli-terraform-local-invoke"></a>

**nota**  
Para usar la CLI de AWS SAM para realizar pruebas locales, debe tener Docker instalado y configurado. Para obtener instrucciones, consulte [Instalación de Docker para usarlo con la CLI de AWS SAM](install-docker.md).

El siguiente es un ejemplo de testeo local de la función de Lambda mediante la transmisión de un evento:

```
$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -
```

Para obtener más información acerca de este comando, consulta [Introducción a las pruebas con sam local invoke](using-sam-cli-local-invoke.md).

## Testeo local con sam local start-api
<a name="using-samcli-terraform-local-start-api"></a>

Para utilizar `sam local start-api` con Terraform, ejecuta lo siguiente:

```
$ sam local start-api --hook-name terraform
```

A continuación, se muestra un ejemplo:

```
$ sam local start-api --hook-name terraform                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                          
Running Prepare Hook to prepare the current application                                                                                                                                                   
Executing prepare hook of hook "terraform"                                                                                                                                                                
Initializing Terraform application                                                                                                                                                                        
...
Creating terraform plan and getting JSON output                                                                                                                                                           
....
Generating metadata file                                                                                                                                                                                  
                                                                                                                                                                                                          
Unresolvable attributes discovered in project, run terraform apply to resolve them.                                                                                                                       
                                                                                                                                                                                                          
Finished generating metadata file. Storing in...
Prepare hook completed and metadata file generated at: ...    
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]                                                                                                                                          
Mounting None at http://127.0.0.1:3000/hello [POST]                                                                                                                                                       
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you  
used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template                     
2023-06-26 13:21:20  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Para obtener más información acerca de este comando, consulta [Introducción a las pruebas con sam local start-api](using-sam-cli-local-start-api.md).

### Funciones de Lambda que utilizan autorizadores de Lambda
<a name="using-sam-cli-terraform-local-start-api-authorizers"></a>

En el caso de las funciones de Lambda configuradas para utilizar autorizadores de Lambda, la CLI de AWS SAM invocará automáticamente el autorizador de Lambda antes de invocar el punto de conexión de la función de Lambda.
+ Para obtener más información sobre esta función en AWS SAMCLI, consulte[Funciones de Lambda que utilizan autorizadores de Lambda](using-sam-cli-local-start-api.md#using-sam-cli-local-start-api-authorizers).
+ Para obtener más información sobre el uso de autorizadores Lambda en Terraform, consulta [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage) en el *registro de Terraform*.

## Testeo local con sam local start-lambda
<a name="using-samcli-terraform-local-start-lambda"></a>

El siguiente es un ejemplo de cómo probar la función Lambda localmente con AWS Command Line Interface ()AWS CLI:

1. Utiliza la CLI de AWS SAM para crear un entorno de testeo local:

   ```
   $ sam local start-lambda --hook-name terraform hello_world_function
   ```

1. Usa el AWS CLI para invocar tu función localmente:

   ```
   $ aws lambda invoke --function-name hello_world_function --endpoint-url http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json
   ```

Para obtener más información acerca de este comando, consulta [Introducción a las pruebas con sam local start-lambda](using-sam-cli-local-start-lambda.md).

## Limitaciones de Terraform
<a name="using-samcli-terraform-unsupported"></a>

Las siguientes son limitaciones cuando se usa la CLI de AWS SAM con Terraform:
+ Funciones de Lambda vinculadas a varias capas.
+ Variables locales de Terraform que definen los vínculos entre los recursos.
+ Referencia a una función de Lambda que aún no se ha creado. Esto incluye las funciones que se definen en el atributo body del recurso de la API de REST.

Para evitar estas limitaciones, puedes ejecutar `terraform apply` cuando se agrega un nuevo recurso.