View a markdown version of this page

Nozioni di base su Terraform supporto per AWS SAM CLI - AWS Serverless Application Model

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nozioni di base su Terraform supporto per AWS SAM CLI

Questo argomento spiega come iniziare a utilizzare l'interfaccia a riga di AWS Serverless Application Model comando (AWS SAMCLI) conTerraform.

Per fornire feedback e inviare richieste di funzionalità, crea un GitHub problema.

AWS SAM CLI Terraform prerequisiti

Completa tutti i prerequisiti per iniziare a utilizzarli AWS SAMCLI con i tuoi Terraform progetti.

  1. Installa o aggiorna il AWS SAM CLI

    Per verificare se è AWS SAMCLI installato, esegui quanto segue:

    $ sam --version

    Se AWS SAMCLI è già installato, l'output mostrerà una versione. Per eseguire l'aggiornamento alla versione più recente, vedereAggiornamento del AWS SAMCLI.

    Per istruzioni sull'installazione e AWS SAMCLI su tutti i relativi prerequisiti, vedere. Installa il AWS SAMCLI

  2. Installa Terraform

    Per verificare se è Terraform stato installato, esegui quanto segue:

    $ terraform -version

    Per l'installazioneTerraform, vedi Installazione Terraform nel Terraform registro.

  3. Installa Docker per test locali

    I AWS SAMCLI requisiti Docker per i test locali. Per l'installazioneDocker, vedereInstallazione di Docker da utilizzare con AWS SAMCLI.

Utilizzo AWS SAM CLI comandi con Terraform

Quando esegui un AWS SAMCLI comando supportato, usa l'--hook-nameopzione e fornisci il terraform valore. Di seguito è riportato un esempio:

$ sam local invoke --hook-name terraform

Puoi configurare questa opzione nel tuo file AWS SAMCLI di configurazione con quanto segue:

hook_name = "terraform"

Configura per Terraform progetti

Completa i passaggi di questo argomento per utilizzare i Terraform progetti AWS SAMCLI with.

Non è richiesta alcuna configurazione aggiuntiva se crei i tuoi AWS Lambda artefatti all'esterno del progetto. Terraform Vedi Utilizzo di AWS SAM CLI con Terraform per il debug e il test locali per iniziare a usare il. AWS SAMCLI

Se crei i tuoi artefatti Lambda all'interno Terraform dei tuoi progetti, devi fare quanto segue:

  1. Installa 3.8 Python o versione successiva

  2. Installa lo strumento. Make

  3. Definisci la logica di costruzione degli artefatti Lambda all'interno del tuo progetto. Terraform

  4. Definisci una sam metadata risorsa per informarli della tua logica AWS SAMCLI di compilazione.

  5. Usa il AWS SAMCLI sam build comando per creare i tuoi artefatti Lambda.

Installa Python 3.8 o versioni successive

PythonÈ necessario 3.8 o versione successiva per l'utilizzo con. AWS SAMCLI Quando eseguisam build, le AWS SAMCLI creazioni makefiles che contengono Python i comandi per creare i tuoi artefatti Lambda.

Per le istruzioni di installazione, vedi Download di Python nella Guida per principianti di Python.

Verifica che Python 3.8 o successivo sia stato aggiunto al percorso della tua macchina eseguendo:

$ python --version

L'output dovrebbe mostrare una versione di Python 3.8 o successiva.

Installa il Make strumento

GNUMakeè uno strumento che controlla la generazione di eseguibili e altri file non sorgente per il tuo progetto. Le AWS SAMCLI creazioni makefiles che si affidano a questo strumento per creare i tuoi artefatti Lambda.

Se non l'hai Make installato sul tuo computer locale, installalo prima di andare avanti.

Per Windows, è possibile eseguire l'installazione utilizzando Chocolatey. Per istruzioni, vedi Uso di Chocolatey in Come installare e usare «Make» in Windows

Definisci la logica di costruzione degli artefatti Lambda

Usa il tipo di null_resource Terraform risorsa per definire la tua logica di compilazione Lambda. Di seguito è riportato un esempio che utilizza uno script di compilazione personalizzato per creare una funzione 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" } }

Definire un stessi metadati risorsa

La sam metadata risorsa è un tipo di null_resource Terraform risorsa che fornisce AWS SAMCLI le informazioni necessarie per localizzare gli artefatti Lambda. È necessaria una sam metadata risorsa univoca per ogni funzione o livello Lambda del progetto. Per saperne di più su questo tipo di risorsa, vedi null_resource nel registro. Terraform

Per definire un stessi metadati risorsa
  1. Assegna un nome alla risorsa iniziando con sam_metadata_ per identificarla come risorsasam metadata.

  2. Definisci le proprietà degli artefatti Lambda all'interno del triggers blocco della risorsa.

  3. Specifica null_resource quella che contiene la logica di compilazione Lambda con l'argomento. depends_on

    Di seguito è riportato un modello di esempio:

    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 ] }

    Di seguito è riportato un esempio di sam metadata risorsa:

    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 ] }

Il contenuto della sam metadata risorsa varierà in base al tipo di risorsa Lambda (funzione o livello) e al tipo di pacchetto (ZIP o immagine). Per ulteriori informazioni, insieme agli esempi, consultastessa risorsa di metadati.

