将AWS资源从Terraform的管理范畴中移除的方法

我在日常工作中使用Terraform来进行AWS的配置管理。

当我们使用Terraform将AWS资源编码并进行一段时间的管理时,可能会有以下的感受。

我想保留现有的资源,但从Terraform的管理下移除它们。

所以,本次我将记录下上述的步骤。

将已创建的资源从Terraform的管理范围中移除

只需执行以下命令即可。

$ terraform state rm <リソースタイプ>.<リソース名>

这就是以上的内容了。

当执行上述命令时,即使执行了 destroy 或从 Terraform 代码中删除了相关资源的定义,执行 apply 仍会让相关资源在 AWS 环境中持续存在。

确认正在使用Terraform管理的资源清单和状态。

将要执行的state rm命令涉及的资源类型和资源名称是记录在terraform.tfstate文件中的。

上述文件的管理方法有两种选择(包括将terraform.tfstate纳入版本控制系统中 或 存储在S3中),无论哪种情况,都可以使用以下命令进行确认。

# 一覧表示
$ terraform state list

data.aws_acm_certificate.sample
aws_ecs_cluster.sample
aws_ecs_service.sample
aws_ecs_task_definition.sample
・
・
・
aws_vpc.sample

# 状態確認
$ terraform state show aws_ecs_cluster.stg
# aws_ecs_cluster.sample:
resource "aws_ecs_cluster" "sample" {
    arn                = "arn:aws:ecs:ap-northeast-1:************:cluster/sample-cluster"
    capacity_providers = []
    id                 = "arn:aws:ecs:ap-northeast-1:************:cluster/sample-cluster"
    name               = "sample-cluster"
    tags               = {}

    setting {
        name  = "containerInsights"
        value = "disabled"
    }
}

可以通过`terraform state rm`命令中指定的值,输入`terraform state list`命令的输出结果中的资源名称即可。

顺便提一下,在列表中显示了以 data.~ 开头的资源。这意味着这些资源是 Terraform 代码所引用的,但其创建是在 Terraform 控制范围之外进行的。

bannerAds