如何为通过LaunchTemplate创建的AWS EBS卷设置“删除时快照”

时间:2020-07-08 19:07:04

标签: amazon-ec2 aws-cdk aws-ebs

在Amazon Web Services云(AWS)中,我想创建一个启动模板,该模板启动具有根EBS卷和单独的EBS数据卷的AMI。删除实例后,我要删除两个卷,但是首先我要使用DeletionPolicy中的Snapshot对数据卷进行快照 },而不是DeleteRetain。我想使用Python中的AWS CDK创建此启动模板,但作为最后的手段,如果我可以通过这种方式配置EBS卷(包括在实例启动后运行的脚本)进行配置,将很有帮助。 / p>

当前,我已将启动模板配置为创建EBS卷,并在AMI终止时将其删除。到现在为止还挺好。我找不到说要让“数据”卷在删除前拍摄快照的说法。我最接近的方法是通过启动快照来触发脚本以响应实例终止信号,但是我担心那是不可靠的。

AWS CloudFormation documentation声称您可以在DeletionPolicy上设置Snapshot中的AWS::EC2::Volume。我大多无法弄清楚如何使它作为数据卷(而不是根卷或AMI卷)连接到EC2实例的随机EBS卷上工作。

  • 我在AWS控制台中看不到任何设置DeletionPolicy的地方
  • aws CLI中看不到任何地方可以读取DeletionPolicy
  • 看着LaunchTemplate,我看不到设置此政策的任何地方

所以我可能在想这是错误的方式,或者文档只是误导。在将文档倾注了几个小时之后,我相信这不是一个真正的选择,而是为RDS群集启用“删除时快照”的黑客。

如何使它适用于普通EC2实例?

1 个答案:

答案 0 :(得分:-1)

如果您愿意使用terraform,也可以尝试使用它。 示例:

    resource "aws_ebs_volume" "example" {
  availability_zone = "us-west-2a"
  size              = 40

  tags = {
    Name = "HelloWorld"
  }
}

resource "aws_ebs_snapshot" "example_snapshot" {
  volume_id = "${aws_ebs_volume.example.id}"

  tags = {
    Name = "HelloWorld_snap"
  }
}

因此,当卷被删除时,快照将存在,您可以随时从中恢复数据。

您可以将参数DeleteOnTermination设置为true或false。 实例终止后,Amazon Elastic Compute Cloud(Amazon EC2)使用每个附加的EBS卷的DeleteOnTermination属性的值来确定实例终止时是保留还是删除该卷。默认情况下,实例根卷的DeleteOnTermination属性设置为true,但对于所有其他卷类型,该属性设置为false。