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ポリシー、ロードバランサーリスナーなど、入力変数に基づいて変化する繰り返しネストブロックを持つリソースの作成。