Terraformの動的ブロックのフォーマット

リストやマップから繰り返しネストブロックを生成するための動的ブロックをフォーマット。セキュリティグループルール、IAMポリシーなどの一般的なパターンをカバーします。

Advanced Patterns

詳細な説明

動的ブロックのフォーマット

動的ブロックは繰り返しのネストブロックをプログラム的なアプローチに置き換えます。生成される構造を理解するためにフォーマットが特に重要です。

セキュリティグループの例

resource "aws_security_group" "web" {
  name        = "web-sg"
  description = "Security group for web servers"
  vpc_id      = aws_vpc.main.id

  dynamic "ingress" {
    for_each = var.ingress_rules
    content {
      from_port   = ingress.value.from_port
      to_port     = ingress.value.to_port
      protocol    = ingress.value.protocol
      cidr_blocks = ingress.value.cidr_blocks
      description = ingress.value.description
    }
  }

  dynamic "egress" {
    for_each = var.egress_rules
    content {
      from_port   = egress.value.from_port
      to_port     = egress.value.to_port
      protocol    = egress.value.protocol
      cidr_blocks = egress.value.cidr_blocks
    }
  }

  tags = {
    Name = "web-sg"
  }
}

フォーマット規則

  • 動的ブロック構造: dynamic "name" { for_each = ... content { ... } }は3レベルのインデント
  • contentブロックの揃え: content内の属性は最も深いネストレベルで揃えられる
  • イテレーター参照: ingress.value.from_portはデフォルトで動的ブロック名をイテレーターとして使用
  • 区切り: 動的ブロックは静的属性から空行で区切られる

ユースケース

セキュリティグループ、IAMポリシー、ロードバランサーリスナーなど、入力変数に基づいて変化する繰り返しネストブロックを持つリソースの作成。

試してみる — Terraform HCL Formatter

フルツールを開く