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.
Référencez les ressources existantes et les paramètres de Systems Manager avec les CloudFormation types de paramètres fournis
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.
Rubriques
Présentation
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 fonctionnalité rend vos modèles réutilisables et flexibles dans différents 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 Parameters référence de syntaxe de section pour les CloudFormation modèles.
Le type de paramètre détermine le type de valeur d'entrée que le paramètre peut accepter. Par exemple, accepte Number
uniquement les valeurs numériques, tandis que la saisie de texte est String
acceptée.
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 se répartissent en 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 et de saisir correctement un nom ou un identifiant spécifique. Au lieu de cela, ils sélectionnent simplement des valeurs dans une liste déroulante. Dans certains cas, ils peuvent même rechercher des valeurs par identifiant, nom ou valeur de
Name
balise. -
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é, telles que la nouvelle Amazon Machine Image (AMI)IDs. Pour plus d'informations sur le Parameter Store, consultez Systems Manager Parameter Store.
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
L'exemple suivant montre un modèle qui utilise 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 VPC ID, un ID de sous-réseau et un nom de paire de clés existants depuis votre compte. Vous pouvez également spécifier une clé de magasin de paramètres existante qui fait référence à l'AMIID souhaité ou conserver la valeur par défaut de
. Ce paramètre public est un alias pour l'AMIID régional de la dernière version d'Amazon Linux 2AMI. Pour plus d'informations sur les paramètres publics, consultez la section Découverte des paramètres publics dans Parameter Store dans le guide de AWS Systems Manager l'utilisateur./aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
JSON
{ "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
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
Ce qui suit create-stackcette commande crée une pile basée sur le modèle d'exemple.
aws cloudformation create-stack --stack-name
MyStack
\ --template-bodyfile://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 exempleList<AWS::EC2::Subnet::Id>
, vous devez éviter les virgules à l'intérieur du ParameterValue
par une double barre oblique inverse, comme indiqué dans l'exemple suivant.
--parameters ParameterKey="SubnetIDs",ParameterValue="
subnet-5ea0c127\\,subnet-6194ea3b\\,subnet-c87f2be0
"
Considérations
Il est vivement recommandé d'utiliser des références dynamiques pour restreindre l'accès aux définitions de configuration sensibles, telles que les informations d'identification tierces. Pour de plus amples informations, veuillez consulter Obtenez des valeurs stockées dans d'autres services à l'aide de références dynamiques.
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
ouCommaDelimitedList
.
Voici quelques points à prendre en compte en ce qui concerne les types de paramètres de Systems Manager :
-
Vous pouvez voir les valeurs de paramètres résolues dans l'onglet Paramètres de la pile dans la console, ou en exécutant describe-stacks ou describe-change-set. N'oubliez pas que ces valeurs sont définies lors de la création ou de la mise à jour de la pile. Elles peuvent donc être différentes des dernières valeurs de Parameter Store.
-
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 dans le Parameter Store lui-même.
-
Lorsque vous créez ou mettez à jour des piles et que vous créez des ensembles de modifications CloudFormation , utilisez la valeur existante dans 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 le paramètre completARN.
Types de paramètres AWS spécifiques pris en charge
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
-
Un identifiant EC2 d'image Amazon, 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
-
Un identifiant d'EC2instance Amazon, tel que
i-1e731a32
. AWS::EC2::KeyPair::KeyName
-
Nom d'une paire de EC2 clés Amazon.
AWS::EC2::SecurityGroup::GroupName
-
Un nom VPC de groupe de sécurité par défaut, tel que
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
-
Un identifiant de EBS volume Amazon, tel que
vol-3cdd3f56
. AWS::EC2::VPC::Id
-
Un VPC identifiant, tel que
vpc-a123baa3
. 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'EC2images AmazonIDs, 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'EC2instances AmazonIDs, tel que
i-1e731a32, i-1e731a34
. List<AWS::EC2::SecurityGroup::GroupName>
-
Un tableau de noms de groupes VPC de sécurité par défaut, tels que
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éseauxIDs, tel que
subnet-123a351e, subnet-456b351e
. List<AWS::EC2::Volume::Id>
-
Un tableau de EBS volumes AmazonIDs, tel que
vol-3cdd3f56, vol-4cdd3f56
. List<AWS::EC2::VPC::Id>
-
Un ensemble de VPCIDs, tels que
vpc-a123baa3, vpc-b456baa3
. List<AWS::Route53::HostedZone::Id>
-
Un ensemble de zones hébergées Amazon Route 53IDs, telles que
Z23YXV4OVPL04A, Z23YXV4OVPL04B
.
Types de paramètres de Systems Manager pris en charge
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>>
ouAWS::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
CloudFormation ne prend pas en charge le type de paramètre Systems Manager suivant :
-
Listes des types de paramètres de 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. Vous pouvez toutefois spécifier des chaînes sécurisées comme valeurs de paramètres pour certaines ressources. Pour de plus amples informations, veuillez consulter Obtenez des valeurs stockées dans d'autres services à l'aide de références dynamiques.