Terraform 1.5.0 以降で簡単になった import を試してみた

terraformer や terraform import で既存の AWS リソースから Terraform コードにすることは可能ですが、Terraform 1.5.0 以降でコードの生成まで可能になった import を試してみました。

検証内容

# S3 バケットを作成
% aws s3 mb s3://mnrsdev-test

# Terraform 初期化に必要な最低限の Terraform コードを作成
% cat <<EOF > provider.tf
provider "aws" {
  region = "ap-northeast-1"
}
EOF

# Terraform を初期化
% terraform init

# インポートブロックを作成
$ cat <<EOF > import.tf
import {
  to = aws_s3_bucket.bucket
  id = "mnrsdev-test"
}
EOF

# インポートブロックから Terraform コードを生成
% terraform plan -generate-config-out s3.tf

# インポートを実行
% terraform apply -auto-approve
Plan: 1 to import, 0 to add, 0 to change, 0 to destroy.
aws_s3_bucket.bucket: Importing... [id=mnrsdev-test]
aws_s3_bucket.bucket: Import complete [id=mnrsdev-test]

Apply complete! Resources: 1 imported, 0 added, 0 changed, 0 destroyed.

# インポートブロックを削除
% rm import.tf

# 差分がないことを確認
% terraform plan
aws_s3_bucket.bucket: Refreshing state... [id=mnrsdev-test]

No changes. Your infrastructure matches the configuration.

生成された s3.tf

# __generated__ by Terraform
# Please review these resources and move them into your main configuration files.

# __generated__ by Terraform from "mnrsdev-test"
resource "aws_s3_bucket" "bucket" {
  bucket              = "mnrsdev-test"
  bucket_prefix       = null
  force_destroy       = null
  object_lock_enabled = false
  tags                = {}
  tags_all            = {}
}

参考

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket#import

タグ: ,