Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Terraform-AWS-如何防止删除EBS卷?_Amazon Web Services_Volume_Terraform_Terminate_Amazon Ebs - Fatal编程技术网

Amazon web services Terraform-AWS-如何防止删除EBS卷?

Amazon web services Terraform-AWS-如何防止删除EBS卷?,amazon-web-services,volume,terraform,terminate,amazon-ebs,Amazon Web Services,Volume,Terraform,Terminate,Amazon Ebs,我对Terraform还比较陌生,所以我希望这个问题是我做错了 我有一些实例需要附加单独的EBS卷。这些被定义为三个独立的地形资源: aws_instance aws_ebs_volume aws_volume_attachment 当实例启动时,AWS控制台内的卷表示它们具有“终止时删除”保护,但Terraform仍会销毁它们: 如果在aws_实例资源定义中使用“块_设备”映射,则可以防止其终止: 但此选项不显示在ebs_卷资源中: 如何阻止Terraform删除我的EBS卷 我尝试过

我对Terraform还比较陌生,所以我希望这个问题是我做错了

我有一些实例需要附加单独的EBS卷。这些被定义为三个独立的地形资源:

aws_instance
aws_ebs_volume
aws_volume_attachment
当实例启动时,AWS控制台内的卷表示它们具有“终止时删除”保护,但Terraform仍会销毁它们:

如果在aws_实例资源定义中使用“块_设备”映射,则可以防止其终止:

但此选项不显示在ebs_卷资源中:

如何阻止Terraform删除我的EBS卷

我尝试过这样做,但它只是停止terraform destroy作业的运行:

  lifecycle = {
    prevent_destroy = true
  }

谢谢

一般来说,
地形破坏
将破坏所有资源。如果您希望只销毁特定资源,可以使用例如:
terraform destroy-target=aws\u instance.some\u name


对于您的EBS卷示例,您还必须销毁
aws\u volume\u附件
资源。

它正按照文档所述执行,因此Terraform不允许
Terraform销毁
,如果您需要这样做,那么我建议将这些资源从其他资源转移到它们自己的terraform目录中

防破坏(bool)-此标志提供额外的保护,防止 对给定资源的破坏。当设置为true时,任何 包含销毁此资源的计划将返回错误 消息。


如果要防止意外删除ec2实例,可以在“创建ec2实例资源”部分使用以下命令

禁用api\u termination=“true”

我已经验证过几次了,它工作正常


快乐学习

请显示您的
terraform计划…
输出。您好-您想要创建或销毁计划,还是两者都要?不管怎样,它们都是相当大的输出,包含大量的业务数据(标记、名称标识符),因此我正试图从中编辑所有业务可识别数据。请容忍我。如果您只想了解特定部分,请告诉我。请显示aws_实例销毁计划输出。在这里->谢谢您是否将
生命周期
元参数放入
aws_ebs_卷
资源块?您可以通过链接到文档来改进此答案。此外,我的快速研究表明,Terraform中存在开放的bug,这可能导致该参数无法按预期工作——这可能也是应该解决的问题。