ECS实例AutoScalingGroup-不稳定-扩展活动失败

时间:2018-12-23 16:31:49

标签: amazon-web-services amazon-cloudformation

我想为具有自动扩展功能的AWS ECS集群创建云形成脚本。

我尝试通过控制台进行创建,然后从AWS Cloud形成复制了生成的Cloud Formation脚本。

    AWSTemplateFormatVersion: 2010-09-09
Description: >
  AWS CloudFormation template to create a new VPC or use an existing VPC for ECS
  deployment in Create Cluster Wizard. Requires exactly 1 Instance Types for a
  Spot Request.
Parameters:
  EcsClusterName:
    Type: String
    Description: >
      Specifies the ECS Cluster Name with which the resources would be
      associated
    Default: default
  KeyName:
    Type: String
    Description: >
      Optional - Specifies the name of an existing Amazon EC2 key pair to enable
      SSH access to the EC2 instances in your cluster.
    Default: ''
  VpcId:
    Type: String
    Description: >
      Optional - Specifies the ID of an existing VPC in which to launch your
      container instances. If you specify a VPC ID, you must specify a list of
      existing subnets in that VPC. If you do not specify a VPC ID, a new VPC is
      created with atleast 1 subnet.
    Default: ''
    ConstraintDescription: |
      VPC Id must begin with 'vpc-' or leave blank to have a new VPC created
  SecurityGroupId:
    Type: String
    Description: >
      Optional - Specifies the Security Group Id of an existing Security Group.
      Leave blank to have a new Security Group created
    Default: ''
  AsgMaxSize:
    Type: Number
    Description: >
      Specifies the number of instances to launch and register to the cluster.
      Defaults to 1.
    Default: '1'
  SecurityIngressFromPort:
    Type: Number
    Description: >
      Optional - Specifies the Start of Security Group port to open on ECS
      instances - defaults to port 0
    Default: '0'
  SecurityIngressToPort:
    Type: Number
    Description: >
      Optional - Specifies the End of Security Group port to open on ECS
      instances - defaults to port 65535
    Default: '65535'
  SecurityIngressCidrIp:
    Type: String
    Description: >
      Optional - Specifies the CIDR/IP range for Security Ports - defaults to
      0.0.0.0/0
    Default: 0.0.0.0/0
  EcsEndpoint:
    Type: String
    Description: |
      Optional - Specifies the ECS Endpoint for the ECS Agent to connect to
    Default: ''
  DeviceName:
    Type: String
    Description: Optional - Specifies the device mapping for the Volume
  UserData:
    Type: String
  IsWindows:
    Type: String
    Default: 'false'
Conditions:
  CreateEC2LCWithKeyPair: !Not 
    - !Equals 
      - Ref: KeyName
      - ''
  SetEndpointToECSAgent: !Not 
    - !Equals 
      - !Ref EcsEndpoint
      - ''
  CreateNewSecurityGroup: !Equals 
    - Ref: SecurityGroupId
    - ''
  CreateNewVpc: !Equals 
    - Ref: VpcId
    - ''
Resources:
  Vpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: 'true'
      EnableDnsHostnames: 'true'
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
  PubSubnetAz1:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref Vpc
      CidrBlock: 10.0.1.0/24
      AvailabilityZone: 'ap-southeast-1a'
      MapPublicIpOnLaunch: true
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 6c7ca021-4114-4ec8-acf8-4f103ff7011f
  PubSubnetAz2:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref Vpc
      CidrBlock: 10.0.2.0/24
      AvailabilityZone: 'ap-southeast-1b'
      MapPublicIpOnLaunch: true
    Metadata:
      'AWS::CloudFormation::Designer':
        id: cfe07e5c-e00f-4918-b877-f567fa08c802
  InternetGateway:
    Type: 'AWS::EC2::InternetGateway'
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 46bddd21-3027-4ccb-9e5d-ebf887429453
  AttachGateway:
    Type: 'AWS::EC2::VPCGatewayAttachment'
    Properties:
      VpcId: !Ref Vpc
      InternetGatewayId: !Ref InternetGateway
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 11b7e802-d5ba-437a-8695-4bd5406d4db7
  RouteViaIgw:
    Type: 'AWS::EC2::RouteTable'
    Properties:
      VpcId: !Ref Vpc
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
  PublicRouteViaIgw:
    Type: 'AWS::EC2::Route'
    DependsOn:
      - AttachGateway
    Properties:
      RouteTableId: !Ref RouteViaIgw
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 4b7c941a-8498-4e70-886b-9339018cc18a
  PubSubnet1RouteTableAssociation:
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      SubnetId: !Ref PubSubnetAz1
      RouteTableId: !Ref RouteViaIgw
    Metadata:
      'AWS::CloudFormation::Designer':
        id: cea0d60a-6d91-4922-90ea-f6db9f4378a9
  PubSubnet2RouteTableAssociation:
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      SubnetId: !Ref PubSubnetAz2
      RouteTableId: !Ref RouteViaIgw
    Metadata:
      'AWS::CloudFormation::Designer':
        id: c3b3c8e1-a9c8-47c6-8d26-b6f272bcd9e1
  EcsSecurityGroup:
    Condition: CreateNewSecurityGroup
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: ECS Allowed Ports
      SecurityGroupIngress:
        IpProtocol: tcp
        FromPort: !Ref SecurityIngressFromPort
        ToPort: !Ref SecurityIngressToPort
        CidrIp: !Ref SecurityIngressCidrIp
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 493fdb30-54ce-4e4e-9cd6-c9faa6e3f93b
  EcsInstanceLc:
    # DependsOn
    Type: 'AWS::AutoScaling::LaunchConfiguration'
    Properties:
      ImageId: 'ami-050865a806e0dae53'
      InstanceType: 't2.large'
      # AssociatePublicIpAddress: false
      SecurityGroups:
        - !If 
          - CreateNewSecurityGroup
          - !Ref EcsSecurityGroup
          - !Ref SecurityGroupId
      # BlockDeviceMappings:
      #   - DeviceName: !Ref DeviceName
      #     Ebs:
      #       VolumeSize: '22'
      #       VolumeType: 'standard'
      # UserData:
      #   'Fn::Base64': !Ref UserData
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 0e8e3b5a-7b14-4ffc-92af-ef9be7e51689
  EcsInstanceAsg:
    Type: 'AWS::AutoScaling::AutoScalingGroup'
    Properties:
      LaunchConfigurationName: !Ref EcsInstanceLc
      AvailabilityZones:
        - ap-southeast-1a
        - ap-southeast-1b   
      MinSize: '2'
      MaxSize: '3'
      DesiredCapacity: '2'
      Tags:
        - Key: Name
          Value: !Sub 'ECS Instance - ${AWS::StackName}'
          PropagateAtLaunch: 'true'
        - Key: Description
          Value: >-
            This instance is the part of the Auto Scaling group which was
            created through ECS Console
          PropagateAtLaunch: 'true'
    Metadata:
      'AWS::CloudFormation::Designer':
        id: 80731e0b-a9e5-461c-9049-e215aed2ad3d
