Démarrage avec Terraform support pour AWS SAM CLI - AWS Serverless Application Model

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.

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.

  1. 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.

  2. 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.

  3. 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-nameoption 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 :

  1. Installation Python 3.8 ou version ultérieure

  2. Installer la   Make outil.

  3. Définissez la logique de construction de vos artefacts Lambda dans votre Terraform projet.

  4. Définissez une sam metadata ressource pour informer AWS SAM CLI de votre logique de construction.

  5. Utilisez le AWS SAM CLI sam buildcommande 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 (langue française non garantie) dans le Guide du débutant 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. PPour les instructions, consultez la rubrique Utilisation de Chocolatey dans le guide Comment installer et utiliser « Make » sous Windows

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 dans le Terraform registre.

Pour définir un sam metadata ressource
  1. Nommez votre ressource en commençant par sam_metadata_ pour identifier la ressource en tant que sam metadata ressource.

  2. Définissez les propriétés de votre artefact Lambda dans le bloc triggers de votre ressource.

  3. Spécifiez votre null_resource qui contient votre logique de création Lambda avec l'argument depends_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-infraoption 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 buildcommande pour créer vos artefacts Lambda. Lorsque vous courezsam build, AWS SAM CLI effectue les opérations suivantes :

  1. Cherche des sam metadata ressources dans votre Terraform projet pour en savoir plus sur vos ressources Lambda et les localiser.

  2. Lance votre logique de création Lambda pour créer vos artefacts Lambda.

  3. Crée un .aws-sam répertoire qui organise votre Terraform projet à utiliser avec AWS SAM CLI sam localcommandes.

Pour créer à l'aide de la fonction de création SAM
  1. Depuis le répertoire contenant votre Terraform module root, exécutez ce qui suit :

    $ sam build --hook-name terraform
  2. 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 buildcommande, 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
  1. 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"]
  2. Utiliser docker buildpour construire votre Docker image.

    Voici un exemple :

    $ docker build --tag terraform-build:v1 <path-to-directory-containing-Dockerfile>
  3. Exécutez le AWS SAM CLI sam buildcommande 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.

  1. 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.

  2. 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>"
  3. 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.

    chemin du fil d'Ariane dans Terraform Cloud qui affiche l'ID d'exécution.
  4. 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-fileoption 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 dans le fichier aws-samples GitHub référentiel.

É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.