Je souhaite utiliser plusieurs valeurs pour des paramètres individuels afin de créer ou de mettre à jour une pile à partir d'un modèle AWS CloudFormation.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
Pour utiliser plusieurs valeurs pour des paramètres individuels dans un modèle CloudFormation, effectuez l'une des actions suivantes :
Utiliser des types de paramètres spécifiques à AWS
Remarque : CloudFormation valide la valeur d'entrée que vous sélectionnez par rapport aux valeurs existantes de votre compte.
Dans les exemples de modèles CloudFormation suivants, le paramètre contenant 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, exécutez la commande create-stack de l’AWS CLI :
aws cloudformation create-stack --stack-name StackName --template-body file://TemplateFileName
--parameters ParameterKey=SecurityGroups,ParameterValue="sg-0123456789\,sg-2345678901"
Remarque : Remplacez StackName par le nom de votre pile et TemplateFileName par le nom de votre fichier. Dans ParameterValue, entrez l'ID de votre groupe de sécurité.
Utiliser les types de paramètres CommaDelimitedList
Dans les exemples de modèles CloudFormation suivants, le paramètre contenant 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