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à.
Guida introduttiva Terraform al supporto per AWS SAMCLI
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 GitHubproblema
Argomenti
AWS SAMCLITerraformprerequisiti
Completa tutti i prerequisiti per iniziare a utilizzarli AWS SAMCLI con i tuoi Terraform progetti.
-
Installa o aggiorna il AWS SAMCLI
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 di AWS SAMCLI e tutti i relativi prerequisiti, vedere. Installa il AWS SAMCLI
-
Installazione di Terraform
Per verificare se l'Terraforminstallazione è stata eseguita, esegui quanto segue:
$
terraform -version
Per l'installazioneTerraform, consulta Installa Terraform
nel Terraformregistro. -
Installa Docker per il test locale
I AWS SAMCLI requisiti Docker per i test locali. Per l'installazioneDocker, vedereInstallazione di Docker da utilizzare con AWS SAMCLI.
Utilizzo dei AWS SAMCLI comandi con Terraform
Quando esegui un AWS SAMCLI comando supportato, 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 file AWS SAMCLI di configurazione con quanto segue:
hook_name = "terraform"
Configurazione per Terraform progetti
Completa i passaggi descritti in questo argomento per utilizzarlo AWS SAMCLI con i Terraform progetti.
Non è richiesta alcuna configurazione aggiuntiva se costruite gli AWS Lambda artefatti all'esterno del Terraform progetto. Vedi Utilizzo di AWS SAMCLI with Terraform per il debug e il test locali per iniziare a usare. AWS SAMCLI
Se costruisci 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 metadata
risorsa per informarli sulla tua logica AWS SAMCLI di compilazione. -
Usa il AWS SAMCLI
sam build
comando per creare i tuoi artefatti Lambda.
Installa 3.8 Python o versione successiva
Python3.8 o versione successiva è richiesta per l'uso con. AWS SAMCLI Quando eseguisam build
, le AWS SAMCLI creazioni 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 lo strumento Make
GNUMakeè uno strumento che controlla la generazione di eseguibili e altri file non sorgente per il progetto. Le AWS SAMCLI creazioni makefiles
che si affidano a questo strumento per creare i tuoi artefatti Lambda.
Se non lo avete Make installato sul computer locale, installatelo prima di procedere.
Per Windows, puoi installarlo usando Chocolatey
Definisci la logica di compilazione degli artefatti Lambda
Usa il tipo di null_resource
Terraform 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 una risorsa sam metadata
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 unica per ogni funzione o layer Lambda del progetto. Per ulteriori informazioni su questo tipo di risorsa, consulta null_resource
Per definire una risorsa sam metadata
-
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 livello) e al tipo di imballaggio (ZIPo immagine). Per ulteriori informazioni, oltre ad esempi, consultarisorsa di metadati sam.
Quando configuri una sam metadata
risorsa e utilizzi un AWS SAMCLI comando supportato, AWS SAMCLI genererà il file di metadati prima di eseguire il AWS SAMCLI comando. Dopo aver generato questo file, puoi utilizzare l'--skip-prepare-infra
opzione 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 API endpoint.
Usa il AWS SAMCLI per costruire i tuoi artefatti Lambda
Usa il AWS SAMCLI sam build
comando per creare i tuoi artefatti Lambda. Quando eseguisam build
, AWS SAMCLI 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
.aws-sam
directory che organizza il Terraform progetto da utilizzare con i comandi. AWS SAMCLIsam local
Per creare con sam build
-
Dalla directory contenente il modulo Terraform 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 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-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 SAMCLI sam build
comando, è possibile configurarlo AWS SAMCLI per creare l'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 creare utilizzando un contenitore
-
Crea un
Dockerfile
file che contenga gli Make strumenti TerraformPython, e. 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"]
-
docker build
Usalo per creare la tua Docker immagine. Di seguito è riportato un esempio:
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
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
Passaggi successivi
Per iniziare a utilizzarli AWS SAMCLI con i tuoi Terraform progetti, vediUtilizzo di AWS SAMCLI with Terraform per il debug e il test locali.
Configurazione di Terraform Cloud
Ti consigliamo di utilizzare Terraform v1.6.0 una versione più recente. Se si utilizza una versione precedente, è necessario generare un file del Terraform piano localmente. Il file del 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 Terraform v1.6.0 o più recenti. Per iniziare a usare AWS SAM CLI withTerraform Cloud, consulta AWS SAMCLIUsando con Terraform.
-
Configura un API token: il tipo di token dipenderà dal tuo livello di accesso. Per ulteriori informazioni, consulta APITokens
nella Terraform Clouddocumentazione. -
Imposta la variabile di ambiente del API token: di seguito è riportato un esempio tratto dalla riga di comando:
$
export TOKEN="<api-token-value>
" -
Ottieni il tuo Run ID: dalla Terraform Cloud console, individua l'ID di esecuzione per la Terraform corsa che desideri utilizzare con AWS SAMCLI.
L'ID di corsa si trova nel percorso breadcrumb della corsa.
-
Recupera il file del piano: utilizzando il API token, 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 conTerraform Cloud. Quando utilizzate un AWS SAMCLI comando supportato, 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, consulta api_gateway_v2_tf_cloud nel repository aws-samples
Passaggi successivi
Per iniziare a usare il AWS SAMCLI withTerraform Cloud, vediUtilizzo di AWS SAMCLI with Terraform per il debug e il test locali.