Terraformデータソースをjsonに変換する

既存インフラを照会するTerraformデータソースブロックをHCLからJSONに変換します。AMIルックアップ、アベイラビリティゾーン、IAMポリシーを解説します。

Advanced

詳細な説明

Terraformデータソース

データソースによりTerraformは既存のインフラや外部サービスから情報を読み取ることができます。dataブロックタイプを使用し、読み取り専用です。

HCLデータソースの例

data "aws_ami" "ubuntu" {
  most_recent = true
  owners      = ["099720109477"]

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

data "aws_availability_zones" "available" {
  state = "available"
}

JSON構造

データソースはリソースと同じネストパターンに従います:data > データソースタイプ > データソース名 > 属性。

複数のfilterブロック

複数のfilterブロックが存在する場合、JSON配列にまとめられます。各filterブロックは配列のオブジェクトになります。

IAMポリシードキュメント

aws_iam_policy_documentデータソースは最も複雑なものの1つで、ネストされたstatementprincipalsconditionブロックを持ちます。JSON表現はこのネストを忠実に反映します。

データソース参照

データソースの値はHCLでdata.aws_ami.ubuntu.idとして参照されます。これらの式はJSON出力では文字列になります。

ユースケース

EC2インスタンス用の最新AMIの検索、動的インフラのための利用可能なAZの照会、IAMポリシーのプログラマティック生成、既存インフラを参照するTerraform設定の構築。

試してみる — HCL ↔ JSON Converter

フルツールを開く