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ブロックのリストをサブネット設定のマップに変換するなど。