for式と内包表記のフォーマット

リスト内包表記、マップ変換、条件フィルタリング、ネストされたfor式を含むTerraform for式を適切な改行でフォーマットします。

Advanced Patterns

詳細な説明

for式のフォーマット

Terraformのfor式は既存のコレクションからリストとマップを作成します。シンプルな一行式から条件フィルタリング付きの複雑な複数行式まで様々です。

シンプルなfor式

locals {
  upper_names = [for name in var.names : upper(name)]

  name_map = {
    for name in var.names : name => upper(name)
  }

  filtered = [
    for name in var.names : upper(name)
    if length(name) > 3
  ]
}

複雑なfor式

locals {
  subnet_config = {
    for idx, cidr in var.subnet_cidrs : "subnet-${idx}" => {
      cidr_block        = cidr
      availability_zone = var.azs[idx % length(var.azs)]
      is_public         = idx < var.public_subnet_count
    }
  }
}

フォーマットルール

  • 単一行: 1行に収まるシンプルなfor式はインラインに保持: [for x in list : transform(x)]
  • フィルタ付き複数行: if条件が追加される場合、フィルタは独自の行に
  • ネストfor: 各ネストされたforは独自のインデントレベルを取得
  • マップ出力: マップfor式のkey => valueペアは=>演算子を揃える
  • 複雑な値: 出力値がオブジェクトの場合、独自のインデントブロックを取得

ユースケース

入力変数をリソースに必要なデータ構造に変換する。例えばCIDRブロックのリストをサブネット設定のマップに変換するなど。

試してみる — Terraform HCL Formatter

フルツールを開く