

Ceci est le guide du développeur du AWS CDK v2. L'ancien CDK v1 est entré en maintenance le 1er juin 2022 et a pris fin le 1er juin 2023.

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.

# Utiliser CloudFormation des paramètres pour obtenir une CloudFormation valeur
<a name="get-cfn-param"></a>

Utilisez AWS CloudFormation les paramètres des applications AWS Cloud Development Kit (AWS CDK) pour saisir des valeurs personnalisées dans vos CloudFormation modèles synthétisés lors du déploiement.

Pour une introduction, voir [Paramètres et AWS CDK.](parameters.md)

## Définissez les paramètres dans votre application CDK
<a name="parameters-define"></a>

Utilisez la [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html)classe pour définir un paramètre. Vous devez spécifier au moins un type et une description pour la plupart des paramètres, bien que les deux soient techniquement facultatifs. La description apparaît lorsque l'utilisateur est invité à saisir la valeur du paramètre dans la AWS CloudFormation console. Pour plus d'informations sur les types disponibles, consultez la section [Types](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type).

**Note**  
Vous pouvez définir des paramètres dans n'importe quelle étendue. Cependant, nous vous recommandons de définir les paramètres au niveau de la pile afin que leur identifiant logique ne change pas lorsque vous refactorisez votre code.

**Example**  

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String",
    description="The name of the Amazon S3 bucket where uploaded files will be stored.")
```

```
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName")
        .type("String")
        .description("The name of the Amazon S3 bucket where uploaded files will be stored")
        .build();
```

```
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps
{
    Type = "String",
    Description = "The name of the Amazon S3 bucket where uploaded files will be stored"
});
```

## Paramètres d'utilisation
<a name="parameters-use"></a>

[Une `CfnParameter` instance expose sa valeur à votre application CDK via un jeton.](tokens.md) Comme tous les jetons, le jeton du paramètre est résolu au moment de la synthèse. Mais il s'agit d'une référence au paramètre défini dans le AWS CloudFormation modèle (qui sera résolu au moment du déploiement), plutôt que d'une valeur concrète.

Vous pouvez récupérer le jeton sous forme d'instance de la `Token` classe, ou sous forme de chaîne, de liste de chaînes ou de codage numérique. Votre choix dépend du type de valeur requis par la classe ou la méthode avec laquelle vous souhaitez utiliser le paramètre.

**Example**  


| Propriété | type de valeur | 
| --- | --- | 
|   `value`   |   `Token`instance de classe  | 
|   `valueAsList`   |  Le jeton représenté sous forme de liste de chaînes  | 
|   `valueAsNumber`   |  Le jeton représenté par un chiffre  | 
|   `valueAsString`   |  Le jeton représenté sous forme de chaîne  | 


| Propriété | type de valeur | 
| --- | --- | 
|   `value`   |   `Token`instance de classe  | 
|   `valueAsList`   |  Le jeton représenté sous forme de liste de chaînes  | 
|   `valueAsNumber`   |  Le jeton représenté par un chiffre  | 
|   `valueAsString`   |  Le jeton représenté sous forme de chaîne  | 


| Propriété | type de valeur | 
| --- | --- | 
|   `value`   |   `Token`instance de classe  | 
|   `value_as_list`   |  Le jeton représenté sous forme de liste de chaînes  | 
|   `value_as_number`   |  Le jeton représenté par un chiffre  | 
|   `value_as_string`   |  Le jeton représenté sous forme de chaîne  | 


| Propriété | type de valeur | 
| --- | --- | 
|   `getValue()`   |   `Token`instance de classe  | 
|   `getValueAsList()`   |  Le jeton représenté sous forme de liste de chaînes  | 
|   `getValueAsNumber()`   |  Le jeton représenté par un chiffre  | 
|   `getValueAsString()`   |  Le jeton représenté sous forme de chaîne  | 


| Propriété | type de valeur | 
| --- | --- | 
|   `Value`   |   `Token`instance de classe  | 
|   `ValueAsList`   |  Le jeton représenté sous forme de liste de chaînes  | 
|   `ValueAsNumber`   |  Le jeton représenté par un chiffre  | 
|   `ValueAsString`   |  Le jeton représenté sous forme de chaîne  | 

Par exemple, pour utiliser un paramètre dans une `Bucket` définition :

**Example**  

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
bucket = Bucket(self, "amzn-s3-demo-bucket",
    bucket_name=upload_bucket_name.value_as_string)
```

```
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket")
        .bucketName(uploadBucketName.getValueAsString())
        .build();
```

```
var bucket = new Bucket(this, "amzn-s3-demo-bucket")
{
    BucketName = uploadBucketName.ValueAsString
};
```

## Déployer des applications CDK contenant des paramètres
<a name="parameters-deploy"></a>

