Как запустить три одинаковых экземпляра EC2 в 3 разных AZ в одном регионе без использования автоматического масштабирования - PullRequest
1 голос
/ 08 февраля 2020

Как создать шаблон CloudFormation, который запускает три одинаковых экземпляра EC2 в трех разных AZ в одном регионе, без использования автоматического масштабирования?

Например:

  • Экземпляр один в eu-west-1a
  • Экземпляр два в eu-west-1b
  • Экземпляр три в eu-west-1 c

Здесь мой шаблон:

AWSTemplateFormatVersion : 2010-09-09
Description: "simple web layer"
Parameters:
  ImageId:
    Description: 'web Layer'
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    AllowedPattern: "^[a-zA-Z][-a-zA-Z0-9]*$"
    Default: ami-244333
  Webservercapacity:
    Default: '3'
    Description: number
    Type: Number
    MinValue: '1'
    MaxValue: '4'
  Securitycab:
    Type: String
    Default: 0.0.0.0/0
    Description: enter vpc ip range    
  Subnets:
    Description: enter subnet
    Type: List<AWS::EC2::Subnet::Id>
    Default: subnet-384736383838
  Securitygroup:
    Description: enter sc
    Type: List<AWS::EC2::SecurityGroup::Id>
    Default: sg-237377383773873
  Vpc:
    Description: enter vpc
    Type: List<AWS::EC2::VPC::Id>
Resources:
  MyEC2Instance:
   Type: 'AWS::EC2::Instance'
   Properties:
     ImageId: !Ref ImageId
     InstanceType: t2.large
     VpcId: !Ref Vpc
     SubnetId: !Ref Subnets
     SecurityGroupIds:
       Type: AWS::EC2::SecurityGroup
       Properties:
          VpcId: vpc-1a2b3c4d
          GroupDescription: Sample target security group
          SecurityGroupIngress:    
          - IpProtocol: tcp
            FromPort: 80
            ToPort: 80
            CidrIp: !Ref Securitycab

1 Ответ

0 голосов
/ 08 февраля 2020

Шаблон должен запустить три отдельных экземпляра. В свойствах для каждого экземпляра укажите su bnet, обратившись к параметру Subnets (типа List<AWS::EC2::Subnet::Id>).

Вы можете использовать !Select, чтобы выбрать su bnet:

SubnetId: !Select [ 0, Subnets ]
or
SubnetId: !Select [ 1, Subnets ]
or
SubnetId: !Select [ 2, Subnets ]

Таким образом, это будет выглядеть так:

  Instance1:
   Type: 'AWS::EC2::Instance'
   Properties:
     SubnetId: !Select [ 0, Subnets ]
     ...

  Instance2:
   Type: 'AWS::EC2::Instance'
   Properties:
     SubnetId: !Select [ 1, Subnets ]
     ...

Кроме того, вместо определения группы безопасности в свойствах экземпляра, определите одну группу безопасности, а затем каждый экземпляр ссылается на него по ссылке.

...