Référencez les ressources existantes et les paramètres de Systems Manager avec les CloudFormation types de paramètres fournis - AWS CloudFormation

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.

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/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2. 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.

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-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 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 queami-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 quei-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 quemy-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 quevol-3cdd3f56.

AWS::EC2::VPC::Id

Un VPC identifiant, tel quevpc-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 queami-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 quei-1e731a32, i-1e731a34.

List<AWS::EC2::SecurityGroup::GroupName>

Un tableau de noms de groupes VPC de sécurité par défaut, tels quemy-sg-abc, my-sg-def.

List<AWS::EC2::SecurityGroup::Id>

Un ensemble de groupes de sécuritéIDs, tels quesg-a123fd85, sg-b456fd85.

List<AWS::EC2::Subnet::Id>

Un tableau de sous-réseauxIDs, tel quesubnet-123a351e, subnet-456b351e.

List<AWS::EC2::Volume::Id>

Un tableau de EBS volumes AmazonIDs, tel quevol-3cdd3f56, vol-4cdd3f56.

List<AWS::EC2::VPC::Id>

Un ensemble de VPCIDs, tels quevpc-a123baa3, vpc-b456baa3.

List<AWS::Route53::HostedZone::Id>

Un ensemble de zones hébergées Amazon Route 53IDs, telles queZ23YXV4OVPL04A, 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>> 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

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.