Quando si configura una sam metadata risorsa e si utilizza un AWS SAMCLI comando supportato, viene generato AWS SAMCLI il file di metadati prima di eseguire il AWS SAMCLI comando. Una volta generato questo file, potete utilizzare l'--skip-prepare-infraopzione con AWS SAMCLI i comandi futuri per saltare il processo di generazione dei metadati e risparmiare tempo. Questa opzione deve essere utilizzata solo se non hai apportato modifiche all'infrastruttura, come la creazione di nuove funzioni Lambda o nuovi endpoint API.

Usa il AWS SAM CLI per costruire i tuoi artefatti Lambda

Usa il AWS SAMCLI sam build comando per creare i tuoi artefatti Lambda. Quando corrisam build, AWS SAMCLI esegue le seguenti operazioni:

  1. Cerca sam metadata le risorse Terraform del tuo progetto per conoscere e localizzare le tue risorse Lambda.

  2. Avvia la logica di compilazione Lambda per creare gli artefatti Lambda.

  3. Crea una .aws-sam directory che organizza il Terraform progetto per l'utilizzo con i comandi. AWS SAMCLI sam local

Per costruire con sam build
  1. Dalla directory contenente il modulo Terraform root, esegui quanto segue:

    $ sam build --hook-name terraform
  2. Per creare una funzione o un livello Lambda specifico, esegui quanto segue

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

    L'ID della risorsa Lambda può essere il nome della funzione Lambda o l'indirizzo completo della Terraform risorsa, ad esempio o. aws_lambda_function.list_books module.list_book_function.aws_lambda_function.this[0]

Se il codice sorgente della funzione o altri file di Terraform configurazione si trovano all'esterno della directory contenente il modulo Terraform root, è necessario specificare la posizione. Utilizzate l'--terraform-project-root-pathopzione per specificare il percorso assoluto o relativo alla directory di primo livello contenente questi file. Di seguito è riportato un esempio:

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

Crea usando un contenitore

Quando si esegue il AWS SAMCLI sam build comando, è possibile AWS SAMCLI configurare la creazione dell'applicazione utilizzando un Docker contenitore locale.

Nota

È necessario averlo Docker installato e configurato. Per istruzioni, consulta Installazione di Docker da utilizzare con AWS SAMCLI.

Per costruire usando un contenitore
  1. Creane uno Dockerfile che contenga gli Make strumenti TerraformPython, e. Dovresti includere anche il runtime della tua funzione Lambda.

    Di seguito è riportato un esempioDockerfile:

    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. docker buildUsalo per creare la tua Docker immagine.

    Di seguito è riportato un esempio:

    $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
  3. Esegui il AWS SAMCLI sam build comando con le --build-image opzioni --use-container and.

    Di seguito è riportato un esempio:

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

Fasi successive

Per iniziare a utilizzarlo AWS SAMCLI con i tuoi Terraform progetti, consultaUtilizzo di AWS SAM CLI con Terraform per il debug e il test locali.

Configura per Terraform Cloud

Ti consigliamo di utilizzare Terraform v1.6.0 o versioni successive. Se si utilizza una versione precedente, è necessario generare un file di Terraform piano localmente. Il file di piano locale fornisce AWS SAM CLI le informazioni necessarie per eseguire test e debug locali.

Per generare un file di piano locale
Nota

Questi passaggi non sono necessari per Terraform v1.6.0 o sono più recenti. Per iniziare a usare AWS SAM CLI withTerraform Cloud, vediUsando con AWS SAMCLI Terraform.

  1. Configura un token API: il tipo di token dipenderà dal tuo livello di accesso. Per saperne di più, consulta API Tokens nella Terraform Cloud documentazione.

  2. Imposta la variabile di ambiente del token API: quello che segue è un esempio tratto dalla riga di comando:

    $ export TOKEN="<api-token-value>"
  3. Ottieni il tuo ID di esecuzione: dalla Terraform Cloud console, individua l'ID di Terraform esecuzione per l'esecuzione che desideri utilizzare con AWS SAMCLI.

    L'ID di esecuzione si trova nel percorso breadcrumb della corsa.

    Percorso breadcrumb in cui viene visualizzato l'ID di esecuzione. Terraform Cloud
  4. Recupera il file del piano: utilizzando il token API, ottieni il file del piano locale. Di seguito è riportato un esempio tratto dalla riga di 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

Ora sei pronto per usare AWS SAMCLI withTerraform Cloud. Quando utilizzate un AWS SAMCLI comando supportato, utilizzate l'--terraform-plan-fileopzione per specificare il nome e il percorso del file del piano locale. Di seguito è riportato un esempio:

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

Di seguito è riportato un esempio di utilizzo del sam local start-api comando:

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

Per un'applicazione di esempio che puoi usare con questi esempi, vedi api_gateway_v2_tf_cloud nel repository aws-samples. GitHub

Fasi successive

Per iniziare a usare AWS SAMCLI withTerraform Cloud, vediUtilizzo di AWS SAM CLI con Terraform per il debug e il test locali.