0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【簡単Terraform】【初心者向け】Terraform import の使い方

Posted at

既存の AWS リソースを Terraform 管理下に置く方法(VPC や S3 例)

🏗️ はじめに

Terraform は新しいリソースを作成するだけでなく、既存のクラウドリソースを Terraform の管理下に置く こともできます。
これを実現するのが terraform import コマンドです。

本章では、既存の AWS リソース(VPC、S3 など)を Terraform 管理下に置く手順を、実例とともに解説します。


🌍 terraform import とは?

terraform import は、Terraform の state に既存リソースを登録 するためのコマンドです。

  • リソース自体は作成されません。
  • Terraform は 既存リソースを state に記録 するだけです。
  • その後、HCL コードを記述して管理できます。
terraform import <resource_type>.<name> <resource_id>
パラメータ 説明
resource_type Terraform のリソースタイプ(例:aws_vpc, aws_s3_bucket)
<name> Terraform 内でのリソース名
<resource_id> クラウド上のリソース ID(例:VPC ID、S3 バケット名)

⚙️ 実際の例:VPC をインポートする

既存の VPC ID が vpc-0a1b2c3d4e5f6g7h の場合、Terraform で管理するには以下の手順です。

1️⃣ HCL ファイルにリソース定義(最小限)を作成

resource "aws_vpc" "existing_vpc" {
  # インポート後、属性は自動取得されます
}

2️⃣ Terraform import 実行

terraform import aws_vpc.existing_vpc vpc-0a1b2c3d4e5f6g7h

🔹 成功すると、state に既存 VPC が登録されます。
その後、terraform plan でコードとリソースの差分を確認できます。

3️⃣ 属性の補完

インポート後は、HCL コードに 必須属性やタグを記述 して、Terraform が管理できるようにします。

resource "aws_vpc" "existing_vpc" {
  cidr_block = "10.0.0.0/16"
  enable_dns_support = true
  enable_dns_hostnames = true
  tags = {
    Name = "imported-vpc"
  }
}

⚙️ 実際の例:S3 バケットをインポートする

既存の S3 バケット名が my-existing-bucket の場合も同様です。

1️⃣ HCL ファイルにリソース定義

resource "aws_s3_bucket" "existing_bucket" {
  # インポート後に属性を補完
}

2️⃣ Terraform import 実行

terraform import aws_s3_bucket.existing_bucket my-existing-bucket

3️⃣ 属性の補完

resource "aws_s3_bucket" "existing_bucket" {
  bucket = "my-existing-bucket"
  acl    = "private"
  tags = {
    Name = "imported-bucket"
  }
}

💡 注意:インポート後、HCL ファイルを正確に記述しないと、terraform plan 時に「差分あり」と認識されます。


🔄 注意点とベストプラクティス

  • インポートは 既存リソースを Terraform が管理できるようにする 操作であり、リソース自体を変更するわけではありません。
  • 必ずコード(HCL)と state の属性を一致 させること。
  • チームで作業する場合、インポート後の state は リモート backend(S3 + DynamoDB) に保存して共有すると安全。
  • 複雑なリソース(VPC サブネット、セキュリティグループなど)は、依存関係を考慮して順番にインポート。

🧠 まとめ

  • terraform import で既存 AWS リソースを Terraform 管理下に登録できる。
  • VPC や S3 バケットなどのリソースで実例が多く、手順は同じ。
  • インポート後は HCL コードを正確に記述して差分を解消することが重要。
  • チーム開発では、リモート state とロック機能を活用すると安全に運用可能。

🌱 既存リソースも Terraform で管理すれば、IaC の恩恵を最大化できる。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?