Amazon web services CloudFormation自动创建新的EC2实例&;体积

Amazon web services CloudFormation自动创建新的EC2实例&;体积,amazon-web-services,amazon-ec2,amazon-cloudwatch,Amazon Web Services,Amazon Ec2,Amazon Cloudwatch,我需要按顺序执行以下操作,并想知道是否应该使用CloudFormation来实现这一点: 启动一个新的EC2实例(目前我正在通过在特定实例上选择“LaunchMoreLikeThis”手动执行) 停止新实例 将卷与新实例分离 从以前创建的快照创建新卷 将新创建的卷附加到步骤1中创建的新EC2实例 重新启动EC2实例 如果不能通过CloudFormation实现这一点,是否有可能以某种方式将其自动化?是的,您可以使用云计算自动化所有这些任务 具体而言,SSM自动化可以由以下文档/操作组成:

我需要按顺序执行以下操作,并想知道是否应该使用CloudFormation来实现这一点:

启动一个新的EC2实例(目前我正在通过在特定实例上选择“LaunchMoreLikeThis”手动执行)

  • 停止新实例

  • 将卷与新实例分离

  • 从以前创建的快照创建新卷

  • 将新创建的卷附加到步骤1中创建的新EC2实例

  • 重新启动EC2实例


如果不能通过CloudFormation实现这一点,是否有可能以某种方式将其自动化?

是的,您可以使用云计算自动化所有这些任务

具体而言,SSM自动化可以由以下文档/操作组成:

  • AWS附件B卷
  • AWS可拆卸EBS体积
  • AWS-STOPEC2显示器
  • AWS-STARTEC2实例
  • AWS-RestartC2Instance

您的SSM自动化可以由CloudWatch事件触发。
。也可以使用CloudFormation构建SSM自动化。

听起来您想启动一个Amazon EC2实例,启动磁盘来自Amazon EBS快照

我可以建议一个更简单的流程吗

与其创建Amazon EBS卷的快照,不如创建原始实例的Amazon机器映像(AMI)。然后,在启动新的Amazon EC2实例时,只需选择AMI。这将导致新实例使用所需的启动磁盘启动

或者,通过选择快照并选择
create Image
命令,您可以从现有的Amazon EBS快照创建AMI。(但我认为这只适用于Linux,而不适用于Windows。)然后,从AMI启动新的EC2实例


在幕后,AMI实际上只是一个带有一些附加信息的Amazon EBS快照。

接受约翰的建议并使用AMI。此示例将帮助您入门,它使用AMI启动一个EC2(最新补丁)在最小值为1-最大值为1的自动缩放组中,因此无论电源故障、AZ下降等情况,一个EC2实例都将始终处于打开状态

将XYZ替换为您的产品名称:

Parameters:
  KeyPairName:
    Description: >-
      Mandatory. Enter a Public/private key pair. If you do not have one in this region,
      please create it before continuing
    Type: 'AWS::EC2::KeyPair::KeyName'
  EnvType:
    Description: Environment Name
    Default: dev
    Type: String
    AllowedValues:  [dev, test, prod]
  Subnet1ID:
    Description: 'ID of the subnet 1 for auto scaling group into'
    Type: 'AWS::EC2::Subnet::Id'
  Subnet2ID:
    Description: 'ID of the subnet 2 for auto scaling group'
    Type: 'AWS::EC2::Subnet::Id'
  Subnet3ID:
    Description: 'ID of the subnet 3 for auto scaling group'
    Type: 'AWS::EC2::Subnet::Id'

Resources:
  XYZMainLogGroup:
    Type: 'AWS::Logs::LogGroup'
  SSHMetricFilter:
    Type: 'AWS::Logs::MetricFilter'
    Properties:
      LogGroupName: !Ref XYZMainLogGroup
      FilterPattern: ON FROM USER PWD
      MetricTransformations:
        - MetricName: SSHCommandCount
          MetricValue: 1
          MetricNamespace: !Join
            - /
            - - AWSQuickStart
              - !Ref 'AWS::StackName'
  XYZAutoScalingGroup:
    Type: 'AWS::AutoScaling::AutoScalingGroup'
    Properties:
      LaunchConfigurationName: !Ref XYZLaunchConfiguration
      AutoScalingGroupName:  !Join
            - '.'
            - - !Ref 'AWS::StackName'
              - 'ASG'
      VPCZoneIdentifier:
        - !Ref Subnet1ID
        - !Ref Subnet2ID
        - !Ref Subnet3ID
      MinSize: 1
      MaxSize: 1
      Cooldown: '300'
      DesiredCapacity: 1
      Tags:
        - Key: Name
          Value: 'The Name'
          PropagateAtLaunch: 'true'
  XYZLaunchConfiguration:
    Type: 'AWS::AutoScaling::LaunchConfiguration'
    Properties:
      AssociatePublicIpAddress: 'false'
      PlacementTenancy: default
      KeyName: !Ref KeyPairName
      ImageId: ami-123432164a1b23da1
      IamInstanceProfile: "BaseInstanceProfile"
      InstanceType: t2.small

      SecurityGroups:
        - Fn::If: [CreateDevResources, !Ref DevSecurityGroup, !Ref "AWS::NoValue"]