【问题标题】:Autoscaling using cloudformation使用 cloudformation 自动缩放
【发布时间】:2020-10-26 23:30:40
【问题描述】:

我想出了一个模板,但它显示错误Template format error: [/Resources/MyServerGroup] resource definition is malformed 我已经尝试解决它但无法解决。请务必查看模板,我也是新手,可能会有一些错误。我从这个链接https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/quickref-autoscaling.html

获得了帮助
---
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  SourceStackName:
    Description: "Source stack name"
    Type: String
    AllowedPattern: "^[a-zA-Z][-a-zA-Z0-9]*$"
    Default: "noob-vpc"
Resources:
  ec2instance:
    Type: AWS::AutoScaling::LaunchConfiguration
    Properties:
      AvailabilityZone: us-east-2a
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            DeleteOnTermination: "true"
            VolumeSize: "8"
            VolumeType: gp2
      ImageId: ami-0bdcc6c05dec346bf
      InstanceType: t2.micro
      KeyName: sg-webserver
      NetworkInterfaces:
        - Description: Primary network interface
          DeviceIndex: 0
          SubnetId:
            Fn::ImportValue:
              Fn::Sub: "${SourceStackName}-PublicSubnet"
          GroupSet:
            - !Ref webserver
 
  webserver:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: gn-webserver
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
          Description: For traffic from Internet
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0
          Description: For traffic from Internet
      GroupDescription: Security Group for demo server
      VpcId:
        Fn::ImportValue:
          Fn::Sub: "${SourceStackName}-VpcID"
  MyServerGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    AvailabilityZones: us-east-2
    LaunchConfigurationName:
      Ref: ec2instance
    MinSize: '2'
    MaxSize: '3'
    # LoadBalancerNames:
    # - Ref: LB
  MyAsGroupWithNotification:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    AvailabilityZones: us-east-2
    LaunchConfigurationName:
      Ref: myLCOne
    MinSize: '0'
    MaxSize: '2'
    DesiredCapacity: '1'
    NotificationConfigurations:
    - TopicARN:
        Ref: topic1
      NotificationTypes:
      - autoscaling:EC2_INSTANCE_LAUNCH
      - autoscaling:EC2_INSTANCE_LAUNCH_ERROR
      - autoscaling:EC2_INSTANCE_TERMINATE
      - autoscaling:EC2_INSTANCE_TERMINATE_ERROR

其次,请检查我是否没有遗漏任何东西。我已经阅读了文档并提出了这个模板。我有另一个模板 VPC 客栈,我已经创建了子网并将它们的值导入到这个模板中

VPC:

---
AWSTemplateFormatVersion: 2010-09-09
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 11.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default
  InternetGateway:
    Type: AWS::EC2::InternetGateway
  VPCGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway
  SubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-2a
      VpcId: !Ref VPC
      CidrBlock: 11.0.0.0/24
      MapPublicIpOnLaunch: true
  SubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-2b
      VpcId: !Ref VPC
      CidrBlock: 11.0.1.0/24
      MapPublicIpOnLaunch: true
  SubnetC:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-2b
      VpcId: !Ref VPC
      CidrBlock: 11.0.2.0/24
      MapPublicIpOnLaunch: false
  SubnetD:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-2b
      VpcId: !Ref VPC
      CidrBlock: 11.0.3.0/24
      MapPublicIpOnLaunch: false
  RouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
  RouteTable2:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
  InternetRoute:
    Type: AWS::EC2::Route
    DependsOn: VPCGatewayAttachment
    Properties:
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway
      RouteTableId: !Ref RouteTable
  SubnetARouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref RouteTable
      SubnetId: !Ref SubnetA
  SubnetBRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref RouteTable
      SubnetId: !Ref SubnetB
  SubnetCRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref RouteTable2
      SubnetId: !Ref SubnetC

  SubnetDRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref RouteTable2
      SubnetId: !Ref SubnetD
  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: "Internet Group"
      GroupDescription: "SSH traffic in, all traffic out."
      VpcId: !Ref VPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: "22"
          ToPort: "22"
          CidrIp: 0.0.0.0/0
      SecurityGroupEgress:
        - IpProtocol: -1
          CidrIp: 0.0.0.0/0
