

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.

# Compatibilidad de la CLI de AWS SAM con Terraform
<a name="terraform-support"></a>

En esta sección, se describe el uso de la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) en tus Terraform proyectos y Terraform en la nube.

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**
+ [Introducción a compatibilidad de Terraform con CLI de AWS SAM](gs-terraform-support.md)
+ [Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md)
+ [Uso de la CLI de AWS SAM con Serverless.tf para la depuración y las pruebas locales](using-samcli-serverlesstf.md)
+ [CLI de AWS SAM con referencia de Terraform](terraform-reference.md)
+ [¿Cuál es la compatibilidad de la CLI de AWS SAM con Terraform?](#what-is-terraform-support)

# Introducción a compatibilidad de Terraform con CLI de AWS SAM
<a name="gs-terraform-support"></a>

En este tema se explica cómo empezar a utilizar la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) conTerraform.

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**
+ [Requisitos previos de Terraform para la CLI de AWS SAM](#gs-terraform-support-prerequisites)
+ [Uso de comandos de la CLI de AWS SAM con Terraform](#gs-terraform-support-using)
+ [Configuración para proyectos de Terraform](#gs-terraform-support-projects)
+ [Configuración para Terraform Cloud](#gs-terraform-support-cloud)

## Requisitos previos de Terraform para la CLI de AWS SAM
<a name="gs-terraform-support-prerequisites"></a>

Completa todos los requisitos previos para empezar a utilizar la CLI de AWS SAM en sus proyectos de Terraform.

1. 

**Instala o actualiza la CLI de AWS SAM**

   Para comprobar si tienes la CLI de AWS SAM instalada, ejecuta lo siguiente:

   ```
   $ sam --version
   ```

   Si la CLI de AWS SAM ya está instalada, el resultado mostrará una versión. Para actualizar a la versión más reciente, consulta [Actualización de AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

   Para obtener instrucciones sobre la instalación de la CLI de AWS SAM junto con todos sus requisitos previos, consulta[Instala la AWS SAM CLI](install-sam-cli.md).

1. 

**Instalar Terraform**

   Para comprobar si instalaste Terraform, ejecuta lo siguiente:

   ```
   $ terraform -version
   ```

   Para instalar Terraform, consulta [Instalar Terraform](https://developer.hashicorp.com/terraform/downloads) en el *registro de Terraform*.

1. 

**Instala Docker para realizar el testeo local**

   La CLI de AWS SAM requiere Docker para las pruebas locales. Para instalarDocker, consulta [Instalación de Docker para usarlo con la CLI de AWS SAM](install-docker.md).

## Uso de comandos de la CLI de AWS SAM con Terraform
<a name="gs-terraform-support-using"></a>

Cuando ejecuta un comando compatible con la CLI de AWS SAM, utiliza la opción `--hook-name` y proporcione el valor `terraform`. A continuación, se muestra un ejemplo:

```
$ sam local invoke --hook-name terraform
```

Puedes configurar esta opción en su archivo de configuración de la CLI de AWS SAM con lo siguiente:

```
hook_name = "terraform"
```

## Configuración para proyectos de Terraform
<a name="gs-terraform-support-projects"></a>

Completa los pasos de este tema para utilizar la CLI de AWS SAM con proyectos de Terraform.

No se requiere ninguna configuración adicional si crea sus AWS Lambda artefactos fuera de su Terraform proyecto. Consulte [Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md) para empezar a utilizar el AWS SAMCLI.

Si crea los artefactos de Lambda en sus proyectos de Terraform, debes hacer lo siguiente:

1. Instalación de Python 3.8 o posterior

1. Instala la herramienta Make.

1. Define la lógica de creación de artefactos de Lambda en su proyecto de Terraform.

1. Define un recurso `sam metadata` para informar su lógica de compilación a la CLI de AWS SAM.

1. Utilice el AWS SAMCLI `sam build` comando para crear sus artefactos Lambda.

### Instalación de Python 3.8 o posterior
<a name="gs-terraform-support-projects-python"></a>

PythonSe requiere 3.8 o una versión más reciente para su uso con AWS SAMCLI. Cuando se ejecuta `sam build`, la AWS SAM de Python crea `makefiles` que contiene comandos de CLI para crear sus artefactos de Lambda.

Para obtener instrucciones de instalación, consulta la página [Downloading Python](https://wiki.python.org/moin/BeginnersGuide/Download) (Descarga de Python) en la *Guía para principiantes* de Python.

Compruebe que Python 3.8 o una versión posterior esté agregada a la ruta de su máquina ejecutando:

```
$ python --version
```

El resultado debe mostrar una versión de Python 3.8 o posterior.

### Instala la herramienta Make.
<a name="gs-terraform-support-projects-make"></a>

GNU[Make](https://www.gnu.org/software/make/) es una herramienta que controla la generación de ejecutables y otros archivos que no son el origen del proyecto. La CLI de AWS SAM crea `makefiles` que se basa en esta herramienta para crear sus artefactos de Lambda.

Si no has instalado Make en su máquina local, instálalo antes de continuar.

Para Windows, puedes realizar la instalación mediante [Chocolatey](https://chocolatey.org/). Para obtener instrucciones, consulta [Uso de Chocolatey](https://www.technewstoday.com/install-and-use-make-in-windows/#using-chocolatey) en *Cómo instalar y usar “Make” en Windows*

### Define la lógica de construcción de los artefactos de Lambda
<a name="gs-terraform-support-projects-logic"></a>

Utiliza el tipo de recurso `null_resource` Terraform para definir la lógica de compilación de Lambda. El siguiente es un ejemplo que utiliza un script de compilación personalizado para crear una función de Lambda.

```
resource "null_resource" "build_lambda_function" {
    triggers = {
        build_number = "${timestamp()}" 
    }

    provisioner "local-exec" {
        command =  substr(pathexpand("~"), 0, 1) == "/"? "./py_build.sh \"${local.lambda_src_path}\" \"${local.building_path}\" \"${local.lambda_code_filename}\" Function" : "powershell.exe -File .\\PyBuild.ps1 ${local.lambda_src_path} ${local.building_path} ${local.lambda_code_filename} Function"
    }
}
```

### Define un recurso sam metadata
<a name="gs-terraform-support-projects-metadata"></a>

El recurso `sam metadata` es un tipo de recurso `null_resource` Terraform que proporciona a la CLI de AWS SAM la información que necesita para localizar los artefactos de Lambda. Se requiere un recurso de `sam metadata` único para cada función o capa de Lambda del proyecto. Para obtener más información sobre este tipo de recurso, consulta [null\$1resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) en el *registro de Terraform*.

**Para definir un recurso sam metadata**

1. Asigne un nombre al recurso empezando por `sam_metadata_` para identificar el recurso como un recurso sam metadata.

1. Define las propiedades de sus artefactos Lambda dentro del bloque de `triggers` de tu recurso.

1. Especifica el `null_resource` que contiene la lógica de compilación de Lambda con el argumento `depends_on`.

   La siguiente es una plantilla de ejemplo:

   ```
   resource "null_resource" "sam_metadata_..." {
     triggers = {
       resource_name = resource_name
       resource_type = resource_type
       original_source_code = original_source_code
       built_output_path = built_output_path
     }
     depends_on = [
       null_resource.build_lambda_function # ref to your build logic
     ]
   }
   ```

   El siguiente es un recurso `sam metadata` de ejemplo:

   ```
   resource "null_resource" "sam_metadata_aws_lambda_function_publish_book_review" {
       triggers = {
           resource_name = "aws_lambda_function.publish_book_review"
           resource_type = "ZIP_LAMBDA_FUNCTION"
           original_source_code = "${local.lambda_src_path}"
           built_output_path = "${local.building_path}/${local.lambda_code_filename}"
       }
       depends_on = [
           null_resource.build_lambda_function
       ]
   }
   ```

El contenido del recurso `sam metadata` variará según el tipo de recurso de Lambda (función o capa) y el tipo de empaquetado (ZIP o imagen). Para obtener más información y ejemplos, consulta [recurso de metadatos de sam](terraform-sam-metadata.md).

Al configurar un recurso `sam metadata` y utilizar un comando compatible con la CLI de AWS SAM, la CLI de AWS SAM generará el archivo de metadatos antes de ejecutar el comando de la CLI de AWS SAM. Una vez hayas generado este archivo, puedes usar la opción `--skip-prepare-infra` con comandos futuros de la CLI de AWS SAM para omitir el proceso de generación de metadatos y ahorrar tiempo. Esta opción solo debe usarse si no ha realizado ningún cambio en la infraestructura, como la creación de nuevas funciones de Lambda o nuevos puntos de conexión de API.

### Utiliza la CLI de AWS SAM para crear sus artefactos de Lambda.
<a name="gs-terraform-support-projects-build"></a>

Utilice el AWS SAMCLI `sam build` comando para crear sus artefactos Lambda. Cuando se ejecuta `sam build`, la CLI de AWS SAM hace lo siguiente:

1. Busca recursos `sam metadata` en tu proyecto de Terraform para conocer y localizar tus recursos de Lambda.

1. Inicia la lógica de compilación de Lambda para crear sus artefactos de Lambda.

1. Crea un `.aws-sam` directorio que organiza el Terraform proyecto para usarlo con los AWS SAMCLI `sam local` comandos.

**Para crear con sam build**

1. Desde el directorio que contiene el módulo raíz de Terraform, ejecuta lo siguiente:

   ```
   $ sam build --hook-name terraform
   ```

1. Para crear una función o capa de Lambda específica, ejecuta lo siguiente

   ```
   $ sam build --hook-name terraform lambda-resource-id
   ```

   El ID de recurso de Lambda puede ser el nombre de la función de Lambda o la dirección completa del recurso de Terraform, como `aws_lambda_function.list_books` o `module.list_book_function.aws_lambda_function.this[0]`.

Si el código de origen de la función u otros archivos de configuración de Terraform se encuentran fuera del directorio que contiene el módulo raíz de Terraform, debes especificar la ubicación. Utiliza la opción `--terraform-project-root-path` para especificar la ruta absoluta o relativa al directorio de nivel superior que contiene estos archivos. A continuación, se muestra un ejemplo:

```
$ sam build --hook-name terraform --terraform-project-root-path ~/projects/terraform/demo
```

#### Creación mediante un contenedor
<a name="gs-terraform-support-projects-build-container"></a>

Al ejecutar el AWS SAMCLI `sam build` comando, puede configurarlo AWS SAMCLI para que compile su aplicación mediante un Docker contenedor local.

**nota**  
Debe tener Docker instalado y configurado. Para obtener instrucciones, consulta [Instalación de Docker para usarlo con la CLI de AWS SAM](install-docker.md).

**Para compilar usando un contenedor**

1. Crea un `Dockerfile` que contenga las herramientas Terraform, Python y Make. También debes incluir el tiempo de ejecución de la función de Lambda.

   A continuación, se muestra un `Dockerfile` de ejemplo:

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:2
   
   RUN yum -y update \
       && yum install -y unzip tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \
       less libcurl-devel openssl openssl-devel readline-devel xz-devel \
       zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \
       && rm -rf /var/cache/yum
   
   RUN yum -y install make \
       && yum -y install zip
   
   RUN yum install -y yum-utils \
       && yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo \
       && yum -y install terraform \
       && terraform --version
   
   # AWS Lambda Builders
   RUN amazon-linux-extras enable python3.8
   RUN yum clean metadata && yum -y install python3.8
   RUN curl -L get-pip.io | python3.8
   RUN pip3 install aws-lambda-builders
   RUN ln -s /usr/bin/python3.8 /usr/bin/python3
   RUN python3 --version
   
   VOLUME /project
   WORKDIR /project
   
   ENTRYPOINT ["sh"]
   ```

1. Use [https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/) para crear su imagen de Docker.

   A continuación, se muestra un ejemplo:

   ```
   $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
   ```

1. Ejecute el AWS SAMCLI `sam build` comando con las `--build-image` opciones `--use-container` y.

   A continuación, se muestra un ejemplo:

   ```
   $ sam build --use-container --build-image terraform-build:v1
   ```

### Pasos a seguir a continuación
<a name="gs-terraform-support-projects-next"></a>

Para empezar a utilizar la CLI de AWS SAM en sus proyectos de Terraform, consulta [Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md).

## Configuración para Terraform Cloud
<a name="gs-terraform-support-cloud"></a>

Se recomienda usar Terraform v1.6.0 o posterior. Si usa una versión anterior, debes generar un archivo de plan de Terraform de forma local. El archivo del plan local AWS SAM CLI proporciona la información que necesita para realizar las pruebas y la depuración locales.

**Para generar un archivo de plan local**
**nota**  
Estos pasos no son necesarios con Terraform v1.6.0 o posterior. Para empezar a utilizar el AWS SAM CLI withTerraform Cloud, consulte[Uso de la CLI de AWS SAM con Terraform](using-samcli-terraform.md).

1. **Configurar un token de API**: el tipo de token dependerá de su nivel de acceso. Para obtener más información, consulta [Tokens de API](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens) en la *documentación de Terraform Cloud*.

1. **Configurar la variable de entorno del token de la API**: el siguiente es un ejemplo de la línea de comandos:

   ```
   $ export TOKEN="<api-token-value>"
   ```

1. **Obtenga su ID de ejecución**: en la Terraform Cloud consola, busque el ID de Terraform ejecución de la ejecución que desee usar con el AWS SAMCLI.

   El ID de ejecución se encuentra en la ruta de navegación del proceso de ejecución.  
![\[Ruta de navegación en Terraform Cloud que muestra el ID de ejecución.\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/images/terraform-01.png)

1. **Obtener el archivo del plan**: con su token de API, obtengas el archivo del plan local. A continuación, se muestra un ejemplo de la línea de comando:

   ```
   curl \
      --header "Authorization: Bearer $TOKEN" \
      --header "Content-Type: application/vnd.api+json" \
      --location \
      https://app.terraform.io/api/v2/runs/<run ID>/plan/json-output \
      > custom_plan.json
   ```

Ahora ya puedes utilizar la CLI de AWS SAM con Terraform Cloud. Si utilizas un comando compatible con la CLI de AWS SAM, utiliza la opción `--terraform-plan-file` para especificar el nombre y la ruta del archivo del plan local. A continuación, se muestra un ejemplo:

```
$ sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
```

A continuación, se muestra un ejemplo con el comando `sam local start-api`:

```
$ sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
```

Para ver una aplicación de muestra que pueda usar con estos ejemplos, consulta [api\$1gateway\$1v2\$1tf\$1cloud](https://github.com/aws-samples/aws-sam-terraform-examples/tree/main/ga/api_gateway_v2_tf_cloud) en el *repositorio de GitHub aws-samples*.

### Pasos a seguir a continuación
<a name="gs-terraform-support-cloud-next"></a>

Para comenzar a usar la CLI de AWS SAM con Terraform Cloud,consulta [Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md).

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

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

La interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) se puede usar con los módulos Serverless.tf para depurar y probar localmente sus AWS Lambda funciones y capas. Se admiten los siguientes comandos de la CLI de AWS SAM:
+ `sam build`
+ `sam local invoke`
+ `sam local start-api`
+ `sam local start-lambda`

**nota**  
Las versiones 4.6.0 y posteriores de Serverless.tf admiten la integración de la CLI de AWS SAM.

Para empezar a utilizarla AWS SAMCLI con sus módulos Serverless.tf, actualice a la última versión de Serverless.tf y a la. AWS SAMCLI

A partir de la **versión 6.0.0 de serverless.tf**, debes establecer el parámetro `create_sam_metadata` como `true`. Esto genera los recursos de metadatos que requiere el comando. AWS SAMCLI `sam build`

Para obtener más información sobre Serverless.tf, consulte la [terraform-aws-lambda-module](https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest).

# CLI de AWS SAM con referencia de Terraform
<a name="terraform-reference"></a>

Esta sección es la referencia para usar la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) con Terraform fines de depuración y pruebas locales.

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

## AWS SAM referencia de funciones compatibles
<a name="terraform-reference-sam"></a>

La documentación de referencia sobre las características de la CLI de AWS SAM que se admiten para su uso con Terraform se encuentra aquí:
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Referencia específica de Terraform
<a name="terraform-reference-specific"></a>

La documentación de referencia específica para usar la CLI de AWS SAM con Terraform se encuentra aquí:
+ [recurso de metadatos de sam](terraform-sam-metadata.md)

# recurso de metadatos de sam
<a name="terraform-sam-metadata"></a>

Esta página contiene información de referencia sobre el tipo de recurso **sam metadata resource** utilizado en los proyectos de Terraform.
+ Para obtener una introducción al uso de la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) conTerraform, consulte[¿Cuál es la compatibilidad de la CLI de AWS SAM con Terraform?](terraform-support.md#what-is-terraform-support).
+ Para utilizar la CLI de AWS SAM con Terraform, consulta [Uso de la CLI de AWS SAM con Terraform para la depuración y las pruebas locales](using-samcli-terraform.md).

**Topics**
+ [Argumentos](#terraform-sam-metadata-arguments)
+ [Ejemplos](#terraform-sam-metadata-examples)

## Argumentos
<a name="terraform-sam-metadata-arguments"></a>


****  

| Argumento | Description (Descripción) | 
| --- | --- | 
| built\$1output\$1path | El camino hacia los artefactos creados por su AWS Lambda función. | 
| docker\$1build\$1args | Cadena decodificada del objeto JSON de argumentos de compilación de Docker. Este argumento es opcional. | 
| docker\$1context | La ruta al directorio que contienes el contexto de creación de la imagen de Docker. | 
| docker\$1file |  La ruta del archivo de Docker. Esta ruta es relativa a la ruta `docker_context`. Este argumento es opcional. El valor predeterminado es `Dockerfile`.  | 
| docker\$1tag | El valor de la etiqueta de imagen de Docker creada. Este valor es opcional. | 
| depends\$1on | La ruta al recurso de construcción para la función o capa de Lambda. Para obtener más información, consulta [El argumento **depends\$1on**](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on) en el registro de Terraform. | 
| original\$1source\$1code |  La ruta a la que se define la función de Lambda. Este valor puede ser una cadena, una matriz de cadenas o un objeto JSON decodificado como cadena. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | El nombre de la función de Lambda. | 
| resource\$1type |  El formato del tipo de paquete de funciones de Lambda. Los valores aceptados son: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | La ruta al código de recursos de Lambda en el objeto JSON. Define esta propiedad cuando original\$1source\$1code sea un objeto JSON. | 

## Ejemplos
<a name="terraform-sam-metadata-examples"></a>

### recurso de metadatos de sam que hace referencia a una función de Lambda mediante el tipo de paquete ZIP
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### recurso de metadatos de sam que hace referencia a una función de Lambda mediante el tipo de paquete de imagen
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### recurso de metadatos sam que hace referencia a una capa de Lambda
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```

## ¿Cuál es la compatibilidad de la CLI de AWS SAM con Terraform?
<a name="what-is-terraform-support"></a>

Utilice la interfaz de línea de AWS Serverless Application Model comandos (AWS SAMCLI) con sus Terraform proyectos o Terraform Cloud para realizar depuraciones y pruebas locales de:
+ AWS Lambda funciones y capas.
+ Amazon API Gateway APIs.

Para ver una introducción a Terraform, consulta [¿Qué es Terraform?](https://developer.hashicorp.com/terraform/intro) en el *sitio web HashiCorp Terraform*.

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

**nota**  
Como parte del paso de análisis de AWS SAMCLI la integración, AWS SAMCLI los procesos y los comandos del usuario generan archivos y datos del proyecto. El resultado del comando debe permanecer sin cambios, pero en algunos entornos, el entorno o el ejecutor pueden introducir registros o información adicionales en el resultado.

**Topics**
+ [¿Qué es el? AWS SAMCLI](#what-is-terraform-support-sam-cli)
+ [¿Cómo puedo usar la CLI de AWS SAM con Terraform?](#what-is-terraform-support-how)
+ [Pasos a seguir a continuación](#what-is-terraform-support-next)

### ¿Qué es el? AWS SAMCLI
<a name="what-is-terraform-support-sam-cli"></a>

 AWS SAMCLIEs una herramienta de línea de comandos que puede utilizar con AWS SAM plantillas e integraciones de terceros compatibles, por ejemploTerraform, para crear y ejecutar aplicaciones sin servidor. Para obtener una introducción a la AWS SAMCLI, consulte. [¿Qué es el? AWS SAMCLI](what-is-sam-overview.md#what-is-sam-cli)

The AWS SAMCLI admite los siguientes comandos paraTerraform:
+ `sam local invoke`— Inicie una única invocación local de un recurso de AWS Lambda función. 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).
+ `sam local start-api`: ejecuta tus recursos de Lambda localmente y pruébalos a través de un host de servidor HTTP local. Este tipo de pruebas resulta útil para las funciones de Lambda que invoca un punto de conexión de API Gateway. 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).
+ `sam local start-lambda`— Inicie un punto final local para su función Lambda para invocarla localmente mediante AWS Command Line Interface ()AWS CLI o. SDKs 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).

### ¿Cómo puedo usar la CLI de AWS SAM con Terraform?
<a name="what-is-terraform-support-how"></a>

**El [flujo de trabajo principal de Terraform](https://developer.hashicorp.com/terraform/intro/core-workflow) consta de tres etapas: **escribir**, **planificar** y aplicar**. Con la AWS SAMCLI compatibilidad conTerraform, puede aprovechar el AWS SAMCLI `sam local` conjunto de comandos y, al mismo tiempo, seguir utilizando sus Terraform flujos de trabajo para administrar sus aplicaciones AWS. En general, esto significa lo siguiente:
+ **Escribir**: cree su infraestructura como código mediante Terraform.
+ **Probar y depurar**: usa la CLI de AWS SAM para probar y depurar sus aplicaciones de forma local.
+ **Planificar**: obtengas una vista previa de los cambios antes de aplicarlos.
+ **Aplicar**: aprovisione su infraestructura.

Para ver un ejemplo del uso de AWS SAMCLI withTerraform, consulta [Better together: AWS SAMCLI y HashiCorp Terraform](https://aws.amazon.com/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform/) en el *blog de AWS informática*.

### Pasos a seguir a continuación
<a name="what-is-terraform-support-next"></a>

Para completar todos los requisitos previos y configurar Terraform, consulta[Introducción a compatibilidad de Terraform con CLI de AWS SAM](gs-terraform-support.md).