Lorsque vous déployez un AWS CloudFormation modèle généré via la AWS CloudFormation console, vous êtes invité à fournir les valeurs de chaque paramètre.

Vous pouvez également fournir des valeurs de paramètres à l'aide de la `cdk deploy` commande CDK CLI ou en spécifiant des valeurs de paramètres dans le fichier de pile de votre projet CDK.

### Fournissez des valeurs de paramètres avec cdk deploy
<a name="parameters-deploy-cli"></a>

Lorsque vous déployez à l'aide de la `cdk deploy` commande CDK CLI, vous pouvez fournir des valeurs de paramètres lors du déploiement avec l'`--parameters`option.

Voici un exemple de structure de `cdk deploy` commande :

```
$ cdk deploy <stack-logical-id> --parameters <stack-name>:<parameter-name>=<parameter-value>
```

Si votre application CDK contient une seule pile, vous n'avez pas à fournir l'argument d'ID logique de la pile ni la `stack-name` valeur de l'`--parameters`option. La CLI CDK trouvera et fournira automatiquement ces valeurs. Voici un exemple qui spécifie une `uploadbucket` valeur pour le `uploadBucketName` paramètre de la pile unique dans notre application CDK :

```
$ cdk deploy --parameters <uploadBucketName>=<uploadbucket>
```

### Fournir des valeurs de paramètres avec cdk deploy pour les applications multi-stack
<a name="parameters-deploy-cli-multi-stack"></a>

Voici un exemple d'application CDK TypeScript contenant deux piles de CDK. Chaque pile contient une instance de compartiment Amazon S3 et un paramètre permettant de définir le nom du compartiment Amazon S3 :

```
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

// Define the CDK app
const app = new cdk.App();

// First stack
export class MyFirstStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket1'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MyFirstBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Second stack
export class MySecondStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket2'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MySecondBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Instantiate the stacks
new MyFirstStack(app, 'MyFirstStack', {
  stackName: 'MyFirstDeployedStack',
});

new MySecondStack(app, 'MySecondStack', {
  stackName: 'MySecondDeployedStack',
});
```

Pour les applications CDK contenant plusieurs piles, vous pouvez effectuer les opérations suivantes :
+  **Déployer une pile avec des paramètres** : pour déployer une pile unique à partir d'une application à plusieurs piles, fournissez l'ID logique de la pile comme argument.

  Voici un exemple de déploiement `MySecondStack` avec `mynewbucketname` comme valeur de paramètre pour `bucketNameParam` :

  ```
  $ cdk deploy <MySecondStack> --parameters <bucketNameParam>='<mynewbucketname>'
  ```
+  **Déployez toutes les piles et spécifiez les valeurs des paramètres pour chaque pile** : fournissez le `'*'` caractère générique ou l'`--all`option permettant de déployer toutes les piles. Fournissez l'`--parameters`option plusieurs fois en une seule commande pour spécifier les valeurs des paramètres pour chaque pile. Voici un exemple :

  ```
  $ cdk deploy <'*'> --parameters <MyFirstDeployedStack>:<bucketNameParam>='<mynewfirststackbucketname>' --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewsecondstackbucketname>'
  ```
+  **Déployez toutes les piles et spécifiez les valeurs des paramètres pour une seule pile** : fournissez le `'*'` caractère générique ou l'`--all`option permettant de déployer toutes les piles. Spécifiez ensuite la pile pour laquelle définir le paramètre dans l'`--parameters`option. Voici des exemples qui déploient toutes les piles dans une application CDK et spécifient une valeur de paramètre pour la pile. `MySecondDeployedStack` AWS CloudFormation Toutes les autres piles seront déployées et utiliseront la valeur de paramètre par défaut :

  ```
  $ cdk deploy <'*'> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  $ cdk deploy <--all> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  ```

### Fournir des valeurs de paramètres `cdk deploy` pour les applications avec des piles imbriquées
<a name="parameters-deploy-cli-nested-stack"></a>

Le comportement de la CLI CDK lorsque vous travaillez avec des applications contenant des piles imbriquées est similaire à celui des applications à piles multiples. La principale différence est que si vous souhaitez déployer toutes les piles imbriquées, utilisez le `'**'` joker. Le `'*'` joker déploie toutes les piles mais ne déploie pas les piles imbriquées. Le `'**'` joker déploie toutes les piles, y compris les piles imbriquées.

Voici un exemple qui déploie des piles imbriquées tout en spécifiant la valeur du paramètre pour une pile imbriquée :

```
$ cdk deploy '**' --parameters <MultiStackCdkApp/SecondStack>:<bucketNameParam>='<mysecondstackbucketname>'
```

Pour plus d'informations sur les options de `cdk deploy` commande, consultez [cdk deploy](ref-cli-cmd-deploy.md).