Je souhaite créer ou mettre à jour une pile à partir d'un modèle AWS CloudFormation en utilisant plusieurs valeurs pour des paramètres individuels.
Brève description
Vous pouvez transmettre plusieurs valeurs pour des paramètres individuels dans un modèle AWS CloudFormation en utilisant l'une des méthodes suivantes :
Solution
Utiliser des types de paramètres spécifiques à AWS pour sélectionner des valeurs à partir d'une liste préremplie de valeurs AWS existantes à partir d'un compte AWS
Important : AWS CloudFormation valide la valeur d'entrée que vous sélectionnez par rapport aux valeurs existantes dans votre compte.
Dans les exemples de modèles AWS CloudFormation suivants, le paramètre avec la clé SecurityGroups spécifie un type de paramètre spécifique à AWS qui peut accepter plusieurs valeurs pour SecurityGroupIds.
Modèle JSON :
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"SecurityGroups": {
"Type": "List<AWS::EC2::SecurityGroup::Id>",
"Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)"
}
},
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-79fd7eee",
"KeyName": "testkey",
"SecurityGroupIds": {
"Ref": "SecurityGroups"
}
}
}
}
}
Modèle YAML :
AWSTemplateFormatVersion: 2010-09-09
Parameters:
SecurityGroups:
Type: 'List<AWS::EC2::SecurityGroup::Id>'
Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
Resources:
MyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: ami-79fd7eee
KeyName: testkey
SecurityGroupIds: !Ref SecurityGroups
Pour déployer la pile à l'aide de l'interface de ligne de commande AWS, utilisez la commande suivante :
Remarque : Remplacez StackName par le nom de votre pile. Remplacez TemplateFileName par le nom de votre fichier. Pour ParameterValue e, entrez l'ID de votre groupe de sécurité.
aws cloudformation create-stack --stack-name StackName --template-body file://TemplateFileName
--parameters ParameterKey=SecurityGroups,ParameterValue="sg-0123456789\,sg-2345678901"
Utiliser des types de paramètres CommaDelimitedList pour saisir des valeurs d'entrée
Dans les exemples de modèles AWS CloudFormation suivants, le paramètre avec la clé SecurityGroups spécifie un type CommaDelimitedList qui peut accepter plusieurs valeurs pour SecurityGroupIds.
Modèle JSON :
{
"AWSTemplateFormatVersion": "2010-09-09",
"Parameters": {
"SecurityGroups": {
"Type": "CommaDelimitedList",
"Description": "The list of SecurityGroupIds in your Virtual Private Cloud (VPC)",
"Default": "sg-a123fd85, sg-b456ge94"
}
},
"Resources": {
"MyEC2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "ami-79fd7eee",
"KeyName": "testkey",
"SecurityGroupIds": {
"Ref": "SecurityGroups"
}
}
}
}
}
Modèle YAML :
AWSTemplateFormatVersion: 2010-09-09
Parameters:
SecurityGroups:
Type: CommaDelimitedList
Description: The list of SecurityGroupIds in your Virtual Private Cloud (VPC)
Default: sg-a123fd85, sg-b456ge94
Resources:
MyEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: ami-79fd7eee
KeyName: testkey
SecurityGroupIds: !Ref SecurityGroups