Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Démarrage avec Terraform support pour AWS SAM CLI
Cette rubrique explique comment commencer à utiliser l'interface de ligne de AWS Serverless Application Model commande (AWS SAM CLI) avec Terraform.
Pour fournir des commentaires et soumettre des demandes de fonctionnalités, créez un GitHub Problème
Rubriques
AWS SAM CLI Terraform Conditions préalables de la
Remplissez tous les prérequis pour commencer à utiliser le AWS SAM CLI avec votre Terraform projets.
-
Installez ou mettez à niveau le AWS SAM CLI
Pour vérifier si vous avez AWS SAM CLI installé, exécutez ce qui suit :
$
sam --version
Si le AWS SAM CLI est déjà installé, la sortie affichera une version. Pour procéder à une mise à niveau vers la version la plus récente, consultez Mise à niveau de la CLI AWS SAM en cours.
Pour obtenir des instructions sur l'installation du AWS SAM CLI ainsi que tous ses prérequis, voirInstaller la AWS SAM CLI.
-
Installation Terraform
Pour vérifier si vous avez Terraform installé, exécutez ce qui suit :
$
terraform -version
Pour installer Terraform, voir Installer Terraform
dans le .Terraform registre. -
Installation Docker pour les tests locaux
Le AWS SAM CLI a besoin Docker pour des tests locaux. Pour installer Docker, voir Installation de Docker à utiliser avec AWS SAM CLI.
En utilisant AWS SAM CLI commandes avec Terraform
Lorsque vous exécutez un AWS SAM CLI commande, utilisez l'--hook-name
option et fournissez la terraform
valeur. Voici un exemple :
$
sam local invoke --hook-name terraform
Vous pouvez configurer cette option dans votre AWS SAM CLI fichier de configuration avec les éléments suivants :
hook_name = "terraform"
Configurez pour Terraform projets
Suivez les étapes décrites dans cette rubrique pour utiliser le AWS SAM CLI avec Terraform projets.
Aucune configuration supplémentaire n'est requise si vous créez vos AWS Lambda artefacts en dehors de votre Terraform projet. Reportez-vous À l'aide du AWS SAM CLI avec Terraform pour le débogage et les tests locaux à la section pour commencer à utiliser le AWS SAM CLI.
Si vous créez vos artefacts Lambda dans votre Terraform projets, vous devez effectuer les opérations suivantes :
-
Installation Python 3.8 ou version ultérieure
-
Installer la Make outil.
-
Définissez la logique de construction de vos artefacts Lambda dans votre Terraform projet.
-
Définissez une
sam metadata
ressource pour informer AWS SAM CLI de votre logique de construction. -
Utilisez le AWS SAM CLI
sam build
commande pour créer vos artefacts Lambda.
Installation Python 3.8 ou version ultérieure
Python La version 3.8 ou une version plus récente est requise pour être utilisée avec le AWS SAM CLI. Lorsque vous courezsam build
, AWS SAM CLI crée makefiles
qui contiennent Python commandes pour créer vos artefacts Lambda.
Pour obtenir des instructions d'installation, veuillez consulter la rubrique Téléchargement de Python
Vérifiez que Python 3.8 ou version ultérieure est ajouté au chemin de votre machine en exécutant :
$
python --version
La sortie doit afficher une version de Python 3.8 ou plus récente.
Installer la Make outil
GNU Marque est un outil qui contrôle la génération d'exécutables et d'autres fichiers non sources pour votre projet. Le AWS SAM CLI des makefiles
créations qui s'appuient sur cet outil pour créer vos artefacts Lambda.
Si vous n'avez pas Make installé sur votre machine locale, installez-le avant de continuer.
Pour Windows, vous pouvez l'installer à l'aide de Chocolatey
Définir la logique de création des artefacts Lambda
Utilisation de la null_resource
Terraform type de ressource pour définir votre logique de construction Lambda. Voici un exemple qui utilise un script de création personnalisé pour créer une fonction 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" } }
Définissez un sam metadata ressource
La sam metadata
ressource est null_resource
Terraform type de ressource qui fournit AWS SAM CLI avec les informations dont il a besoin pour localiser vos artefacts Lambda. Chaque fonction ou couche Lambda de votre projet nécessite une ressource sam metadata
unique. Pour en savoir plus sur ce type de ressource, consultez null_resource
Pour définir un sam metadata ressource
-
Nommez votre ressource en commençant par
sam_metadata_
pour identifier la ressource en tant que sam metadata ressource. -
Définissez les propriétés de votre artefact Lambda dans le bloc
triggers
de votre ressource. -
Spécifiez votre
null_resource
qui contient votre logique de création Lambda avec l'argumentdepends_on
.Voici un exemple de modèle :
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 ] }Voici un exemple de ressource
sam metadata
: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 ] }
Le contenu de votre ressource sam metadata
variera en fonction du type de ressource Lambda (fonction ou couche) et du type d'empaquetage (ZIP ou image). Pour plus d'informations et d'exemples, consultez ressource de métadonnées sam.
Lorsque vous configurez une sam metadata
ressource et utilisez un AWS SAM CLI commande, le AWS SAM CLI générera le fichier de métadonnées avant d'exécuter AWS SAM CLI commande. Une fois que vous avez généré ce fichier, vous pouvez utiliser l'--skip-prepare-infra
option avec le futur AWS SAM CLI commandes permettant d'ignorer le processus de génération de métadonnées et de gagner du temps. Cette option ne doit être utilisée que si vous n'avez apporté aucune modification à l'infrastructure, telle que la création de nouvelles fonctions Lambda ou de nouveaux points de terminaison d'API.
Utilisez le AWS SAM CLI pour créer vos artefacts Lambda
Utilisez le AWS SAM CLI sam build
commande pour créer vos artefacts Lambda. Lorsque vous courezsam build
, AWS SAM CLI effectue les opérations suivantes :
-
Cherche des
sam metadata
ressources dans votre Terraform projet pour en savoir plus sur vos ressources Lambda et les localiser. -
Lance votre logique de création Lambda pour créer vos artefacts Lambda.
-
Crée un
.aws-sam
répertoire qui organise votre Terraform projet à utiliser avec AWS SAM CLIsam local
commandes.
Pour créer à l'aide de la fonction de création SAM
-
Depuis le répertoire contenant votre Terraform module root, exécutez ce qui suit :
$
sam build --hook-name terraform
-
Pour créer une fonction ou une couche Lambda spécifique, exécutez les actions suivantes
$
sam build --hook-name terraform
lambda-resource-id
L'ID de ressource Lambda peut être le nom de la fonction Lambda ou être complet Terraform adresse de ressource, telle que
aws_lambda_function.list_books
oumodule.list_book_function.aws_lambda_function.this[0]
.
Si le code source de votre fonction ou autre Terraform les fichiers de configuration se trouvent en dehors du répertoire contenant votre Terraform module racine, vous devez spécifier l'emplacement. Utilisez l'option --terraform-project-root-path
pour spécifier le chemin absolu ou relatif vers le répertoire de premier niveau contenant ces fichiers. Voici un exemple :
$
sam build --hook-name terraform --terraform-project-root-path
~/projects/terraform/demo
Créer à l'aide d'un conteneur
Lors de l'exécution du AWS SAM CLI sam build
commande, vous pouvez configurer AWS SAM CLI pour créer votre application à l'aide d'une application locale Docker contenant.
Note
Vous devez avoir … Docker installé et configuré. Pour obtenir des instructions, consultez Installation de Docker à utiliser avec AWS SAM CLI.
Pour créer à l'aide d'un conteneur
-
Créez un
Dockerfile
qui contient Terraform, Python, et Make outils. Vous devez également inclure le moteur d'exécution de votre fonction Lambda.Voici un exemple de
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"]
-
Utiliser docker build
pour construire votre Docker image. Voici un exemple :
$
docker build --tag
terraform-build:v1
<path-to-directory-containing-Dockerfile>
-
Exécutez le AWS SAM CLI
sam build
commande avec les--build-image
options--use-container
et.Voici un exemple :
$
sam build --use-container --build-image
terraform-build:v1
Étapes suivantes
Pour commencer à utiliser AWS SAM CLI avec votre Terraform projets, voirÀ l'aide du AWS SAM CLI avec Terraform pour le débogage et les tests locaux.
Configurez pour Terraform Cloud
Nous vous recommandons d'utiliser Terraform v1.6.0 ou plus récent. Si vous utilisez une ancienne version, vous devez générer un Terraform fichier de plan en local. Le fichier de plan local fournit AWS SAM CLI avec les informations dont il a besoin pour effectuer les tests et le débogage locaux.
Pour générer un fichier de plan local
Note
Ces étapes ne sont pas obligatoires pour Terraform v1.6.0 ou plus récent. Pour commencer à utiliser AWS SAM CLI avec Terraform Cloud, voir En utilisant AWS SAM CLI avec Terraform.
-
Configurer un jeton d'API : le type de jeton dépend de votre niveau d'accès. Pour en savoir plus, consultez la section Jetons d'API
dans le Terraform Cloud documentation. -
Définisser la variable d'environnement de votre jeton d'API : voici un exemple tiré de la ligne de commande :
$
export TOKEN="<api-token-value>
" -
Obtenez votre identifiant de course — À partir du Terraform Cloud console, recherchez l'ID d'exécution pour Terraform exécutez que vous souhaitez utiliser avec AWS SAM CLI.
L'identifiant d'exécution se trouve dans la piste de navigation de votre exécution.
-
Récupérer le fichier de plan : à l'aide de votre jeton d'API, obtenez votre fichier de plan local. Voici un exemple tiré de la ligne de commande :
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
Vous êtes maintenant prêt à utiliser AWS SAM CLI avec Terraform Cloud. Lors de l'utilisation d'un support AWS SAM CLI commande, utilisez l'--terraform-plan-file
option pour spécifier le nom et le chemin de votre fichier de plan local. Voici un exemple :
$
sam local invoke --hook-name terraform --terraform-plan-file custom-plan.json
Voici un exemple utilisant la commande sam local start-api
:
$
sam local start-api --hook-name terraform --terraform-plan-file custom-plan.json
Pour un exemple d'application que vous pouvez utiliser avec ces exemples, consultez api_gateway_v2_tf_cloud
Étapes suivantes
Pour commencer à utiliser AWS SAM CLI avec Terraform Cloud, voir À l'aide du AWS SAM CLI avec Terraform pour le débogage et les tests locaux.