現在のAWS構成をterraformコードにするには?

AWS (Amazon Web Services) の現在の構成を Terraform コードに変換(または "落とす")するためにはいくつかの手段が存在します。以下はその主な方法です。

手動での変換

現在の AWS リソースを手動で調査し、それに対応するTerraform コードを書く方法です。この方法は手間がかかりますが、最も細かい制御が可能です。

AWS CLI と jq

AWS CLI を使用して現在のリソースの情報を JSON 形式で取得し、それを jq などのツールを使用して適切な形に整形することもできます。

その後、この情報を用いて Terraform コードを生成することができます。

例:

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --output json | jq .

Terraform の import コマンド

Terraform は import コマンドを提供しており、既存のリソースを Terraform 管理下に置くことができます。

ただし、この方法では tfstate ファイルは更新されますが、対応する .tf ファイルは生成されないため、それらは手動で作成する必要があります。

例:

terraform import aws_instance.my_instance i-1234567890abcdef0

第三者ツール

  • terraformer: Google Cloud Platform が提供するこのツールは、AWS など複数のクラウドプロバイダに対応しており、既存のリソースから Terraform コードを自動生成できます。
  • terraform-aws-cdk: AWS Cloud Development Kit (CDK) と Terraform の間での変換を助けるためのツールも存在します。
  • aws2tf: これは、既存の AWS 環境をスキャンして Terraform コードを生成するツールです。

 

これらのツールは、完全に自動化された解決策を提供するものの、生成されたコードが必ずしも「最適」であるとは限らない点に注意が必要です。

出力されたコードはレビューと調整が必要な場合があります。

注意: どの方法を使用するにしても、実行前には既存のリソースと新しく生成されるリソースが競合しないよう十分に確認してください。

また、コードを適用(terraform apply)する前にプラン(terraform plan)を確認することも重要です。

 

 

記事タイトル検索