20
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSリソースをTerraform管理下から外す方法

Posted at

私はAWSの構成管理にTerraformを日常利用しています。

AWSリソースをTerraformでコード化し、ある程度の期間管理していくとこんな思いを抱く時があります。

「作成済みのリソースは残したまま、Terraformの管理下からは外したい」

というわけで、今回は上記の手順を記録しておきます。

作成済みリソースをTerraform管理下から外す

下記コマンドを実行すればOKです。

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

以上です。

上記コマンドを実行すると、destroy を実行したり、Terraformコードから該当リソースの定義を削除した状態で apply を実行しても、該当するリソースはAWS環境上に残り続けます。

Terraformで管理しているリソースの一覧と状態を確認

state rm コマンドの実行しに指定するリソースタイプとリソース名は、terraform.tfstate というファイルに記録されています。

上記ファイルの管理方法には2種類(terraform.tfstate自体をVCSに含める or 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 コマンドの出力結果にあるリソース名を指定すればOKです。

ちなみに一覧表示の中で data.~ から始まるリソースがあります。これは 「Terraformコードで参照しているけれども、作成自体はTerraform管理外で行われたリソースである」ということを意味しています。

20
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?