Comment utiliser plusieurs valeurs pour des paramètres individuels dans un modèle AWS CloudFormation ?

Dernière mise à jour : 20/08/2020

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 des manières 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

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