Outputs:
  EcsInstanceAsgName:
    Description: Auto Scaling Group Name for ECS Instances
    Value: !Ref EcsInstanceAsg
  UsedByECSCreateCluster:
    Description: Flag used by ECS Create Cluster Wizard
    Value: 'true'
  TemplateVersion:
    Description: The version of the template used by Create Cluster Wizard
    Value: 2.0.0
Metadata:
  'AWS::CloudFormation::Designer':
    46bddd21-3027-4ccb-9e5d-ebf887429453:
      size:
        width: 60
        height: 60
      position:
        x: 720
        'y': 90
      z: 1
      embeds: []
    0e3933ae-23c2-44e1-a0d9-82fcfba93511:
      size:
        width: 600
        height: 600
      position:
        x: 60
        'y': 90
      z: 1
      embeds:
        - 1a2f2b53-09d3-4c2c-8286-295870b8c602
        - cfe07e5c-e00f-4918-b877-f567fa08c802
        - 6c7ca021-4114-4ec8-acf8-4f103ff7011f
    493fdb30-54ce-4e4e-9cd6-c9faa6e3f93b:
      size:
        width: 60
        height: 60
      position:
        x: 900
        'y': 540
      z: 1
      embeds: []
    0e8e3b5a-7b14-4ffc-92af-ef9be7e51689:
      size:
        width: 60
        height: 60
      position:
        x: 810
        'y': 350
      z: 1
      embeds: []
    80731e0b-a9e5-461c-9049-e215aed2ad3d:
      size:
        width: 60
        height: 60
      position:
        x: 720
        'y': 450
      z: 1
      embeds: []
      isassociatedwith:
        - 0e8e3b5a-7b14-4ffc-92af-ef9be7e51689
    1a2f2b53-09d3-4c2c-8286-295870b8c602:
      size:
        width: 240
        height: 240
      position:
        x: 90
        'y': 150
      z: 2
      parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
      embeds: []
      iscontainedinside:
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
    11b7e802-d5ba-437a-8695-4bd5406d4db7:
      source:
        id: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
      target:
        id: 46bddd21-3027-4ccb-9e5d-ebf887429453
      z: 1
    4b7c941a-8498-4e70-886b-9339018cc18a:
      size:
        width: 60
        height: 60
      position:
        x: 480
        'y': -20
      z: 1
      embeds: []
      isassociatedwith:
        - 46bddd21-3027-4ccb-9e5d-ebf887429453
      iscontainedinside:
        - 1a2f2b53-09d3-4c2c-8286-295870b8c602
        - 1a2f2b53-09d3-4c2c-8286-295870b8c602
      dependson:
        - 11b7e802-d5ba-437a-8695-4bd5406d4db7
    cfe07e5c-e00f-4918-b877-f567fa08c802:
      size:
        width: 150
        height: 150
      position:
        x: 450
        'y': 360
      z: 2
      parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
      embeds: []
      iscontainedinside:
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
    c3b3c8e1-a9c8-47c6-8d26-b6f272bcd9e1:
      source:
        id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
      target:
        id: cfe07e5c-e00f-4918-b877-f567fa08c802
      z: 2
    6c7ca021-4114-4ec8-acf8-4f103ff7011f:
      size:
        width: 150
        height: 150
      position:
        x: 390
        'y': 150
      z: 2
      parent: 0e3933ae-23c2-44e1-a0d9-82fcfba93511
      embeds: []
      iscontainedinside:
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
        - 0e3933ae-23c2-44e1-a0d9-82fcfba93511
    cea0d60a-6d91-4922-90ea-f6db9f4378a9:
      source:
        id: 1a2f2b53-09d3-4c2c-8286-295870b8c602
      target:
        id: 6c7ca021-4114-4ec8-acf8-4f103ff7011f
      z: 2

然后我根据需要使用特定参数对其进行了更改,当我上传脚本时,出现以下错误和过程回滚。

集团不稳定。 {current / minSize / maxSize}组大小= {0/1/3}。扩展活动失败:可用性区域没有默认子网:“ ap-southeast-1b”。 EC2实例启动失败。

1 个答案:

答案 0 :(得分:1)

由于在区域ap-southeast-1中没有可用的默认子网ap-southeast-1b而发生此问题。您可以检查默认VPC以及该区域中的默认子网是否存在。如果其中任何一个被删除,则可以按照link中提到的步骤创建默认子网。