AWS cloudformation - 如何将EBS卷附加到EC2窗口实例

时间:2017-07-01 02:41:58

标签: amazon-web-services amazon-cloudformation ami

这是一个有效的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"] }

    }

}   
}

2 个答案:

答案 0 :(得分:0)

这个问题大概有两部分:

  • 1)如何在cloudformation中指定有关Windows主机的ebs卷的详细信息

我认为您正在寻找this块设备映射(临时磁盘或ebs)或卷(仅EBS)之类的东西

 "BlockDeviceMappings" : [
                 {
                     "DeviceName" : "/dev/sdc",
                     "Ebs" : { "VolumeSize" : "50" }
                 },
                 {
                     "DeviceName" : "/dev/sdd",
                     "Ebs" : { "VolumeSize" : "100" }
                 }
             ]

或卷

"Volumes" : [
{ "VolumeId" : 
      { "Ref" : "NewVolume" }, "Device" : "/dev/sdk" }

]

其次

  • 2)如何备份Windows主机。

最简单的方法可能是使用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。