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.
Introducción al Terraform soporte para AWS SAM CLI
En este tema se explica cómo empezar a utilizar el AWS Serverless Application Model Interfaz de línea de comandos (AWS SAM CLI) con Terraform.
Para enviar comentarios y enviar solicitudes de funciones, cree un GitHub Problema
Temas
AWS SAM CLI Terraform Requisitos previos de para la de
Complete todos los requisitos previos para empezar a utilizar el AWS SAM CLI con tu Terraform proyectos.
-
Instale o actualice la de AWS SAM CLI
Para comprobar si tienes el AWS SAM CLI instalado, ejecute lo siguiente:
$
sam --version
Si el archivo de AWS SAM CLI ya está instalado, el resultado mostrará una versión. Para actualizar a la versión más reciente, consulte Actualización de la CLI de AWS SAM.
Para obtener instrucciones sobre cómo instalar el AWS SAM CLI junto con todos sus requisitos previos, consulteInstale la AWS SAM CLI.
-
Instalación Terraform
Para comprobar si tiene Terraform instalado, ejecute lo siguiente:
$
terraform -version
Para instalar Terraform, consulte Instalar Terraform
en la Terraform registro. -
Instalación Docker para pruebas locales
La AWS SAM CLI requiere Docker para pruebas locales. Para instalar Docker, consulte Instalación de Docker para usarlo con la CLI de AWS SAM.
Utilización AWS SAM CLI comandos con Terraform
Cuando ejecutas un compatible AWS SAM CLI comando, utilice la --hook-name
opción y proporcione el terraform
valor. A continuación, se muestra un ejemplo:
$
sam local invoke --hook-name terraform
Puede configurar esta opción en su AWS SAM CLI archivo de configuración con lo siguiente:
hook_name = "terraform"
Configurado para Terraform proyectos
Complete los pasos de este tema para usar el AWS SAM CLI with Terraform proyectos.
No se requiere ninguna configuración adicional si construyes tu AWS Lambda artefactos fuera de tu Terraform proyecto. Consulte Uso de AWS SAM CLI with Terraform para la depuración y las pruebas locales para empezar a utilizar el AWS SAM CLI.
Si crea sus artefactos de Lambda dentro de su Terraform proyectos, debe hacer lo siguiente:
-
Instalación Python 3.8 o más reciente
-
Instale la Make herramienta.
-
Defina la lógica de construcción de sus artefactos Lambda dentro de su Terraform proyecto.
-
Defina un
sam metadata
recurso para informar al AWS SAM CLI de tu lógica de construcción. -
Use la AWS SAM CLI
sam build
comando para crear sus artefactos Lambda.
Instalación Python 3.8 o más reciente
Python Se requiere la versión 3.8 o una versión más reciente para su uso con AWS SAM CLI. Cuando corressam build
, el AWS SAM CLI crea makefiles
que contienen Python comandos para crear sus artefactos Lambda.
Para obtener instrucciones de instalación, consulte la página Downloading Python
Compruebe que Python 3.8 o una versión posterior se haya agregado a la ruta de su máquina ejecutando:
$
python --version
El resultado debe mostrar una versión de Python 3.8 o posterior.
Instale la Make herramienta
GNU Make es una herramienta que controla la generación de ejecutables y otros archivos que no son fuente para su proyecto. La AWS SAM CLI crea makefiles
que se basan en esta herramienta para crear sus artefactos de Lambda.
Si no tiene Make instalado en su máquina local, instálelo antes de continuar.
Para Windows, puede realizar la instalación mediante Chocolatey
Defina la lógica de construcción de los artefactos de Lambda
Utilizar la null_resource
Terraform tipo de recurso 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" } }
Defina un sam metadata recurso
El sam metadata
recurso es un null_resource
Terraform tipo de recurso que proporciona AWS SAM CLI con la información que necesita para localizar sus artefactos 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, consulte null_resource
Para definir un sam metadata recurso
-
Asigne un nombre
sam_metadata_
a su recurso empezando por para identificar el recurso como sam metadata recurso. -
Defina las propiedades de sus artefactos Lambda dentro del bloque de
triggers
de su recurso. -
Especifique el
null_resource
que contiene la lógica de compilación de Lambda con el argumentodepends_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 sam metadata
recurso variará en función del tipo de recurso de Lambda (función o capa) y del tipo de empaquetado (ZIPo imagen). Para obtener más información y ejemplos, consulte recurso de metadatos de sam.
Cuando configura un sam metadata
recurso y utiliza uno compatible AWS SAM CLI comando, el AWS SAM CLI generará el archivo de metadatos antes de ejecutar el AWS SAM CLI comando. Una vez que haya generado este archivo, puede usar la --skip-prepare-infra
opción con future AWS SAM CLI comandos 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 API puntos de conexión.
Use la AWS SAM CLI para crear sus artefactos Lambda
Use la AWS SAM CLI sam build
comando para crear sus artefactos Lambda. Cuando corressam build
, el AWS SAM CLI hace lo siguiente:
-
Busca
sam metadata
recursos en tu Terraform proyecte para conocer y localizar sus recursos de Lambda. -
Inicia la lógica de compilación de Lambda para crear sus artefactos de Lambda.
-
Crea un
.aws-sam
directorio que organiza sus Terraform proyecto para su uso con el AWS SAM CLIsam local
comandos.
Para crear con sam build
-
Desde el directorio que contiene su Terraform módulo raíz, ejecute lo siguiente:
$
sam build --hook-name terraform
-
Para crear una función o capa de Lambda específica, ejecute 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 completo. Terraform dirección del recurso, como
aws_lambda_function.list_books
o.module.list_book_function.aws_lambda_function.this[0]
Si su función es código fuente u otro Terraform los archivos de configuración se encuentran fuera del directorio que contiene su Terraform módulo raíz, debe especificar la ubicación. Utilice 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
Al ejecutar el AWS SAM CLI sam build
comando, puede configurar el AWS SAM CLI para crear su aplicación utilizando un local Docker contenedor.
nota
Debe tener... Docker instalado y configurado. Para obtener instrucciones, consulte Instalación de Docker para usarlo con la CLI de AWS SAM.
Para compilar usando un contenedor
-
Cree uno
Dockerfile
que contenga el Terraform, Python, y Make herramientas. También debe 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"]
-
Utilizar docker build
para construir tu Docker imagen. A continuación, se muestra un ejemplo:
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
Ejecuta el AWS SAM CLI
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
Siguientes pasos
Para empezar a usar el AWS SAM CLI con tu Terraform proyectos, consulteUso de AWS SAM CLI with Terraform para la depuración y las pruebas locales.
Configurar para Terraform Cloud
Le recomendamos que utilice Terraform v1.6.0 o más reciente. Si utiliza una versión anterior, debe generar un Terraform planee el archivo de forma local. El archivo del plan local proporciona AWS SAM CLI con 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 para Terraform v1.6.0 o más reciente. Para empezar a utilizar el AWS SAM CLI with Terraform Cloud, consulte Utilización AWS SAM CLI with Terraform.
-
Configurar un API token: el tipo de token dependerá de su nivel de acceso. Para obtener más información, consulta los APITokens
en la Terraform Cloud documentación. -
Configura la variable de entorno del API token: el siguiente es un ejemplo de la línea de comandos:
$
export TOKEN="<api-token-value>
" -
Obtenga su ID de ejecución: del Terraform Cloud consola, localiza el ID de ejecución del Terraform ejecuta que te gustaría usar con la AWS SAM CLI.
El ID de ejecución se encuentra en la ruta de navegación del proceso de ejecución.
-
Obtenga el archivo del plan: con su API token, obtenga 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 está listo para usar el AWS SAM CLI with Terraform Cloud. Cuando se utiliza un soporte AWS SAM CLI utilice la --terraform-plan-file
opción 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, consulte api_gateway_v2_tf_cloud
Siguientes pasos
Para empezar a utilizar el AWS SAM CLI with Terraform Cloud, consulte Uso de AWS SAM CLI with Terraform para la depuración y las pruebas locales.