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 utilizzarlo AWS SAMCLI con i tuoi Terraform progetti.
- 
        Installa o aggiorna il AWS SAMCLIPer 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 SAM CLI. Per istruzioni sull'installazione di AWS SAMCLI e tutti i relativi prerequisiti, vedere. Installa il AWS SAMCLI 
- 
        Installazione di TerraformPer verificare se l'Terraforminstallazione è stata eseguita, esegui quanto segue: $terraform -versionPer l'installazioneTerraform, consulta Installa Terraform nel Terraformregistro. 
- 
        Installa Docker per il test localeI AWS SAMCLI requisiti Docker per i test locali. Per l'installazioneDocker, vedereInstallazione di Docker da utilizzare con AWS SAM CLI. 
Utilizzo dei AWS SAMCLI 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"
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 metadatarisorsa per informarli sulla tua logica AWS SAMCLI di compilazione.
- 
        Usa il AWS SAMCLI sam buildcomando per creare i tuoi artefatti Lambda.
Installa 3.8 Python o versione successiva
Python3.8 o versione successiva è richiesta per l'utilizzo 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 triggersblocco della risorsa.
- 
          Specificate il null_resourceche 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_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 layer) e al tipo di pacchetto (ZIP o 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-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 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 metadatarisorse 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-samdirectory 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 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 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 SAM CLI.
Per creare utilizzando un contenitore
- 
            Crea un Dockerfilefile 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 --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
Passaggi successivi
Per iniziare a utilizzarlo AWS SAMCLI con i tuoi Terraform progetti, consultaUtilizzo 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 token API: il tipo di token dipenderà dal tuo livello di accesso. Per ulteriori informazioni, consulta la sezione relativa ai token API nella Terraform Clouddocumentazione. 
- 
        Imposta la variabile di ambiente del token API: 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 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 conTerraform 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, consulta api_gateway_v2_tf_cloud nel repository aws-samples
Passaggi successivi
Per iniziare a usare AWS SAMCLI withTerraform Cloud, consultaUtilizzo di AWS SAMCLI with Terraform per il debug e il test locali.