

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 INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="gs-terraform-support"></a>

Cette rubrique explique comment commencer à utiliser l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) avecTerraform.

Pour soumettre des commentaires et des demandes de fonctionnalités, créez un [Ticket GitHub](https://github.com/aws/aws-sam-cli/issues/new?labels=area%2Fterraform).

**Topics**
+ [AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) Terraform Conditions préalables de la  ](#gs-terraform-support-prerequisites)
+ [Utilisation AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) commandes avec Terraform](#gs-terraform-support-using)
+ [Configurez pour Terraform projects](#gs-terraform-support-projects)
+ [Configurez pour Terraform Cloud](#gs-terraform-support-cloud)

## AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) Terraform Conditions préalables de la  
<a name="gs-terraform-support-prerequisites"></a>

Remplissez toutes les conditions préalables pour commencer à utiliser la CLI  AWS SAM avec vos projets Terraform.

1. 

**Installer ou mettre à niveau la   AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI)**

   Pour vérifier si la CLI  AWS SAM est installée, procédez comme suit :

   ```
   $ sam --version
   ```

   Si la CLI  AWS SAM est déjà installée, la version sera affichée. Pour procéder à une mise à niveau vers la version la plus récente, consultez [Mise à niveau de la CLI  AWS SAM en cours](manage-sam-cli-versions.md#manage-sam-cli-versions-upgrade).

   Pour obtenir des instructions sur l'installation de la CLI  AWS SAM ainsi que sur tous ses conditions préalables, consultez [Installer la CLI  AWS SAM](install-sam-cli.md).

1. 

**Installation Terraform**

   Pour vérifier si Terraform est installé, procédez comme suit :

   ```
   $ terraform -version
   ```

   Pour l'installer Terraform, veuillez consulter la section [Installer Terraform](https://developer.hashicorp.com/terraform/downloads) dans le *registre Terraform* (langue française non garantie).

1. 

**Installation Docker pour les tests locaux**

   La CLI  AWS SAM nécessite Docker pour les tests locaux. Pour installer Docker, consultez [Installation de Docker pour une utilisation avec la CLI  AWS SAM](install-docker.md).

## Utilisation AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) commandes avec Terraform
<a name="gs-terraform-support-using"></a>

Lorsque vous exécutez une commande CLI  AWS SAM prise en charge, utilisez l'option `--hook-name` et indiquez la valeur `terraform`. Voici un exemple :

```
$ sam local invoke --hook-name terraform
```

Vous pouvez configurer cette option dans votre fichier de configuration de la CLI  AWS SAM avec ce qui suit :

```
hook_name = "terraform"
```

## Configurez pour Terraform projects
<a name="gs-terraform-support-projects"></a>

Suivez les étapes décrites dans cette rubrique pour utiliser la CLI  AWS SAM avec des projets Terraform.

Aucune configuration supplémentaire n'est requise si vous créez vos AWS Lambda artefacts en dehors de votre Terraform projet. [Utilisation de AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md)Reportez-vous à la section pour commencer à utiliser le AWS SAMCLI.

Si vous créez vos artefacts Lambda dans le cadre de vos projets Terraform, vous devez faire ce qui suit :

1. Installation de la version Python 3.8 ou ultérieure

1. Installez l'outil Make.

1. Définissez la logique de création de vos artefacts Lambda dans votre projet Terraform.

1. Définissez une ressource `sam metadata` pour informer la CLI  AWS SAM de votre logique de création.

1. Utilisez la AWS SAMCLI `sam build` commande pour créer vos artefacts Lambda.

### Installation Python 3.8 ou version ultérieure
<a name="gs-terraform-support-projects-python"></a>

PythonLa version 3.8 ou une version plus récente est requise pour être utilisée avec le AWS SAMCLI. Lorsque vous exécutez `sam build`, la CLI  AWS SAM génère des fichiers `makefiles` qui contiennent des commandes Python pour créer vos artefacts Lambda.

Pour obtenir des instructions d'installation, veuillez consulter la rubrique [Téléchargement de Python](https://wiki.python.org/moin/BeginnersGuide/Download) (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   Marque outil
<a name="gs-terraform-support-projects-make"></a>

GNU [Make](https://www.gnu.org/software/make/) est un outil qui contrôle la génération d'exécutables et d'autres fichiers non sources pour votre projet. La CLI  AWS SAM crée des fichiers `makefiles` qui dépendent de cet outil pour créer vos artefacts Lambda.

Si la Make n'est pas installée sur votre ordinateur local, installez-la avant de continuer.

Pour Windows, vous pouvez l'installer à l'aide de [Chocolatey](https://chocolatey.org/). PPour les instructions, consultez la rubrique [Utilisation de Chocolatey](https://www.technewstoday.com/install-and-use-make-in-windows/#using-chocolatey) dans le guide *Comment installer et utiliser « Make » sous Windows*

### Définir la logique de création des artefacts Lambda
<a name="gs-terraform-support-projects-logic"></a>

Utilisez le type de ressource Terraform `null_resource` pour définir votre logique de création 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 métadonnées sam ressource
<a name="gs-terraform-support-projects-metadata"></a>

La ressource `sam metadata` est un type de ressource Terraform `null_resource` qui fournit à la CLI  AWS SAM les informations dont elle 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, veuillez consulter la section [null\_resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) dans le *registre Terraform* (langue française non garantie).

**Pour définir un métadonnées sam ressource**

1. Donnez à votre ressource un nom commençant par `sam_metadata_` pour l'identifier comme étant une ressource sam metadata.

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

1. 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](terraform-sam-metadata.md).

Lorsque vous configurez une ressource `sam metadata` et utilisez une commande CLI  AWS SAM prise en charge, la CLI  AWS SAM génère le fichier de métadonnées avant d'exécuter la commande CLI  AWS SAM. Une fois que vous avez généré ce fichier, vous pouvez utiliser l'option `--skip-prepare-infra` associée aux futures commandes CLI  AWS SAM pour ignorer le processus de génération de métadonnées et 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 la commande AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) pour créer vos artefacts Lambda
<a name="gs-terraform-support-projects-build"></a>

Utilisez la AWS SAMCLI `sam build` commande pour créer vos artefacts Lambda. Lorsque vous exécutez `sam build`, la CLI  AWS SAM effectue les opérations suivantes :

1. Recherche des ressources `sam metadata` dans votre projet Terraform pour connaître et localiser vos ressources Lambda.

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

1. Crée un `.aws-sam` répertoire qui organise votre Terraform projet à utiliser avec les AWS SAMCLI `sam local` commandes.

**Pour créer à l'aide de la fonction de création SAM**

1. À partir du répertoire contenant votre module racine Terraform, procédez comme suit :

   ```
   $ sam build --hook-name terraform
   ```

1. 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'identifiant de la ressource Lambda peut être le nom de la fonction Lambda ou l'adresse complète de la ressource Terraform, par exemple `aws_lambda_function.list_books` ou `module.list_book_function.aws_lambda_function.this[0]`.

Si le code source de votre fonction ou d'autres fichiers de configuration Terraform se trouvent en dehors du répertoire contenant votre module racine Terraform, 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
<a name="gs-terraform-support-projects-build-container"></a>

Lorsque vous exécutez la AWS SAMCLI `sam build` commande, vous pouvez configurer le AWS SAMCLI pour créer votre application à l'aide d'un Docker conteneur local.

**Note**  
Vous devez avoir installé et configuré Docker. Pour obtenir des instructions, veuillez consulter [Installation de Docker pour une utilisation avec la CLI  AWS SAM](install-docker.md).

**Pour créer à l'aide d'un conteneur**

1. Créez un `Dockerfile` contenant les outils Terraform, Python et Make. 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"]
   ```

1. Utilisez [https://docs.docker.com/engine/reference/commandline/build/](https://docs.docker.com/engine/reference/commandline/build/) pour créer votre image Docker.

   Voici un exemple :

   ```
   $ docker build --tag {{terraform-build:v1}} {{<path-to-directory-containing-Dockerfile>}}
   ```

1. Exécutez la AWS SAMCLI `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
<a name="gs-terraform-support-projects-next"></a>

Pour commencer à utiliser la CLI  AWS SAM avec vos projets Terraform, consultez [Utilisation de AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md).

## Configurez pour Terraform Cloud
<a name="gs-terraform-support-cloud"></a>

Nous vous recommandons d'utiliser une Terraform v1.6.0 version plus récente. Si vous utilisez une ancienne version, vous devez générer un fichier de Terraform plan localement. Le fichier de plan local fournit les AWS SAM CLI informations dont il a besoin pour effectuer des tests et un débogage locaux.

**Pour générer un fichier de plan local**
**Note**  
Ces étapes ne sont pas obligatoires pour les versions ultérieures Terraform v1.6.0 ou ultérieures. Pour commencer à utiliser le AWS SAM CLI withTerraform Cloud, voir[Utilisation de la CLI  AWS SAM avec Terraform](using-samcli-terraform.md).

1. **Configurer un jeton d'API** : le type de jeton dépend de votre niveau d'accès. Pour en savoir plus, consultez la rubrique [Jetons d'API](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens) dans la *documentation Terraform Cloud*.

1. **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>}}"
   ```

1. **Obtenez votre identifiant d'exécution** : depuis la Terraform Cloud console, recherchez l'identifiant d'Terraformexécution de l'exécution que vous souhaitez utiliser avec le AWS SAMCLI.

   L'identifiant d'exécution se trouve dans la piste de navigation de votre exécution.  
![Piste de navigation dans Terraform Cloud qui affiche l'identifiant d'exécution.](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/images/terraform-01.png)

1. **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 la CLI  AWS SAM avec Terraform Cloud. Lorsque vous utilisez une commande CLI  AWS SAM prise en charge, utilisez l'option `--terraform-plan-file` 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](https://github.com/aws-samples/aws-sam-terraform-examples/tree/main/ga/api_gateway_v2_tf_cloud) dans le référentiel GitHub aws-samples*.

### Étapes suivantes
<a name="gs-terraform-support-cloud-next"></a>

Pour commencer à utiliser la CLI  AWS SAM avec Terraform Cloud, consultez [Utilisation de AWS SAM INTERFACE DE LIGNE DE COMMANDE (CLI) avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md).