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
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 de
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.
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.
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 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 . 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 dans le Guide de l’utilisateur AWS Systems Manager ./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
La commande create-stack suivante crée une pile basée sur l’exemple de modèle.
aws cloudformation create-stack --stack-nameMyStack\ --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 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
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.
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 describe-stacks ou describe-change-set. 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
UsePreviousValuesur 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, CloudFormation validez-les 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 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
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' EC2 instance Amazon, tel que
i-1e731a32. AWS::EC2::KeyPair::KeyName-
Nom d'une paire de EC2 clés Amazon.
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' EC2 images Amazon 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' EC2 instances Amazon 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
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
Stringdans 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
StringListdans 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 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.