Import Helper
既存の AWS/GCP/Azure リソースを Terraform の管理下に取り込む支援をします。
対応操作
| 操作 | トリガー例 |
|---|---|
| import ガイド | 「import して」「インポート」 |
| リソース指定 | 「EC2 を import」「S3 を import」 |
| 設定生成 | 「import 用の tf を作成」 |
実行手順
1. import 対象の確認
ユーザーにリソース情報を確認:
code
## Import 対象 import するリソースの情報を教えてください: 1. リソースタイプ(例: aws_instance, aws_s3_bucket) 2. リソース ID(例: i-1234567890abcdef0, my-bucket) 3. Terraform でのリソース名(例: main, web_server)
2. リソース設定ファイルの作成
import 前に空のリソース定義が必要:
hcl
# {resource_type}.tf
resource "{resource_type}" "{resource_name}" {
# import 後に terraform plan で確認し、属性を追加
}
例:
hcl
# aws_instance.tf
resource "aws_instance" "web_server" {
# import 後に terraform plan で確認し、属性を追加
}
3. import コマンドの生成
bash
terraform import {resource_type}.{resource_name} {resource_id}
例:
bash
# EC2 インスタンス terraform import aws_instance.web_server i-1234567890abcdef0 # S3 バケット terraform import aws_s3_bucket.data my-bucket-name # IAM ロール terraform import aws_iam_role.app my-role-name # VPC terraform import aws_vpc.main vpc-12345678 # セキュリティグループ terraform import aws_security_group.web sg-12345678
4. import 実行
bash
terraform import {resource_type}.{resource_name} {resource_id}
成功時:
code
{resource_type}.{resource_name}: Importing from ID "{resource_id}"...
{resource_type}.{resource_name}: Import prepared!
{resource_type}.{resource_name}: Refreshing state...
Import successful!
The resources that were imported are shown above.
5. 設定の同期
import 後、現在の state と設定ファイルを同期:
bash
terraform plan
差分を確認し、設定ファイルを更新:
code
## Import 後の設定同期
terraform plan で以下の差分が検出されました:
{差分の内容}
この差分をなくすために、設定ファイルを更新してください。
6. 出力フォーマット
code
## Import 完了
### リソース
- タイプ: {resource_type}
- 名前: {resource_name}
- ID: {resource_id}
### 次のステップ
1. `terraform plan` で差分を確認
2. 設定ファイルに必要な属性を追加
3. 再度 `terraform plan` で差分がないことを確認
### 注意
import 後は設定ファイルと state の同期が必要です。
`terraform plan` で差分が出なくなるまで設定を調整してください。
主要リソースの import コマンド例
| リソース | コマンド |
|---|---|
| EC2 インスタンス | terraform import aws_instance.NAME INSTANCE_ID |
| S3 バケット | terraform import aws_s3_bucket.NAME BUCKET_NAME |
| IAM ロール | terraform import aws_iam_role.NAME ROLE_NAME |
| VPC | terraform import aws_vpc.NAME VPC_ID |
| サブネット | terraform import aws_subnet.NAME SUBNET_ID |
| セキュリティグループ | terraform import aws_security_group.NAME SG_ID |
| RDS インスタンス | terraform import aws_db_instance.NAME DB_IDENTIFIER |
| Lambda 関数 | terraform import aws_lambda_function.NAME FUNCTION_NAME |
注意事項
- •✅ import 前に空のリソース定義を作成
- •✅ import 後は必ず
terraform planで同期を確認 - •✅ 設定ファイルは state に合わせて更新
- •⚠️ import はリソースを変更しないが、設定ミスで次回 apply 時に変更される可能性