如何在将 EBS 卷的大小调整回 Terraform 后将更改导入 EBS 卷?

How to import changes to a EBS volume after sizing it up back to Terraform?

在 space 之后 运行 我不得不调整我的 EBS 卷的大小,现在我想配置我的 Terraform 的大小部分并将以下块添加到 aws_instance资源:

ebs_block_device {
  device_name = "/dev/sda1"
  volume_size = 32
  volume_type = "gp2"
}

现在在 运行 terraform plan 之后它想要破坏现有的卷,这太糟糕了。我还尝试使用 terraform import 导入现有的,但它希望我为资源使用不同的名称,这也不是很好。

那么正确的步骤是什么?

aws_instance resource docs 提到对任何 EBS 块设备的更改都会导致重新创建实例。

要解决此问题,您可以使用 Terraform 以外的其他东西来使用 AWS 的新 elastic volumes 功能来增加 EBS 卷。 Terraform 也无法检测到在 aws_instance 资源中创建的任何附加块设备的更改:

NOTE: Currently, changes to *_block_device configuration of existing resources cannot be automatically detected by Terraform. After making updates to block device configuration, resource recreation can be manually triggered by using the taint command.

因此,您不需要返回并更改 Terraform 配置中的任何内容,除非您想在某个时候使用 Terraform 重建实例,此时担心丢失实例显然没有实际意义。

但是,如果出于某种原因您希望能够更改您的 Terraform 配置 并且 防止实例被破坏,那么您将需要操作您的状态文件.