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
Argomenti
AWS SAM CLI Terraform prerequisiti
Completa tutti i prerequisiti per iniziare a utilizzare AWS SAM CLI con il tuo Terraform progetti.
-
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.
-
Installa Terraform
Per verificare se ne hai Terraform installato, esegui quanto segue:
$
terraform -version
Per installare Terraform, vedi Installare Terraform
nella Terraform registro. -
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-name
opzione 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:
-
Installa Python 3.8 o versioni successive
-
Installa il Make strumento.
-
Definisci i tuoi artefatti Lambda, costruisci la logica all'interno del tuo Terraform progetto.
-
Definire una
sam metadata
risorsa per informare il AWS SAM CLI della tua logica di costruzione. -
Usa il AWS SAM CLI
sam build
comando 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
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
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
Per definire un sam metadata risorsa
-
Assegna un nome
sam_metadata_
alla risorsa iniziando con per identificare la risorsa come sam metadata risorsa. -
Definisci le proprietà degli artefatti Lambda all'interno del
triggers
blocco della risorsa. -
Specificate il
null_resource
che contiene la logica di compilazione Lambda con l'depends_on
argomento.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-infra
opzione 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 build
comando per costruire i tuoi artefatti Lambda. Quando corri, il sam build
AWS SAM CLI esegue le seguenti operazioni:
-
Cerca
sam metadata
risorse nel tuo Terraform progetto per conoscere e localizzare le tue risorse Lambda. -
Avvia la logica di compilazione Lambda per creare gli artefatti Lambda.
-
Crea una directory che organizza i tuoi
.aws-sam
Terraform progetto da utilizzare con AWS SAM CLIsam local
comandi.
Per costruire con sam build
-
Dalla cartella contenente il tuo Terraform modulo root, esegui quanto segue:
$
sam build --hook-name terraform
-
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-path
opzione 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 build
comando, è 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
-
Crea un file
Dockerfile
che contenga il Terraform, Pythone Make strumenti. Dovresti includere anche il runtime della funzione Lambda.Di seguito è riportato un esempio
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"]
-
Utilizzare docker build
per costruire il tuo Docker immagine. Di seguito è riportato un esempio:
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
Esegui il AWS SAM CLI
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
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.
-
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. -
Imposta la variabile di ambiente del token API: di seguito è riportato un esempio dalla riga di comando:
$
export TOKEN="<api-token-value>
" -
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.
-
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-file
opzione 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
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.