

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.

# Spécifiez les ressources existantes au moment de l'exécution avec les CloudFormation types de paramètres fournis
<a name="cloudformation-supplied-parameter-types"></a>

Lors de la création de votre modèle, vous pouvez créer des paramètres qui obligent les utilisateurs à saisir les identifiants des AWS ressources existantes ou les paramètres de Systems Manager en utilisant les types de paramètres spécialisés fournis par CloudFormation. 

**Topics**
+ [Présentation de](#cloudformation-supplied-parameter-types-overview)
+ [Exemple](#cloudformation-supplied-parameter-types-example)
+ [Considérations](#cloudformation-supplied-parameter-types-considerations)
+ [Types de paramètres AWS spécifiques pris en charge](#aws-specific-parameter-types-supported)
+ [Types de paramètres Systems Manager pris en charge](#systems-manager-parameter-types-supported)
+ [Types de paramètres Systems Manager non pris en charge](#systems-manager-parameter-types-unsupported)

## Présentation de
<a name="cloudformation-supplied-parameter-types-overview"></a>

Dans CloudFormation, vous pouvez utiliser des paramètres pour personnaliser vos piles en fournissant des valeurs d'entrée lors de la création ou de la mise à jour des piles. Cette caractéristique rend vos modèles réutilisables et flexibles dans divers scénarios. 

Les paramètres sont définis dans la `Parameters` section d'un CloudFormation modèle. Chaque paramètre possède un nom et un type, et peut comporter des paramètres supplémentaires tels qu’une valeur par défaut et des valeurs autorisées. Pour de plus amples informations, veuillez consulter [CloudFormation Parameterssyntaxe du modèle](parameters-section-structure.md). 

Le type de paramètre détermine le type de valeur que le paramètre peut accepter. Par exemple, `Number` accepte uniquement des valeurs numériques, tandis que `String` accepte des valeurs textuelles. 

CloudFormation fournit plusieurs types de paramètres supplémentaires que vous pouvez utiliser dans vos modèles pour référencer les AWS ressources existantes et les paramètres de Systems Manager. 

Ces types de paramètres appartiennent à deux catégories :
+ **AWS-types de paramètres spécifiques** : CloudFormation fournit un ensemble de types de paramètres qui aident à détecter les valeurs non valides lors de la création ou de la mise à jour d'une pile. Lorsque vous utilisez ces types de paramètres, toute personne utilisant votre modèle doit spécifier des valeurs valides à partir Compte AWS de la région dans laquelle elle crée la pile.

  S'ils utilisent le AWS Management Console, CloudFormation fournit une liste préremplie des valeurs existantes provenant de leur compte et de leur région. Ainsi, l’utilisateur n’a pas besoin de mémoriser ou de saisir correctement un nom ou un ID spécifique. Il lui suffit de sélectionner des valeurs dans une liste déroulante. Dans certains cas, il peut même rechercher des valeurs par ID, par nom ou par valeur d’une balise `Name`.
+ **Types de paramètres de Systems Manager** : fournit CloudFormation également des types de paramètres correspondant aux paramètres existants dans le magasin de paramètres de Systems Manager. Lorsque vous utilisez ces types de paramètres, toute personne utilisant votre modèle doit spécifier une clé de magasin de paramètres comme valeur du type de paramètre Systems Manager, CloudFormation puis récupérer la dernière valeur dans le magasin de paramètres pour l'utiliser dans sa pile. Cela peut être utile lorsque vous devez fréquemment mettre à jour des applications avec de nouvelles valeurs de propriétés, telles que la nouvelle Amazon Machine Image (AMI) IDs. Pour plus d’informations sur le magasin de paramètres, consultez [Magasin de paramètres Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html).

Une fois que vos paramètres sont définis dans la `Parameters` section, vous pouvez référencer les valeurs des paramètres dans l'ensemble de votre CloudFormation modèle à l'aide de la `Ref` fonction.

## Exemple
<a name="cloudformation-supplied-parameter-types-example"></a>

L’exemple suivant montre un modèle utilisant les types de paramètres suivants. 
+ `AWS::EC2::VPC::Id`
+ `AWS::EC2::Subnet::Id`
+ `AWS::EC2::KeyPair::KeyName`
+ `AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>`

Pour créer une pile à partir de ce modèle, vous devez spécifier un ID VPC, un ID de sous-réseau et un nom de paire de clés existants dans votre compte. Vous pouvez également spécifier une clé de magasin de paramètres existante qui fait référence à l’ID d’AMI souhaité ou conserver la valeur par défaut de `/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2`. Ce paramètre public est un alias de l’ID AMI régional le plus récent pour l’AMI Amazon Linux 2. Pour plus d’informations sur les paramètres publics, consultez [Découverte des paramètres publics dans le magasin de paramètres](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html) dans le *Guide de l’utilisateur AWS Systems Manager *.

### JSON
<a name="cloudformation-supplied-parameter-types-example.json"></a>

```
{
    "Parameters": {
        "VpcId": {
            "Description": "ID of an existing Virtual Private Cloud (VPC).",
            "Type": "AWS::EC2::VPC::Id"
        },
        "PublicSubnetId": {
            "Description": "ID of an existing public subnet within the specified VPC.",
            "Type": "AWS::EC2::Subnet::Id"
        },
        "KeyName": {
            "Description": "Name of an existing EC2 key pair to enable SSH access to the instance.",
            "Type": "AWS::EC2::KeyPair::KeyName"
        },
        "AMIId": {
            "Description": "Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).",
            "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>",
            "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
        }
    },
    "Resources": {
        "InstanceSecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "Enable SSH access via port 22",
                "VpcId": { "Ref": "VpcId" },
                "SecurityGroupIngress": [
                    {
                        "IpProtocol": "tcp",
                        "FromPort": 22,
                        "ToPort": 22,
                        "CidrIp": "0.0.0.0/0"
                    }
                ]
            }
        },
        "Ec2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "KeyName": { "Ref": "KeyName" },
                "ImageId": { "Ref": "AMIId" },
                "NetworkInterfaces": [
                    {
                        "AssociatePublicIpAddress": "true",
                        "DeviceIndex": "0",
                        "SubnetId": { "Ref": "PublicSubnetId" },
                        "GroupSet": [{ "Ref": "InstanceSecurityGroup" }]
                    }
                ]
            }
        }
    },
    "Outputs": {
        "InstanceId": {
            "Value": { "Ref": "Ec2Instance" }
        }
    }
}
```

### YAML
<a name="cloudformation-supplied-parameter-types-example.yaml"></a>

```
Parameters:
  VpcId:
    Description: ID of an existing Virtual Private Cloud (VPC).
    Type: AWS::EC2::VPC::Id
  PublicSubnetId:
    Description: ID of an existing public subnet within the specified VPC.
    Type: AWS::EC2::Subnet::Id
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance.
    Type: AWS::EC2::KeyPair::KeyName
  AMIId:
    Description: Name of a Parameter Store parameter that stores the ID of the Amazon Machine Image (AMI).
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
  InstanceSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable SSH access via port 22
      VpcId: !Ref VpcId
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      KeyName: !Ref KeyName
      ImageId: !Ref AMIId
      NetworkInterfaces:
        - AssociatePublicIpAddress: "true"
          DeviceIndex: "0"
          SubnetId: !Ref PublicSubnetId
          GroupSet:
            - !Ref InstanceSecurityGroup
Outputs:
  InstanceId:
    Value: !Ref Ec2Instance
```

### AWS CLI commande pour créer la pile
<a name="cloudformation-supplied-parameter-types-cli-command"></a>

La commande [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) suivante crée une pile basée sur l’exemple de modèle. 

```
aws cloudformation create-stack --stack-name MyStack \
  --template-body file://sampletemplate.json \
  --parameters \
ParameterKey="VpcId",ParameterValue="vpc-a123baa3" \
ParameterKey="PublicSubnetId",ParameterValue="subnet-123a351e" \
ParameterKey="KeyName",ParameterValue="MyKeyName" \
ParameterKey="AMIId",ParameterValue="MyParameterKey"
```

Pour utiliser un type de paramètre qui accepte une liste de chaînes, par exemple `List<AWS::EC2::Subnet::Id>`, vous devez échapper les virgules dans la `ParameterValue` à l’aide d’une double barre oblique inversée, comme illustré dans l’exemple suivant.

```
--parameters ParameterKey="SubnetIDs",ParameterValue="subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0"
```

## Considérations
<a name="cloudformation-supplied-parameter-types-considerations"></a>

Il est fortement recommandé d’utiliser des références dynamiques afin de restreindre l’accès aux définitions de configuration sensibles, comme les informations d’identification tierces. Pour de plus amples informations, veuillez consulter [Obtenir les valeurs stockées dans d’autres services à l’aide de références dynamiques](dynamic-references.md).

Si vous souhaitez autoriser les utilisateurs du modèle à spécifier des valeurs différentes Comptes AWS, n'utilisez pas de types de paramètres AWS spécifiques. Définissez plutôt des paramètres de type `String` ou `CommaDelimitedList`. 

Voici quelques éléments à garder à l’esprit sur les types de paramètres Systems Manager :
+ Vous pouvez voir les valeurs résolues des paramètres dans l’onglet **Paramètres** de la pile dans la console, ou en exécutant [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stacks.html) ou [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-change-set.html). Notez que ces valeurs sont définies lorsque la pile est créée ou mise à jour, elles peuvent donc différer des valeurs actuellement stockées dans le magasin de paramètres.
+ Pour les mises à jour de pile, lorsque vous **utilisez l'option Utiliser la valeur existante** (ou si vous la définissez `UsePreviousValue` sur true), cela signifie que vous souhaitez continuer à utiliser la même clé de magasin de paramètres, et non sa valeur. CloudFormation récupère toujours la dernière valeur.
+ Si vous spécifiez des valeurs autorisées ou d'autres contraintes, vous les CloudFormation validez par rapport aux clés de paramètres que vous spécifiez, mais pas à leurs valeurs. Vous devez valider les valeurs directement dans le magasin de paramètres.
+ Lorsque vous créez ou mettez à jour des piles et que vous créez des ensembles de modifications CloudFormation , utilisez la valeur existante dans le Parameter Store à ce moment-là. Si un paramètre spécifié n'existe pas dans le Parameter Store sous celui de l'appelant Compte AWS, CloudFormation renvoie une erreur de validation.
+ Lorsque vous exécutez un ensemble de modifications, CloudFormation utilise les valeurs spécifiées dans le jeu de modifications. Vous devriez consulter ces valeurs avant d'exécuter le jeu de modifications, car celles-ci peuvent changer dans Parameter Store entre la création du jeu de modifications et son exécution.
+ Pour les paramètres du magasin de paramètres stockés dans celui-ci Compte AWS, vous devez fournir le nom du paramètre. Pour les paramètres du magasin de paramètres partagés par un autre Compte AWS, vous devez fournir l’ARN complet des paramètres.

## Types de paramètres AWS spécifiques pris en charge
<a name="aws-specific-parameter-types-supported"></a>

CloudFormation prend en charge les types AWS spécifiques suivants :

`AWS::EC2::AvailabilityZone::Name`  
Zone de disponibilité (`us-west-2a`, par exemple).

`AWS::EC2::Image::Id`  
ID d'image Amazon EC2 tel que `ami-0ff8a91507f77f867`. Notez que la CloudFormation console n'affiche pas de liste déroulante de valeurs pour ce type de paramètre.

`AWS::EC2::Instance::Id`  
ID d'instance Amazon EC2, tel que `i-1e731a32`.

`AWS::EC2::KeyPair::KeyName`  
Nom de paire de clés Amazon EC2.

`AWS::EC2::SecurityGroup::GroupName`  
Nom d’un groupe de sécurité VPC par défaut, par exemple `my-sg-abc`.

`AWS::EC2::SecurityGroup::Id`  
ID de groupe de sécurité (`sg-a123fd85`, par exemple).

`AWS::EC2::Subnet::Id`  
ID de sous-réseau (`subnet-123a351e`, par exemple).

`AWS::EC2::Volume::Id`  
ID de volume Amazon EBS, tel que `vol-3cdd3f56`.

`AWS::EC2::VPC::Id`  
ID d'un VPC (`vpc-a123baa3`, par exemple).

`AWS::Route53::HostedZone::Id`  
ID de zone hébergée Amazon Route 53, tel que `Z23YXV4OVPL04A`.

`List<AWS::EC2::AvailabilityZone::Name>`  
Tableau de zones de disponibilité d'une région (`us-west-2a, us-west-2b`, par exemple).

`List<AWS::EC2::Image::Id>`  
Un tableau d'images Amazon EC2 IDs, tel que. `ami-0ff8a91507f77f867, ami-0a584ac55a7631c0c` Notez que la CloudFormation console n'affiche pas de liste déroulante de valeurs pour ce type de paramètre.

`List<AWS::EC2::Instance::Id>`  
Un tableau d'instances Amazon EC2 IDs, tel que. `i-1e731a32, i-1e731a34`

`List<AWS::EC2::SecurityGroup::GroupName>`  
Tableau de noms de groupes de sécurité VPC par défaut, comme `my-sg-abc, my-sg-def`.

`List<AWS::EC2::SecurityGroup::Id>`  
Un ensemble de groupes de sécurité IDs, tels que`sg-a123fd85, sg-b456fd85`.

`List<AWS::EC2::Subnet::Id>`  
Un tableau de sous-réseaux IDs, tel que`subnet-123a351e, subnet-456b351e`.

`List<AWS::EC2::Volume::Id>`  
Un tableau de volumes Amazon EBS IDs, tel que`vol-3cdd3f56, vol-4cdd3f56`.

`List<AWS::EC2::VPC::Id>`  
Un ensemble de VPC IDs, tel que. `vpc-a123baa3, vpc-b456baa3`

`List<AWS::Route53::HostedZone::Id>`  
Un ensemble de zones hébergées Amazon Route 53 IDs, telles que`Z23YXV4OVPL04A, Z23YXV4OVPL04B`.

## Types de paramètres Systems Manager pris en charge
<a name="systems-manager-parameter-types-supported"></a>

CloudFormation prend en charge les types de paramètres Systems Manager suivants :

`AWS::SSM::Parameter::Name`  
Nom d'une clé de paramètre Systems Manager. Utilisez ce type de paramètre uniquement pour vérifier l'existence d'un paramètre obligatoire. CloudFormation ne récupérera pas la valeur réelle associée au paramètre. 

`AWS::SSM::Parameter::Value<String>`  
Un paramètre Systems Manager dont la valeur est une chaîne. C'est le type de paramètre `String` dans Parameter Store.

`AWS::SSM::Parameter::Value<List<String>>` ou `AWS::SSM::Parameter::Value<CommaDelimitedList>`  
Un paramètre Systems Manager dont la valeur est une liste de chaînes. C'est le type de paramètre `StringList` dans Parameter Store.

`AWS::SSM::Parameter::Value<AWS-specific parameter type>`  
Paramètre Systems Manager dont la valeur est un type de paramètre AWS spécifique.   
L'exemple suivant spécifie le type `AWS::EC2::KeyPair::KeyName` :  
+ `AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>`

`AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>`  
Paramètre Systems Manager dont la valeur est une liste de types de paramètres AWS spécifiques.   
L'exemple suivant spécifie une liste de types `AWS::EC2::KeyPair::KeyName` :  
+ `AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>`

## Types de paramètres Systems Manager non pris en charge
<a name="systems-manager-parameter-types-unsupported"></a>

CloudFormation ne prend pas en charge le type de paramètre Systems Manager suivant :
+ Listes des types de paramètres Systems Manager, par exemple : `List<AWS::SSM::Parameter::Value<String>>`

En outre, CloudFormation ne prend pas en charge la définition de paramètres de modèle en tant que types de paramètres `SecureString` Systems Manager. Cependant, vous pouvez spécifier des chaînes sécurisées comme *valeurs* de paramètres pour certaines ressources. Pour de plus amples informations, veuillez consulter [Obtenir les valeurs stockées dans d’autres services à l’aide de références dynamiques](dynamic-references.md).