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
タグ: AWS, Terraform