Есть ли способ выбрать из списка подсетей, где запустить экземпляр EC2 в CloudFormation? - PullRequest
0 голосов
/ 13 июня 2019

Я довольно новичок в AWS и CloudFormation и пытаюсь создать шаблон CF для ускорения трех разных сред, но я хочу иметь возможность выбрать, в какой подсети запускается экземпляр EC2, без жесткого кодирования определенной подсети вшаблон.В моем примере ниже, однако, я получаю ошибку, что SubnetId должен быть строкой.Я не могу придумать другого способа добиться этого.Есть мысли?

Parameters:
  EnvironmentType:
    Type: String
    Default: Dev  
    AllowedValues:
      - Dev  
      - Test 
      - Production
    Description: Select Environment Type (Dev, Test, Production)
  SubnetIdList:
    Type: String
    AllowedValues: 
      - Public1
      - Public2
      - Private
    Description: Select a subnet



Mappings:
  InstanceSize:
    Dev:
      "EC2" : "t3.micro"
    Test:
      "EC2" : "t3.small"
    Production:
      "EC2" : "t3.medium"
  Sub:
    Public1:
      "Subnet" : "subnet-05daa558dc3f65529" #public 1
    Public2:
      "Subnet" : "subnet-0f57bb83e0fc545f4" #public 2
    Private:
      "Subnet" : "subnet-0eb76c49954acc803" #Private




Resources:
  EC2:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0080e4c5bc078760e
      InstanceType: !FindInMap [InstanceSize, !Ref EnvironmentType, EC2]
      KeyName: Ashkelon
      SubnetId: [Sub, !Ref SubnetIdList, Subnet]

1 Ответ

1 голос
/ 14 июня 2019

Я думаю, вам просто не хватает !FindInMap в определении вашего параметра подсети Ec2.Смотри ниже

Resources:
  EC2:
     Type: AWS::EC2::Instance
     Properties:
     ImageId: ami-0080e4c5bc078760e
     InstanceType: !FindInMap [InstanceSize, !Ref EnvironmentType, EC2]
     KeyName: Ashkelon
     SubnetId: !FindInMap [Sub, !Ref SubnetIdList, Subnet]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...