Terraform - 現在のAWS構成をtfstateに反映するには?

既存のAWSのリソースをTerraformの管理下に置くことは可能です。これは通常、terraform importコマンドを使用して行われます。

terraform importを使用することで、既存のインフラストラクチャリソースをTerraformの状態ファイル(tfstate)にインポートすることができます。

ただし、注意点がいくつかあります:

1. **事前準備**:

terraform importを実行する前に、対応するTerraformリソースのコードがHCL (HashiCorp Configuration Language) で定義されている必要があります。

このHCLのリソース定義は、インポートしたいAWSリソースのプロパティと一致している必要はありませんが、リソース自体の定義は必要です。

2. **手動設定**:

インポートした後、HCLのリソース定義を手動で既存のAWSリソースの設定に合わせて調整する必要があります。

これは、terraform importがAWSリソースの全ての属性や設定を自動的にTerraformコードに反映しないためです。

例:

既存のAWS S3バケットをTerraformの管理下に置きたい場合、まずバケットに対応するTerraformリソースを定義します:

resource "aws_s3_bucket" "my_bucket" {
# この部分は後で実際のバケットの設定に合わせて調整する
}

次に、terraform importコマンドを使用して、このS3バケットをTerraformの状態ファイルにインポートします:

terraform import aws_s3_bucket.my_bucket my-existing-bucket-name

最後に、Terraformの定義を既存のS3バケットの実際の設定に合わせて更新します。

3. **複雑なリソース**:

一部のAWSリソースは複数の部分やサブリソースを持っている場合があり、これらを全て手動でインポートするのは非常に手間がかかることがあります。

4. **ツールの利用**:

terraformer のようなサードパーティツールを使用すると、

AWSのリソースを自動的にTerraformコードとして抽出し、インポートするプロセスを効率化することができます。

 

注意: インポートする前に、既存の環境とTerraformの定義をバックアップして、変更の影響を完全に理解していることを確認してください。

 

記事タイトル検索