Outputs:
  vpcID:
    Description: VPC id
    Value: !Ref VPC
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-VpcID"
  SubnetA:
    Description: public subnet
    Value: !Ref SubnetA
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-SubnetA"
  SubnetB:
    Description: public subnet 2
    Value: !Ref SubnetB
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-SubnetB"
  SubnetC:
    Description: priavte subnet
    Value: !Ref SubnetC
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-SubnetC"
  SubnetD:
    Description: private subnet 2
    Value: !Ref SubnetD
    Export:
      Name:
        Fn::Sub: "${AWS::StackName}-SubnetD"

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-cloudformation autoscaling


    【解决方案1】:

    MyServerGroupMyAsGroupWithNotification 资源的对齐方式错误。乍一看,它似乎是正确的,但由于它引用了另一个堆栈,因此无法运行。

    ---
    AWSTemplateFormatVersion: 2010-09-09
    Parameters:
      SourceStackName:
        Description: "Source stack name"
        Type: String
        AllowedPattern: "^[a-zA-Z][-a-zA-Z0-9]*$"
        Default: "noob-vpc"
    Resources:
      ec2instance:
        Type: AWS::AutoScaling::LaunchConfiguration
        Properties:
          AvailabilityZone: us-east-2a
          BlockDeviceMappings:
            - DeviceName: /dev/xvda
              Ebs:
                DeleteOnTermination: "true"
                VolumeSize: "8"
                VolumeType: gp2
          ImageId: ami-0bdcc6c05dec346bf
          InstanceType: t2.micro
          KeyName: sg-webserver
          NetworkInterfaces:
            - Description: Primary network interface
              DeviceIndex: 0
              SubnetId:
                Fn::ImportValue:
                  Fn::Sub: "${SourceStackName}-PublicSubnet"
              GroupSet:
                - !Ref webserver
     
      webserver:
        Type: AWS::EC2::SecurityGroup
        Properties:
          GroupName: gn-webserver
          SecurityGroupIngress:
            - IpProtocol: tcp
              FromPort: 22
              ToPort: 22
              CidrIp: 0.0.0.0/0
              Description: For traffic from Internet
            - IpProtocol: tcp
              FromPort: 80
              ToPort: 80
              CidrIp: 0.0.0.0/0
              Description: For traffic from Internet
          GroupDescription: Security Group for demo server
          VpcId:
            Fn::ImportValue:
              Fn::Sub: "${SourceStackName}-VpcID"
      MyServerGroup:
        Type: AWS::AutoScaling::AutoScalingGroup
        Properties:
            AvailabilityZones: us-east-2
            LaunchConfigurationName:
              Ref: ec2instance
            MinSize: '2'
            MaxSize: '3'
            # LoadBalancerNames:
            # - Ref: LB
      MyAsGroupWithNotification:
          Type: AWS::AutoScaling::AutoScalingGroup
          Properties:
            AvailabilityZones: us-east-2
            LaunchConfigurationName:
              Ref: myLCOne
            MinSize: '0'
            MaxSize: '2'
            DesiredCapacity: '1'
            NotificationConfigurations:
            - TopicARN:
                Ref: topic1
              NotificationTypes:
              - autoscaling:EC2_INSTANCE_LAUNCH
              - autoscaling:EC2_INSTANCE_LAUNCH_ERROR
              - autoscaling:EC2_INSTANCE_TERMINATE
              - autoscaling:EC2_INSTANCE_TERMINATE_ERROR
    

    【讨论】:

    • 我已经更新了添加我的 vpc 模板的问题。它现在显示Template format error: Unresolved resource dependencies [topic1] in the Resources block of the template,老实说,我正在弄清楚如何初始化topic1。请帮忙!!
    • 这是来自调用 Ref: topic1,没有同名的参数或资源
    • 我明白了,但你能帮我弄清楚如何创建它。它的主要功能是创建通知。我使用了这个来源docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…。该代码取自带有通知的自动缩放组。请帮我配置通知部分
    • NotificationConfigurations可以去掉,不是必须的,是触发实例事件的SNS发布
    • MyAsGroupWithNotification 中有错误,错误是Value of property AvailabilityZones must be of type List of String
    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2016-07-28
    • 2013-10-09
    • 2012-01-28
    • 2019-11-07
    相关资源
    最近更新 更多