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 SAM CLI) con Terraform.

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

AWS SAM CLI Terraform prerequisiti

Completa tutti i prerequisiti per iniziare a utilizzare AWS SAM CLI con il tuo Terraform progetti.

  1. Installa o aggiorna il AWS SAM CLI

    Per verificare se hai il AWS SAM CLI installato, esegui quanto segue:

    $ sam --version

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

    Per istruzioni sull'installazione di AWS SAM CLI insieme a tutti i relativi prerequisiti, vedereInstalla il AWS SAM CLI.

  2. Installa Terraform

    Per verificare se ne hai Terraform installato, esegui quanto segue:

    $ terraform -version

    Per installare Terraform, vedi Installare Terraform nella Terraform registro.

  3. Installa Docker per test locali

    Il AWS SAM CLI richiede Docker per test locali. Per installare Docker, consulta Installazione di Docker da utilizzare con AWS SAM CLI.

Usando AWS SAM CLI comandi con Terraform

Quando esegui un file supportato AWS SAM CLI comando, 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 AWS SAM CLI file di configurazione con quanto segue:

hook_name = "terraform"

Configurato per Terraform progetti

Completa i passaggi descritti in questo argomento per utilizzare il AWS SAM CLI con Terraform progetti.

Non è richiesta alcuna configurazione aggiuntiva se costruisci i tuoi AWS Lambda artefatti al di fuori del Terraform progetto. Vedi Utilizzando il AWS SAM CLI con Terraform per il debug e il test locali per iniziare a usare il AWS SAM CLI.

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

  1. Installa Python 3.8 o versioni successive

  2. Installa il Make strumento.

  3. Definisci i tuoi artefatti Lambda, costruisci la logica all'interno del tuo Terraform progetto.

  4. Definire una sam metadata risorsa per informare il AWS SAM CLI della tua logica di costruzione.

  5. Usa il AWS SAM CLI sam buildcomando per costruire i tuoi artefatti Lambda.

Installa Python 3.8 o versione successiva

Python 3.8 o versione successiva è richiesta per l'uso con AWS SAM CLI. Quando corrisam build, il AWS SAM CLI crea makefiles che contengono Python comandi per creare i tuoi artefatti Lambda.

Per istruzioni di installazione, consulta Downloading Python in Python's Beginners Guide.

Verifica che Python 3.8 o versione successiva sia aggiunto al percorso del tuo computer eseguendo:

$ python --version

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

Installa il Make strumento

GNU Make è uno strumento che controlla la generazione di eseguibili e altri file non sorgente per il progetto. Il AWS SAM CLI creazioni makefiles che si affidano a questo strumento per costruire i tuoi artefatti Lambda.

Se non lo hai Make installato sul computer locale, installalo prima di andare avanti.

Per Windows, puoi installarlo usando Chocolatey. Per istruzioni, vedi Uso di Chocolatey in Come installare e usare «Make» in Windows

Definisci la logica di compilazione degli artefatti Lambda

Utilizzo dell'null_resource Terraform tipo di risorsa per definire la 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 sam metadata risorsa

La sam metadata risorsa è una null_resource Terraform tipo di risorsa che fornisce AWS SAM CLI con le informazioni necessarie per localizzare gli artefatti Lambda. È necessaria una sam metadata risorsa unica per ogni funzione o layer Lambda del progetto. Per saperne di più su questo tipo di risorsa, consulta null_resource nel Terraform registro.

Per definire un sam metadata risorsa
  1. Assegna un nome sam_metadata_ alla risorsa iniziando con per identificare la risorsa come sam metadata risorsa.

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

  3. Specificate il null_resource che contiene la logica di compilazione Lambda con l'depends_onargomento.

    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 layer) e al tipo di pacchetto (ZIP o immagine). Per ulteriori informazioni, oltre ad esempi, consultarisorsa di metadati sam.

Quando si configura una sam metadata risorsa e si utilizza una risorsa supportata AWS SAM CLI comando, il AWS SAM CLI genererà il file di metadati prima di eseguire il AWS SAM CLI comando. Dopo aver generato questo file, puoi utilizzare l'--skip-prepare-infraopzione con future AWS SAM CLI comandi 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 manufatti Lambda

Usa il AWS SAM CLI sam buildcomando per costruire i tuoi artefatti Lambda. Quando corri, il sam build AWS SAM CLI esegue le seguenti operazioni:

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

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

  3. Crea una directory che organizza i tuoi .aws-sam Terraform progetto da utilizzare con AWS SAM CLI sam localcomandi.

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

    $ sam build --hook-name terraform
  2. Per creare una funzione o un layer 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 il nome completo. Terraform indirizzo della risorsa, ad esempio o. aws_lambda_function.list_books module.list_book_function.aws_lambda_function.this[0]

Se la tua funzione è codice sorgente o altro Terraform i file di configurazione si trovano all'esterno della directory che contiene il Terraform modulo root, è necessario specificare la posizione. Utilizzate l'--terraform-project-root-pathopzione per specificare il percorso assoluto o relativo della 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 SAM CLI sam buildcomando, è possibile configurare il AWS SAM CLI per creare la tua applicazione usando un locale Docker contenitore.

Nota

È necessario avere... Docker installato e configurato. Per istruzioni, consulta Installazione di Docker da utilizzare con AWS SAM CLI.

Costruire utilizzando un contenitore
  1. Crea un file Dockerfile che contenga il Terraform, Pythone Make strumenti. Dovresti includere anche il runtime della 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. Utilizzare docker buildper costruire il tuo Docker immagine.

    Di seguito è riportato un esempio:

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

    Di seguito è riportato un esempio:

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

Passaggi successivi

Per iniziare a utilizzare il AWS SAM CLI con il tuo Terraform progetti, vediUtilizzando il AWS SAM CLI con Terraform per il debug e il test locali.

Configurato per Terraform Cloud

Ti consigliamo di utilizzare Terraform v1.6.0 o più recente. Se si utilizza una versione precedente, è necessario generare una Terraform pianifica il file localmente. Il file del piano locale fornisce il AWS SAM CLI con 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 più recente. Per iniziare a utilizzare il AWS SAM CLI con Terraform Cloud, consulta Usando AWS SAM CLI con Terraform.

  1. Configura un token API: il tipo di token dipenderà dal tuo livello di accesso. Per ulteriori informazioni, consulta la sezione relativa ai token API nel Terraform Cloud documentazione.

  2. Imposta la variabile di ambiente del token API: di seguito è riportato un esempio dalla riga di comando:

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

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

    Percorso Breadcrumb in Terraform Cloud che mostra l'ID di esecuzione.
  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 il AWS SAM CLI con Terraform Cloud. Quando si utilizza un supporto AWS SAM CLI comando, 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 in aws-samples GitHub deposito.

Passaggi successivi

Per iniziare a utilizzare il AWS SAM CLI con Terraform Cloud, consulta Utilizzando il AWS SAM CLI con Terraform per il debug e il test locali.