Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit Terraform Unterstützung für AWS SAM CLI
Dieses Thema behandelt die ersten Schritte mit der Verwendung der AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI) mitTerraform.
Erstellen Sie ein GitHub Problem, um Feedback zu geben und Funktionsanfragen einzureichen
Topics
AWS SAM CLI Terraform Voraussetzungen
Erfüllen Sie alle Voraussetzungen, um das in AWS SAMCLI Ihren Terraform Projekten verwenden zu können.
-
Installieren oder aktualisieren Sie das AWS SAM CLI
Um zu überprüfen, ob Sie das AWS SAMCLI installiert haben, führen Sie Folgendes aus:
$sam --versionWenn das bereits installiert AWS SAMCLI ist, wird in der Ausgabe eine Version angezeigt. Informationen zum Upgrade auf die neueste Version finden Sie unterAktualisierung des AWS SAMCLI.
Anweisungen zur Installation von AWS SAMCLI Along mit allen zugehörigen Voraussetzungen finden Sie unterInstallieren Sie das AWS SAMCLI.
-
Installieren Terraform
Gehen Sie wie folgt vor, um zu überprüfen, ob Sie es Terraform installiert haben:
$terraform -versionInformationen zur Installation Terraform finden Sie unter Installieren Terraform
in der Terraform Registrierung. -
Installieren Docker für lokale Tests
Die AWS SAMCLI Anforderungen Docker für lokale Tests. Informationen zur Installation Docker finden Sie unterInstallation von Docker zur Verwendung mit dem AWS SAMCLI.
Verwenden AWS SAM CLI Befehle mit Terraform
Wenn Sie einen unterstützten AWS SAMCLI Befehl ausführen, verwenden Sie die --hook-name Option und geben Sie den terraform Wert an. Im Folgenden wird ein Beispiel gezeigt:
$sam local invoke --hook-name terraform
Sie können diese Option in Ihrer AWS SAMCLI Konfigurationsdatei wie folgt konfigurieren:
hook_name = "terraform"
Richten Sie ein für Terraform projects
Führen Sie die Schritte in diesem Thema aus, um das AWS SAMCLI mit Terraform Projekten zu verwenden.
Wenn Sie Ihre AWS Lambda Artefakte außerhalb Ihres Terraform Projekts erstellen, ist kein zusätzliches Setup erforderlich. Informationen Verwendung der AWS SAM CLI mit Terraform zum lokalen Debuggen und Testen zum Einstieg in die Verwendung von finden Sie unter AWS SAMCLI.
Wenn Sie Ihre Lambda-Artefakte in Ihren Terraform Projekten erstellen, müssen Sie Folgendes tun:
-
Installieren Sie Python 3.8 oder neuer
-
Installieren Sie das Make Tool.
-
Definieren Sie die Build-Logik Ihrer Lambda-Artefakte in Ihrem Terraform Projekt.
-
Definieren Sie eine
sam metadataRessource, die AWS SAMCLI Sie über Ihre Build-Logik informiert. -
Verwenden Sie den AWS SAMCLI
sam buildBefehl, um Ihre Lambda-Artefakte zu erstellen.
Installieren Python 3.8 oder neuer
Python3.8 oder neuer ist für die Verwendung mit dem erforderlich AWS SAMCLI. Wenn Sie ausführensam build, werden die Creates AWS SAMCLI ausgeführtmakefiles, die Python Befehle zum Erstellen Ihrer Lambda-Artefakte enthalten.
Eine Installationsanleitung finden Sie unter Python herunterladen
Stellen Sie sicher, dass Python 3.8 oder neuer zu Ihrem Computerpfad hinzugefügt wurde, indem Sie Folgendes ausführen:
$python --version
Die Ausgabe sollte eine Version von Python anzeigen, die 3.8 oder neuer ist.
Installieren Sie das Marke tool
GNUMakeist ein Tool, das die Generierung von ausführbaren Dateien und anderen Nicht-Quelldateien für Ihr Projekt steuert. Die Kreationen AWS SAMCLI, makefiles die auf dieses Tool angewiesen sind, um Ihre Lambda-Artefakte zu erstellen.
Wenn Sie es nicht auf Ihrem lokalen Computer Make installiert haben, installieren Sie es, bevor Sie fortfahren.
Für Windows können Sie die Installation mit Chocolatey durchführen
Definieren Sie die Build-Logik für Lambda-Artefakte
Verwenden Sie den null_resource Terraform Ressourcentyp, um Ihre Lambda-Build-Logik zu definieren. Im Folgenden finden Sie ein Beispiel, das ein benutzerdefiniertes Build-Skript verwendet, um eine Lambda-Funktion zu erstellen.
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" } }
Definieren Sie eine dieselben Metadaten Ressource
Die sam metadata Ressource ist ein null_resource Terraform Ressourcentyp, der die AWS SAMCLI Informationen bereitstellt, die sie zum Auffinden Ihrer Lambda-Artefakte benötigt. Für jede Lambda-Funktion oder -Layer in Ihrem Projekt ist eine eindeutige sam metadata Ressource erforderlich. Weitere Informationen zu diesem Ressourcentyp finden Sie unter null_resource
Um eine zu definieren dieselben Metadaten Ressource
-
Benennen Sie Ihre Ressource, beginnend mit
sam_metadata_, um die Ressource als sam metadata Ressource zu identifizieren. -
Definieren Sie Ihre Lambda-Artefakteigenschaften innerhalb des
triggersBlocks Ihrer Ressource. -
Geben Sie mit dem Argument an
null_resource, dass Ihre Lambda-Build-Logik enthalten ist.depends_onDas Folgende ist eine Beispielvorlage:
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 ] }Das Folgende ist eine
sam metadataBeispielressource: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 ] }
Der Inhalt Ihrer sam metadata Ressource variiert je nach Lambda-Ressourcentyp (Funktion oder Layer) und Verpackungstyp (ZIP oder Bild). Weitere Informationen sowie Beispiele finden Sie untersam-Metadaten-Ressource.
Wenn Sie eine sam metadata Ressource konfigurieren und einen unterstützten AWS SAMCLI Befehl verwenden, generiert der die Metadatendatei, bevor der AWS SAMCLI Befehl ausgeführt AWS SAMCLI wird. Sobald Sie diese Datei generiert haben, können Sie die --skip-prepare-infra Option mit zukünftigen AWS SAMCLI Befehlen verwenden, um den Prozess der Metadatengenerierung zu überspringen und Zeit zu sparen. Diese Option sollte nur verwendet werden, wenn Sie keine Infrastrukturänderungen vorgenommen haben, z. B. neue Lambda-Funktionen oder neue API-Endpunkte erstellt haben.
Verwenden Sie die AWS SAM CLI um Ihre Lambda-Artefakte zu bauen
Verwenden Sie den AWS SAMCLI sam build Befehl, um Ihre Lambda-Artefakte zu erstellen. Wenn Sie das ausführensam build, AWS SAMCLI führt das Folgendes aus:
-
Sucht in Ihrem Terraform Projekt nach
sam metadataRessourcen, um mehr über Ihre Lambda-Ressourcen zu erfahren und sie zu finden. -
Initiiert Ihre Lambda-Build-Logik, um Ihre Lambda-Artefakte zu erstellen.
-
Erstellt ein
.aws-samVerzeichnis, das Ihr Terraform Projekt zur Verwendung mit den Befehlen organisiert. AWS SAMCLIsam local
Um mit Sam Build zu bauen
-
Führen Sie in dem Verzeichnis, das Ihr Terraform Root-Modul enthält, Folgendes aus:
$sam build --hook-name terraform -
Um eine bestimmte Lambda-Funktion oder -Layer zu erstellen, führen Sie Folgendes aus
$sam build --hook-name terraformlambda-resource-idDie Lambda-Ressourcen-ID kann der Name der Lambda-Funktion oder die vollständige Terraform Ressourcenadresse sein, z. B. oder.
aws_lambda_function.list_booksmodule.list_book_function.aws_lambda_function.this[0]
Wenn sich Ihr Funktionsquellcode oder andere Terraform Konfigurationsdateien außerhalb des Verzeichnisses befinden, das Ihr Terraform Root-Modul enthält, müssen Sie den Speicherort angeben. Verwenden Sie die --terraform-project-root-path Option, um den absoluten oder relativen Pfad zum Verzeichnis der obersten Ebene anzugeben, das diese Dateien enthält. Im Folgenden wird ein Beispiel gezeigt:
$sam build --hook-name terraform --terraform-project-root-path~/projects/terraform/demo
Erstellen Sie mithilfe eines Containers
Wenn Sie den AWS SAMCLI sam build Befehl ausführen, können Sie den so konfigurieren, AWS SAMCLI dass Ihre Anwendung mithilfe eines lokalen Docker Containers erstellt wird.
Anmerkung
Sie müssen es Docker installiert und konfiguriert haben. Detaillierte Anweisungen finden Sie unter Installation von Docker zur Verwendung mit dem AWS SAMCLI.
Um mit einem Container zu bauen
-
Erstellen Sie einen
Dockerfile, der die Make Werkzeuge TerraformPython, und enthält. Sie sollten auch die Laufzeit Ihrer Lambda-Funktion mit einbeziehen.Das Folgende ist ein Beispiel:
DockerfileFROM 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"] -
Verwenden Sie docker build
es, um Ihr Docker Image zu erstellen. Im Folgenden wird ein Beispiel gezeigt:
$docker build --tagterraform-build:v1<path-to-directory-containing-Dockerfile> -
Führen Sie den AWS SAMCLI
sam buildBefehl mit den--build-imageOptionen--use-containerund aus.Im Folgenden wird ein Beispiel gezeigt:
$sam build --use-container --build-imageterraform-build:v1
Nächste Schritte
Informationen zum Einstieg in AWS SAMCLI Ihre Terraform Projekte finden Sie unterVerwendung der AWS SAM CLI mit Terraform zum lokalen Debuggen und Testen.
Richten Sie ein für Terraform Cloud
Wir empfehlen, dass Sie eine neuere Version verwendenTerraform v1.6.0. Wenn Sie eine ältere Version verwenden, müssen Sie lokal eine Terraform Plandatei generieren. Die lokale Plandatei enthält die AWS SAM CLI Informationen, die sie für lokale Tests und Debugging benötigt.
Um eine lokale Plandatei zu generieren
Anmerkung
Diese Schritte sind für Terraform v1.6.0 oder neuer nicht erforderlich. Informationen zum Einstieg in die Verwendung von AWS SAM CLI mit Terraform Cloud finden Sie unterVerwenden mit AWS SAMCLI Terraform.
-
Konfigurieren Sie ein API-Token — Die Art des Tokens hängt von Ihrer Zugriffsebene ab. Weitere Informationen finden Sie in der Terraform Cloud Dokumentation unter
API-Token. -
Legen Sie Ihre API-Token-Umgebungsvariable fest — Das Folgende ist ein Beispiel aus der Befehlszeile:
$export TOKEN="<api-token-value>" -
Rufen Sie Ihre Lauf-ID ab — Suchen Sie in der Terraform Cloud Konsole die Run-ID für den Terraform Lauf, den Sie mit dem verwenden möchten AWS SAMCLI.
Die Run-ID befindet sich im Breadcrumb-Pfad Ihres Laufs.
-
Rufen Sie die Plandatei ab — Rufen Sie mit Ihrem API-Token Ihre lokale Plandatei ab. Das Folgende ist ein Beispiel aus der Befehlszeile:
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
Sie sind jetzt bereit, das AWS SAMCLI mit zu verwendenTerraform Cloud. Wenn Sie einen unterstützten AWS SAMCLI Befehl verwenden, verwenden Sie die --terraform-plan-file Option, um den Namen und Pfad Ihrer lokalen Plandatei anzugeben. Im Folgenden wird ein Beispiel gezeigt:
$sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
Das Folgende ist ein Beispiel für die Verwendung des sam local start-api Befehls:
$sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
Eine Beispielanwendung, die Sie mit diesen Beispielen verwenden können, finden Sie unter api_gateway_v2_tf_cloud
Nächste Schritte
Informationen zum Einstieg in die Verwendung von AWS SAMCLI with Terraform Cloud finden Sie unterVerwendung der AWS SAM CLI mit Terraform zum lokalen Debuggen und Testen.