这是一个有效的Amazon CloudFormation JSON模板,用于创建Amazon EC2 Windows 2016实例。
我想附加在S3存储桶上备份的EBS卷。我怎样才能做到这一点?有什么指示吗?
{
"Parameters" :{
"KeyName" : {
"Description" : "Name of the existing EC2 KeyPair",
"Type" : "String"
}
},
"Mappings" : {
"RegionMap" : {
"us-east-1" : {
"AMI" : "ami-48b4bf31"
},
"us-west-1": {
"AMI" : "ami-48b4bf31"
},
"us-west-2":{
"AMI" : "ami-48b4bf31"
}
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties": {
"KeyName" : {"Ref" : "KeyName"},
"ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}
}
}
},
"Outputs" : {
"AvailablityZone" : {
"Description" : "Availability Zone of the newly created EC2 instance",
"Value" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ] }
},
"PublicIp" :{
"Description" : "Public IP is",
"Value": {"Fn::GetAtt": ["Ec2Instance", "PublicIp"] }
}
}
}
答案 0 :(得分:0)
这个问题大概有两部分:
我认为您正在寻找this块设备映射(临时磁盘或ebs)或卷(仅EBS)之类的东西
"BlockDeviceMappings" : [
{
"DeviceName" : "/dev/sdc",
"Ebs" : { "VolumeSize" : "50" }
},
{
"DeviceName" : "/dev/sdd",
"Ebs" : { "VolumeSize" : "100" }
}
]
或卷
"Volumes" : [
{ "VolumeId" :
{ "Ref" : "NewVolume" }, "Device" : "/dev/sdk" }
]
其次
最简单的方法可能是使用aws cli快照命令。
aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description "Backup of my windows server"
有时,人们将其放在Linux机器上的cron中,用一些逻辑包装并在整个基础结构中循环。美观,轻松,廉价的AWS基础架构备份。如果您需要还原,则可以从快照创建新映像。
答案 1 :(得分:-1)
备份:您的最佳策略是定期创建AMI 。 AMI是附加到Amazon EC2实例的卷的快照 - 是的,它可以包括 ALL 附加到实例的磁盘。 AMI实际上只是EBS快照的集合,加上一些元数据。
还原:从该AMI启动新的Amazon EC2实例。它将包含创建AMI时存在的所有磁盘上的所有数据。 (它创建新的EBS卷,但它们将包含与创建AMI时相同的数据。)
每次创建新的AMI时,它都会收到一个新的AMI-ID。因此,我建议您的CloudFormation模板接受AMI-ID作为参数,可以在创建堆栈时输入。您只需粘贴最新AMI的AMI-ID,实例就会使用该AMI。
另请注意,AMI仅在一个地区创建。您可以将AMI复制到其他区域,但它会在新区域中收到不同的AMI-ID。
坦率地说,您的CloudFormation模板似乎只是启动EC2实例,您可以在控制台中轻松完成,而无需使用CloudFormation。