As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conceitos básicos do suporte Terraform para AWS SAM CLI
Este tópico aborda como começar a usar a interface de linha de AWS Serverless Application Model comando (AWS SAMCLI) comTerraform.
Para fornecer feedback e enviar solicitações de atributos, crie um Problema GitHub
Tópicos
Pré-requisitos AWS SAM CLI Terraform
Preencha todos os pré-requisitos para começar a usar o AWS SAMCLI com seus projetos Terraform.
-
Instalar ou atualizar a AWS SAM CLI
Para verificar se você tem o AWS SAMCLI instalado, execute o seguinte:
$sam --versionSe o AWS SAMCLI já estiver instalado, a saída exibirá uma versão. Para atualizar para a versão mais recente, consulte Atualizando o AWS SAM CLI.
Para obter instruções sobre como instalar o AWS SAMCLI junto com todos os seus pré-requisitos, consulte Instale o AWS SAM CLI.
-
Instalar o Terraform
Para verificar se você instalou o Terraform, execute o seguinte:
$terraform -versionPara instalarTerraform, consulte Instalar Terraform
no registro Terraform. -
Instale Docker para testes locais
O AWS SAM CLI exige Docker para testes locais. Para instalar o Docker, consulte Instalando o Docker para usar com o AWS SAM CLI.
Usando comandos AWS SAMCLI com Terraform
Ao executar um comando AWS SAMCLI compatível, use a --hook-name opção e forneça o terraform valor. Veja um exemplo a seguir:
$sam local invoke --hook-name terraform
Você pode configurar essa opção em seu arquivo AWS SAMCLI de configuração com o seguinte:
hook_name = "terraform"
Configurado para projetos Terraform
Conclua as etapas deste tópico para usar o AWS SAMCLI com projetos Terraform .
Nenhuma configuração adicional é necessária se você criar seus AWS Lambda artefatos fora do Terraform projeto. Veja Usando o AWS SAMCLI with Terraform para depuração e teste locais para começar a usar AWS SAMCLI o.
Se você criar seus artefatos Lambda em seus projetos Terraform, deverá fazer o seguinte:
-
Instalar o Python 3.8 ou mais recente
-
Instale a ferramenta Make.
-
Defina sua lógica de construção de artefatos Lambda em seu projeto Terraform.
-
Defina um recurso
sam metadatapara informar sua lógica de construção AWS SAMCLI. -
Use o AWS SAMCLI
sam buildcomando para criar seus artefatos do Lambda.
Instalar o Python 3.8 ou mais recente
Python3.8 ou mais recente é necessário para uso com o. AWS SAMCLI Quando você executa sam build, cria AWS SAMCLI que contêm comandos makefiles Python para criar seus artefatos do Lambda.
Para obter instruções de instalação, consulte Descarregando Python
Verifique se o Python 3.8 ou mais recente foi adicionado ao caminho da sua máquina executando:
$python --version
A saída deve exibir uma versão do Python que seja 3.8 ou mais recente.
Instale a ferramenta Make
O GNU Make é uma ferramenta que controla a geração de executáveis e outros arquivos não fonte para seu projeto. O AWS SAMCLI cria makefiles que dependem dessa ferramenta para criar seus artefatos Lambda.
Se você não tiver Make instalado em sua máquina local, instale-o antes de prosseguir.
Para Windows, você pode instalar usando o Chocolatey
Defina a lógica de construção dos artefatos Lambda
Use o tipo de recurso null_resource Terraform para definir sua lógica de criação do Lambda. Veja a seguir um exemplo que usa um script de construção personalizado para criar uma função do 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 o recurso sam metadata
O recurso sam metadata é um tipo de recurso null_resource Terraform que AWS SAMCLI fornece as informações necessárias para localizar seus artefatos do Lambda. É necessário um recurso sam metadata exclusivo para cada função ou camada do Lambda em seu projeto. Para saber mais sobre esse tipo de recurso, consulte null_resource
Para definir um recurso sam metadata
-
Nomeie seu recurso começando com
sam_metadata_para identificá-lo como um recurso sam metadata. -
Defina as propriedades do artefato Lambda dentro do bloco
triggersdo seu recurso. -
Especifique o
null_resourceque contém sua lógica de construção do Lambda com o argumentodepends_on.Veja um exemplo de modelo a seguir:
resource "null_resource" "sam_metadata_..." { triggers = { resource_name =resource_nameresource_type =resource_typeoriginal_source_code =original_source_codebuilt_output_path =built_output_path} depends_on = [ null_resource.build_lambda_function# ref to your build logic ] }O seguinte é um exemplo do recurso
sam metadata: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 ] }
O conteúdo do seu recurso sam metadata variará com base no tipo de recurso Lambda (função ou camada) e no tipo de embalagem (ZIP ou imagem). Para obter mais informações e exemplos, consulte recurso de metadados do sam.
Quando você configura um recurso sam metadata e usa um comando AWS SAMCLI compatível, o AWS SAMCLI gera o arquivo de metadados antes de executar o comando AWS SAMCLI. Depois de gerar esse arquivo, você pode usar a --skip-prepare-infra opção with future AWS SAMCLI commands para pular o processo de geração de metadados e economizar tempo. Essa opção só deve ser usada se você não tiver feito nenhuma alteração na infraestrutura, como criar novas funções do Lambda ou novos endpoints de API.
Use o AWS SAMCLI para criar seus artefatos Lambda
Use o AWS SAMCLI sam build comando para criar seus artefatos do Lambda. Quando você executa sam build, o AWS SAM CLI faz o seguinte:
-
Procura recursos
sam metadataem seu projeto Terraform para conhecer e localizar seus recursos do Lambda. -
Inicia sua lógica de criação do Lambda para criar seus artefatos do Lambda.
-
Cria um
.aws-samdiretório que organiza seu Terraform projeto para uso com os AWS SAMCLIsam localcomandos.
Para compilar com sam build
-
No diretório que contém seu módulo raiz Terraform, execute o seguinte:
$sam build --hook-name terraform -
Para criar uma função ou camada específica do Lambda, execute o seguinte
$sam build --hook-name terraformlambda-resource-idO ID do recurso Lambda pode ser o nome da função do Lambda ou o endereço completo do Terraform recurso, como
aws_lambda_function.list_booksoumodule.list_book_function.aws_lambda_function.this[0].
Se o código-fonte da função ou outros arquivos de configuração Terraform estiverem localizados fora do diretório que contém o módulo raiz Terraform, você precisará especificar o local. Use a opção --terraform-project-root-path para especificar o caminho absoluto ou relativo para o diretório de nível superior que contém esses arquivos. Veja um exemplo a seguir:
$sam build --hook-name terraform --terraform-project-root-path~/projects/terraform/demo
Crie usando um contêiner
Ao executar o AWS SAMCLI sam build comando, você pode configurar o AWS SAMCLI para criar seu aplicativo usando um Docker contêiner local.
nota
Você deve ter a Docker instalada e configurada. Para instruções, consulte Instalando o Docker para usar com o AWS SAM CLI.
Para construir usando um contêiner
-
Crie um
Dockerfileque contenha as ferramentas Terraform, Python e Make. Você também deve incluir o tempo de execução da função do Lambda.O seguinte é um exemplo de
Dockerfile: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"] -
Use docker build
para criar sua Docker imagem. Veja um exemplo a seguir:
$docker build --tagterraform-build:v1<path-to-directory-containing-Dockerfile> -
Execute o AWS SAMCLI
sam buildcomando com--use-containeras--build-imageopções e.Veja um exemplo a seguir:
$sam build --use-container --build-imageterraform-build:v1
Próximas etapas
Para começar a usar o AWS SAM CLI com seus projetos Terraform, consulte Usando o AWS SAMCLI with Terraform para depuração e teste locais.
Configurar para o Terraform Cloud
É altamente recomendável que você use Terraform v1.6.0 ou mais recente. Se estiver usando uma versão mais antiga, deverá gerar um arquivo de plano Terraform no local. O arquivo do plano local AWS SAM CLI fornece as informações necessárias para realizar testes e depuração locais.
Para gerar um arquivo de plano local
nota
Essas etapas não são necessárias para Terraform v1.6.0 ou são mais recentes. Para começar a usar o AWS SAM CLI comTerraform Cloud, consulteUso do AWS SAM CLI com a Terraform.
-
Configure um token de API – O tipo de token dependerá do seu nível de acesso. Para saber mais, consulte Implantações
na documentação do Terraform Cloud. -
Defina sua variável de ambiente de token de API – Veja a seguir um exemplo da linha de comando:
$export TOKEN="<api-token-value>" -
Obtenha seu ID de execução — No Terraform Cloud console, localize o ID de Terraform execução da execução que você gostaria de usar com AWS SAMCLI o.
O ID da execução está localizado no caminho do rastro de navegação da sua execução.
-
Busque o arquivo do plano – Usando seu token de API, obtenha seu arquivo de plano local. Veja a seguir um exemplo da linha 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
Agora você está pronto para usar o AWS SAM CLI com Terraform Cloud. Ao usar um comando AWS SAMCLI compatível, use a opção --terraform-plan-file para especificar o nome e o caminho do seu arquivo de plano local. Veja um exemplo a seguir:
$sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
Veja a seguir um comando de exemplo que usa a sam local start-api:
$sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
Para um aplicativo de amostra que você pode usar com esses exemplos, consulte api_gateway_v2_tf_cloud
Próximas etapas
Para começar a usar o AWS SAMCLI com Terraform Cloud, consulte Usando o AWS SAMCLI with Terraform para depuração e teste locais.