Introducción al Terraform soporte para AWS SAM CLI - AWS Serverless Application Model

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.

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.

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

  2. Instalación Terraform

    Para comprobar si tiene Terraform instalado, ejecute lo siguiente:

    $ terraform -version

    Para instalar Terraform, consulte Instalar Terraform en la Terraform registro.

  3. 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:

  1. Instalación Python 3.8 o más reciente

  2. Instale la Make herramienta.

  3. Defina la lógica de construcción de sus artefactos Lambda dentro de su Terraform proyecto.

  4. Defina un sam metadata recurso para informar al AWS SAM CLI de tu lógica de construcción.

  5. Use la AWS SAM CLI sam buildcomando 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 (Descarga de Python) en la Guía para principiantes de 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. Para obtener instrucciones, consulte Uso de Chocolatey en Cómo instalar y usar “Make” en Windows

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 en Terraform registro.

Para definir un sam metadata recurso
  1. Asigne un nombre sam_metadata_ a su recurso empezando por para identificar el recurso como sam metadata recurso.

  2. Defina las propiedades de sus artefactos Lambda dentro del bloque de triggers de su recurso.

  3. Especifique 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 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 buildcomando para crear sus artefactos Lambda. Cuando corressam build, el AWS SAM CLI hace lo siguiente:

  1. Busca sam metadata recursos en tu Terraform proyecte para conocer y localizar sus recursos de Lambda.

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

  3. Crea un .aws-sam directorio que organiza sus Terraform proyecto para su uso con el AWS SAM CLI sam localcomandos.

Para crear con sam build
  1. Desde el directorio que contiene su Terraform módulo raíz, ejecute lo siguiente:

    $ sam build --hook-name terraform
  2. 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 buildcomando, 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
  1. 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"]
  2. Utilizar docker buildpara construir tu Docker imagen.

    A continuación, se muestra un ejemplo:

    $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
  3. Ejecuta el AWS SAM CLI sam buildcomando 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.

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

  2. Configura la variable de entorno del API token: el siguiente es un ejemplo de la línea de comandos:

    $ export TOKEN="<api-token-value>"
  3. 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.

    Ruta de miga de pan en Terraform Cloud que muestra el ID de ejecución.
  4. 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 en aws-samples GitHub repositorio.

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.