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
Argomenti
AWS SAM CLI Terraform prerequisiti
Completa tutti i prerequisiti per iniziare a utilizzarli AWS SAMCLI con i tuoi Terraform progetti.
-
Installa o aggiorna il AWS SAM CLI
Per verificare se è AWS SAMCLI installato, esegui quanto segue:
$sam --versionSe 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
-
Installa Terraform
Per verificare se è Terraform stato installato, esegui quanto segue:
$terraform -versionPer l'installazioneTerraform, vedi Installazione Terraform
nel Terraform registro. -
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:
-
Installa 3.8 Python o versione successiva
-
Installa lo strumento. Make
-
Definisci la logica di costruzione degli artefatti Lambda all'interno del tuo progetto. Terraform
-
Definisci una
sam metadatarisorsa per informarli della tua logica AWS SAMCLI di compilazione. -
Usa il AWS SAMCLI
sam buildcomando 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
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
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
Per definire un stessi metadati risorsa
-
Assegna un nome alla risorsa iniziando con
sam_metadata_per identificarla come risorsasam metadata. -
Definisci le proprietà degli artefatti Lambda all'interno del
triggersblocco della risorsa. -
Specifica
null_resourcequella che contiene la logica di compilazione Lambda con l'argomento.depends_onDi seguito è riportato un modello di esempio:
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 ] }Di seguito è riportato un esempio di
sam metadatarisorsa: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:
-
Cerca
sam metadatale risorse Terraform del tuo progetto per conoscere e localizzare le tue risorse Lambda. -
Avvia la logica di compilazione Lambda per creare gli artefatti Lambda.
-
Crea una
.aws-samdirectory che organizza il Terraform progetto per l'utilizzo con i comandi. AWS SAMCLIsam local
Per costruire con sam build
-
Dalla directory contenente il modulo Terraform root, esegui quanto segue:
$sam build --hook-name terraform -
Per creare una funzione o un livello Lambda specifico, esegui quanto segue
$sam build --hook-name terraformlambda-resource-idL'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_booksmodule.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
-
Creane uno
Dockerfileche contenga gli Make strumenti TerraformPython, e. Dovresti includere anche il runtime della tua 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"] -
docker build
Usalo per creare la tua Docker immagine. Di seguito è riportato un esempio:
$docker build --tagterraform-build:v1<path-to-directory-containing-Dockerfile> -
Esegui il AWS SAMCLI
sam buildcomando con le--build-imageopzioni--use-containerand.Di seguito è riportato un esempio:
$sam build --use-container --build-imageterraform-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.
-
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. -
Imposta la variabile di ambiente del token API: quello che segue è un esempio tratto dalla riga di comando:
$export TOKEN="<api-token-value>" -
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.
-
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
Fasi successive
Per iniziare a usare AWS SAMCLI withTerraform Cloud, vediUtilizzo di AWS SAM CLI con Terraform per il debug e il test locali.