Amazon web services CloudFormation自动创建新的EC2实例&;体积
我需要按顺序执行以下操作,并想知道是否应该使用CloudFormation来实现这一点: 启动一个新的EC2实例(目前我正在通过在特定实例上选择“LaunchMoreLikeThis”手动执行)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自动化可以由以下文档/操作组成:
- 停止新实例
- 将卷与新实例分离
- 从以前创建的快照创建新卷
- 将新创建的卷附加到步骤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"]