Fusic Tech Blog

Fusion of Society, IT and Culture

Terraform import整理(AWS Management Consoleでポチポチ作ったものを反映したい)
2021/10/12

Terraform import整理(AWS Management Consoleでポチポチ作ったものを反映したい)

切っ掛け

お客様の新しい要件やTerraformリファクタリング、メンテナンスしているとAWS Management Consoleにはいますが、Terraformには反映されなかったリソースがあったりします。 ここにTerraformのresourceやmoduleを同じく作ってapplyしようとしたらcreateしようとして困ります。 この時、 Terraform import で解決可能です! 😌

https://www.terraform.io/docs/cli/commands/import.html

問題状況再現

まず、AWS Management ConsoleからS3をポチポチで作ります。

問題解決

S3などでTerraformのstateを管理している場合はバックアップした後にすることをお勧めします

Terraform import を実行する前にTerraformスクリプトにリソースを定義しておく必要があります。

resource "aws_s3_bucket" "main" {
  bucket        = "aws-import-a-1"
  acl           = "private"
  force_destroy = true
}

ターミナルで Terraform import 'aws_s3_bucket.main' aws-import-a-1 を実行してimportします。

terraform plan からTerraformに反映されたことを確認できます。

Terraform importはドキュメントのresources項目でimportに使われる要素を確認する必要があります

AWSリソース次第でimportに使われる要素が違うからです。
S3の場合、 terraform import 'Terraformで定義する予定のリソース名' 実際のS3バケット名 でシンプルですが、🙂 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket#import

Route53の場合は record idrecord namerecord type たちの間に _ を入れながら繋ぐ必要があります。🧐 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record#import

Choi Jiho

Choi Jiho

Company : Fusic CO., LTD Program Language : PHP, Go, Ruby