Table of Contents
切っ掛け
お客様の新しい要件やTerraformリファクタリング、メンテナンスしているとAWS Management Consoleにはいますが、Terraformには反映されなかったリソースがあったりします。
ここにTerraformのresourceやmoduleを同じく作ってapplyしようとしたらcreateしようとして困ります。
この時、 Terraform import で解決可能です! 😌
問題状況再現
まず、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 id 、 record name 、 record type たちの間に _ を入れながら繋ぐ必要があります。🧐
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/route53_record#import
Choi Jiho
Company : Fusic CO., LTD Program Language : PHP, Go, Ruby