

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.

# Prise en charge de Terraform par la CLI AWS SAM
<a name="terraform-support"></a>

Cette section traite de l'utilisation de l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) avec vos Terraform projets et Terraform le cloud.

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**
+ [Démarrer avec la prise en charge de Terraform par la CLI  AWS SAM](gs-terraform-support.md)
+ [Utilisation de la CLI  AWS SAM avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md)
+ [Utilisation de la CLI  AWS SAM avec Serverless.tf pour le débogage et les tests locaux](using-samcli-serverlesstf.md)
+ [CLI AWS SAM avec référence Terraform](terraform-reference.md)
+ [Qu'est-ce que la prise en charge de Terraform par la CLI  AWS SAM ?](#what-is-terraform-support)

# Démarrer avec la prise en charge de Terraform par la CLI  AWS SAM
<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 SAMCLITerraformprérequis](#gs-terraform-support-prerequisites)
+ [Utilisation des commandes de la CLI  AWS SAM avec Terraform](#gs-terraform-support-using)
+ [Configuration pour les projets Terraform](#gs-terraform-support-projects)
+ [Configuration pour Terraform Cloud](#gs-terraform-support-cloud)

## AWS SAMCLITerraformprérequis
<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 CLI  AWS SAM**

   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. 

**Installer 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. 

**Installer 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 des commandes de la CLI  AWS SAM 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"
```

## Configuration pour les projets Terraform
<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 la CLI  AWS SAM 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 de la version Python 3.8 ou ultérieure
<a name="gs-terraform-support-projects-python"></a>

PythonUne version 3.8 ou 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 l'outil Make
<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éfinir une ressource sam metadata
<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\$1resource](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) dans le *registre Terraform* (langue française non garantie).

**Pour définir une ressource sam metadata**

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.

### Utiliser la CLI  AWS SAM 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 la CLI  AWS SAM avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md).

## Configuration 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\$1gateway\$1v2\$1tf\$1cloud](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 la CLI  AWS SAM avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md).

# Utilisation de la CLI  AWS SAM avec Terraform pour le débogage et les tests locaux
<a name="using-samcli-terraform"></a>

Cette rubrique explique comment utiliser les commandes d'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) prises en charge avec vos Terraform projets etTerraform Cloud.

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**
+ [Tests locaux avec sam local invoke](#using-samcli-terraform-local-invoke)
+ [Tests locaux avec sam local start-api](#using-samcli-terraform-local-start-api)
+ [Tests locaux avec sam local start-lambda](#using-samcli-terraform-local-start-lambda)
+ [Restrictions liées à Terraform](#using-samcli-terraform-unsupported)

## Tests locaux avec sam local invoke
<a name="using-samcli-terraform-local-invoke"></a>

**Note**  
Pour utiliser le AWS SAMCLI pour tester localement, Docker doit être installé et configuré. Pour obtenir des instructions, veuillez consulter [Installation de Docker pour une utilisation avec la CLI  AWS SAM](install-docker.md).

Voici un exemple de test local de votre fonction Lambda en transférant un événement :

```
$ sam local invoke --hook-name terraform hello_world_function -e events/event.json -
```

Pour en savoir plus sur l'utilisation de cette commande, veuillez consulter la section [Présentation des tests avec sam local invoke](using-sam-cli-local-invoke.md).

## Tests locaux avec sam local start-api
<a name="using-samcli-terraform-local-start-api"></a>

Pour utiliser `sam local start-api` avec Terraform, procédez comme suit :

```
$ sam local start-api --hook-name terraform
```

Voici un exemple :

```
$ sam local start-api --hook-name terraform                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                          
Running Prepare Hook to prepare the current application                                                                                                                                                   
Executing prepare hook of hook "terraform"                                                                                                                                                                
Initializing Terraform application                                                                                                                                                                        
...
Creating terraform plan and getting JSON output                                                                                                                                                           
....
Generating metadata file                                                                                                                                                                                  
                                                                                                                                                                                                          
Unresolvable attributes discovered in project, run terraform apply to resolve them.                                                                                                                       
                                                                                                                                                                                                          
Finished generating metadata file. Storing in...
Prepare hook completed and metadata file generated at: ...    
Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]                                                                                                                                          
Mounting None at http://127.0.0.1:3000/hello [POST]                                                                                                                                                       
You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you  
used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart SAM CLI if you update your AWS SAM template                     
2023-06-26 13:21:20  * Running on http://127.0.0.1:3000/ (Press CTRL+C to quit)
```

Pour en savoir plus sur la commande, consultez [Présentation des tests avec sam local start-api](using-sam-cli-local-start-api.md).

### Fonctions Lambda qui utilisent des mécanismes d'autorisation Lambda
<a name="using-sam-cli-terraform-local-start-api-authorizers"></a>

Pour les fonctions Lambda configurées pour utiliser des mécanismes d'autorisation Lambda, la CLI  AWS SAM invoquera automatiquement votre mécanisme d'autorisation Lambda avant d'invoquer le point de terminaison de votre fonction Lambda.
+ Pour en savoir plus sur cette fonctionnalité dans le AWS SAMCLI, voir[Fonctions Lambda qui utilisent des mécanismes d'autorisation Lambda](using-sam-cli-local-start-api.md#using-sam-cli-local-start-api-authorizers).
+ Pour plus d'informations sur l'utilisation des mécanismes d'autorisation Lambda dans Terraform, veuillez consulter la section [https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/api_gateway_authorizer#example-usage) dans le *registre Terraform* (langue française non garantie).

## Tests locaux avec sam local start-lambda
<a name="using-samcli-terraform-local-start-lambda"></a>

Voici un exemple de test local de votre fonction Lambda avec le AWS Command Line Interface ()AWS CLI :

1. Utilisez la CLI  AWS SAM pour créer un environnement de test local :

   ```
   $ sam local start-lambda --hook-name terraform hello_world_function
   ```

1. Utilisez le AWS CLI pour appeler votre fonction localement :

   ```
   $ aws lambda invoke --function-name hello_world_function --endpoint-url http://127.0.0.1:3001/ response.json --cli-binary-format raw-in-base64-out --payload file://events/event.json
   ```

Pour en savoir plus sur la commande, consultez [Présentation des tests avec sam local start-lambda](using-sam-cli-local-start-lambda.md).

## Restrictions liées à Terraform
<a name="using-samcli-terraform-unsupported"></a>

Les limites suivantes s'appliquent à l'utilisation de la CLI  AWS SAM avec Terraform :
+ Fonctions Lambda liées à plusieurs couches.
+ Variables locales Terraform définissant les liens entre les ressources.
+ Référence à une fonction Lambda qui n'a pas encore été créée. Cela inclut les fonctions définies dans l'attribut body de la ressource de l'API REST.

Pour éviter ces limitations, vous pouvez exécuter `terraform apply` lorsqu'une nouvelle ressource est ajoutée.

# Utilisation de la CLI  AWS SAM avec Serverless.tf pour le débogage et les tests locaux
<a name="using-samcli-serverlesstf"></a>

L'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) peut être utilisée avec les modules Serverless.TF pour le débogage local et le test de vos AWS Lambda fonctions et couches. Les commandes CLI  AWS SAM suivantes sont prises en charge :
+ `sam build`
+ `sam local invoke`
+ `sam local start-api`
+ `sam local start-lambda`

**Note**  
Les versions 4.6.0 et ultérieures de Serverless.tf prennent en charge l'intégration de la CLI  AWS SAM.

Pour commencer à utiliser le AWS SAMCLI avec vos modules ServerLess.TF, passez à la dernière version de ServerLess.TF et du. AWS SAMCLI

À partir de la **version 6.0.0 de serverless.tf**, vous devez définir le paramètre `create_sam_metadata` sur `true`. Cela génère les ressources de métadonnées requises par la AWS SAMCLI `sam build` commande.

Pour en savoir plus sur Serverless.tf, consultez [terraform-aws-lambda-module](https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest).

# CLI AWS SAM avec référence Terraform
<a name="terraform-reference"></a>

Cette section est la référence pour l'utilisation de l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) Terraform pour le débogage et les tests locaux.

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

## AWS SAM référence des fonctionnalités prises en charge
<a name="terraform-reference-sam"></a>

La documentation de référence sur les fonctionnalités de la CLI  AWS SAM prises en charge pour une utilisation avec Terraform est disponible ici :
+ [sam build](sam-cli-command-reference-sam-build.md)
+ [sam local invoke](sam-cli-command-reference-sam-local-invoke.md)
+ [sam local start-api](sam-cli-command-reference-sam-local-start-api.md)
+ [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)

## Référence spécifique à Terraform
<a name="terraform-reference-specific"></a>

La documentation de référence spécifique à l'utilisation de la CLI  AWS SAM avec Terraform est disponible ici :
+ [ressource de métadonnées sam](terraform-sam-metadata.md)

# ressource de métadonnées sam
<a name="terraform-sam-metadata"></a>

Cette page contient des informations de référence sur le type de ressource **sam metadata resource** utilisé avec les projets Terraform.
+ Pour une introduction à l'utilisation de l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) avecTerraform, voir[Qu'est-ce que la prise en charge de Terraform par la CLI  AWS SAM ?](terraform-support.md#what-is-terraform-support).
+ Pour utiliser la CLI  AWS SAM avec Terraform, consultez [Utilisation de la CLI  AWS SAM avec Terraform pour le débogage et les tests locaux](using-samcli-terraform.md).

**Topics**
+ [Arguments](#terraform-sam-metadata-arguments)
+ [Exemples](#terraform-sam-metadata-examples)

## Arguments
<a name="terraform-sam-metadata-arguments"></a>


****  

| Argument | Description | 
| --- | --- | 
| built\$1output\$1path | Le chemin d'accès aux artefacts créés par votre AWS Lambda fonction. | 
| docker\$1build\$1args | Chaîne décodée de l'objet JSON des arguments de création Docker. Cet argument est facultatif. | 
| docker\$1context | Chemin d'accès au répertoire contenant le contexte de création de l'image Docker. | 
| docker\$1file |  Chemin d'accès au fichier Docker. Ce chemin d'accès est relatif au chemin `docker_context`. Cet argument est facultatif. La valeur par défaut est `Dockerfile`.  | 
| docker\$1tag | La valeur de la balise d'image Docker créée. Cette valeur est facultative. | 
| depends\$1on | Le chemin d'accès à la ressource de création pour votre fonction ou couche Lambda. Pour en savoir plus, veuillez consulter la section [L'argument **depends\$1on**](https://developer.hashicorp.com/terraform/language/meta-arguments/depends_on) dans le registre Terraform (langue française non garantie). | 
| original\$1source\$1code |  Le chemin d'accès vers l'emplacement de définition de votre fonction Lambda. Cette valeur peut être une chaîne, un tableau de chaînes ou un objet JSON décodé sous forme de chaîne. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| resource\$1name | Nom de la fonction Lambda. | 
| resource\$1type |  Format du type de package de votre fonction Lambda. Les valeurs acceptées sont : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/serverless-application-model/latest/developerguide/terraform-sam-metadata.html)  | 
| source\$1code\$1property | Le chemin d'accès au code de ressource Lambda dans l'objet JSON. Définissez cette propriété lorsque original\$1source\$1code est un objet JSON. | 

## Exemples
<a name="terraform-sam-metadata-examples"></a>

### ressource de métadonnées sam faisant référence à une fonction Lambda utilisant le type de package ZIP
<a name="terraform-sam-metadata-examples-example1"></a>

```
# Lambda function resource
resource "aws_lambda_function" "tf_lambda_func" {
  filename = "${path.module}/python/hello-world.zip"
  handler = "index.lambda_handler"
  runtime = "python3.8"
  function_name = "function_example"
  role = aws_iam_role.iam_for_lambda.arn
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}

# sam metadata resource
resource "null_resource" "sam_metadata_function_example" {
  triggers = {
    resource_name = "aws_lambda_function.function_example"
    resource_type = "ZIP_LAMBDA_FUNCTION"
    original_source_code = "${path.module}/python"
    built_output_path = "${path.module}/building/function_example"
  }
  depends_on = [
    null_resource.build_lambda_function # function build logic
  ]
}
```

### ressource de métadonnées sam faisant référence à une fonction Lambda utilisant le type de package image
<a name="terraform-sam-metadata-examples-example2"></a>

```
resource "null_resource" "sam_metadata_function {
  triggers = {
    resource_name = "aws_lambda_function.image_function"
    resource_type = "IMAGE_LAMBDA_FUNCTION"
    docker_context = local.lambda_src_path
    docker_file = "Dockerfile"
    docker_build_args = jsonencode(var.build_args)
    docker_tag = "latest"
  }
}
```

### ressource de métadonnées sam faisant référence à une couche Lambda
<a name="terraform-sam-metadata-examples-example3"></a>

```
resource "null_resource" "sam_metadata_layer1" {
  triggers = {
    resource_name = "aws_lambda_layer_version.layer"
    resource_type = "LAMBDA_LAYER"
    original_source_code = local.layer_src
    built_output_path = "${path.module}/${layer_build_path}"
  }
  depends_on = [null_resource.layer_build]
}
```

## Qu'est-ce que la prise en charge de Terraform par la CLI  AWS SAM ?
<a name="what-is-terraform-support"></a>

Utilisez l'interface de ligne de AWS Serverless Application Model commande (AWS SAMCLI) avec vos Terraform projets ou Terraform Cloud pour effectuer le débogage et le test locaux de :
+ AWS Lambda fonctions et couches.
+ Amazon API Gateway APIs.

Pour une introduction à Terraform, consultez [Qu'est-ce que c'est Terraform ?](https://developer.hashicorp.com/terraform/intro) sur le *HashiCorpsite Web Terraform *.

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

**Note**  
Dans le cadre de l'étape d'analyse AWS SAMCLI de l'intégration, AWS SAMCLI les commandes utilisateur des processus génèrent des fichiers et des données de projet. La sortie de la commande doit rester inchangée, mais dans certains environnements, l'environnement ou le lanceur peuvent injecter des journaux ou des informations supplémentaires dans la sortie.

**Topics**
+ [Qu'est-ce que c'est AWS SAMCLI ?](#what-is-terraform-support-sam-cli)
+ [Comment utiliser la CLI  AWS SAM avec Terraform ?](#what-is-terraform-support-how)
+ [Étapes suivantes](#what-is-terraform-support-next)

### Qu'est-ce que c'est AWS SAMCLI ?
<a name="what-is-terraform-support-sam-cli"></a>

 AWS SAMCLIIl s'agit d'un outil de ligne de commande que vous pouvez utiliser avec des AWS SAM modèles et des intégrations tierces prises en chargeTerraform, par exemple pour créer et exécuter vos applications sans serveur. Pour une introduction à la AWS SAMCLI, voir[Qu'est-ce que c'est AWS SAMCLI ?](what-is-sam-overview.md#what-is-sam-cli).

prend AWS SAMCLI en charge les commandes suivantes pour Terraform :
+ `sam local invoke`— Lance un appel unique d'une ressource AWS Lambda fonctionnelle localement. Pour en savoir plus sur la commande, consultez [Présentation des tests avec sam local invoke](using-sam-cli-local-invoke.md).
+ `sam local start-api` : exécutez vos ressources Lambda localement et testez-les via un hôte de serveur HTTP local. Ce type de test est utile pour les fonctions Lambda qui sont invoquées par un point de terminaison de passerelle API. Pour en savoir plus sur la commande, consultez [Présentation des tests avec sam local start-api](using-sam-cli-local-start-api.md).
+ `sam local start-lambda`— Démarrez un point de terminaison local pour votre fonction Lambda afin d'invoquer votre fonction localement en utilisant AWS Command Line Interface (AWS CLI) ou. SDKs Pour en savoir plus sur la commande, consultez [Présentation des tests avec sam local start-lambda](using-sam-cli-local-start-lambda.md).

### Comment utiliser la CLI  AWS SAM avec Terraform ?
<a name="what-is-terraform-support-how"></a>

Le [flux de travail Terraform de base](https://developer.hashicorp.com/terraform/intro/core-workflow) comprend trois étapes : **écrire**, **planifier** et **appliquer**. Grâce à la prise en AWS SAMCLI charge deTerraform, vous pouvez tirer parti de l' AWS SAMCLI`sam local`ensemble de commandes tout en continuant à utiliser vos Terraform flux de travail pour gérer vos applications sur AWS. En règle générale, cela signifie ce qui suit :
+ **Écrire** : créez votre infrastructure sous forme de code à l'aide de Terraform.
+ **Test et débogage** : utilisez la CLI  AWS SAM pour tester et déboguer localement vos applications.
+ **Planifier** : prévisualisez les modifications avant de les appliquer.
+ **Appliquer** : provisionnez votre infrastructure.

Pour un exemple d'utilisation du AWS SAMCLI withTerraform, voir [Better together : AWS SAMCLI and HashiCorp Terraform](https://aws.amazon.com/blogs/compute/better-together-aws-sam-cli-and-hashicorp-terraform/) at the *AWS Compute Blog*.

### Étapes suivantes
<a name="what-is-terraform-support-next"></a>

Pour remplir toutes les conditions préalables et configurer Terraform, consultez [Démarrer avec la prise en charge de Terraform par la CLI  AWS SAM](gs-terraform-support.md).