業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【Hakkyの社内Wiki】Strapi
クラウドとオンプレの違いAIシステム導入時におすすめのクラウドシステムスクレイピングのためのプロキシサーバのAPI
AI

執筆者:Handbook編集部

for_eachとdynamicブロックの使い方

この記事では Terraform のfor_eachdynamicブロックの使い方について紹介します。

for_each とは

Terraform では繰り返し処理のために、countforfor_eachの三つの構文がサポートされています。 基本的にはcountを使わずにfor_eachを使うことが良いとされており、本記事ではfor_eachを利用したブロックの繰り返し処理の実装方法を解説します。

dynamic ブロックとは

dynamicブロックは動的に繰り返し処理を用いて設定を記述したいときに利用する機能です。次の例で実際の利用方法を見ていきます。

for_each と dynamic ブロックの使い方

Terraform リソースには繰り返し可能な設定があります。例えば AWS のtagなどは複数指定可能です。以下に 1 つの例を示します。

resource "aws_autoscaling_group" "default" {
  # ...

  tag {
    key                 = "Name"
    value               = "my-asg"
    propagate_at_launch = true
  }

  tag {
    key                 = "Component"
    value               = "user-service"
    propagate_at_launch = true
  }

  tag {
    key                 = "Environment"
    value               = "dev"
    propagate_at_launch = true
  }
}

上の例では 1 つ 1 つの設定をハードコーディングしていますが、これらの設定を動的に行いたい場合は繰り返し処理を用いて定義する必要があります。この時、dynamicブロックとfor_eachを用いることでそのような実装を行うことができます。いかに例を示します。

locals {
  my_tags = {
    Name        = "my-asg"
    Component   = "user-service"
    Environment = "dev"
  }
}

resource "aws_autoscaling_group" "example" {

  min_size = 0
  max_size = 0

  dynamic "tag" {
    for_each = local.my_tags

    content {
      key                 = tag.key
      value               = tag.value
      propagate_at_launch = true
    }
  }
}

dynamicブロックの中にfor_eachを書くことで繰り返し処理で複数の設定を作成できます。for_eachの各要素にアクセスするにはtag.keyなどとしなければなりません。これは、例えばdynamic "backend"など dynamic で指定する設定が異なる場合は、backend.keyというようにします。

以上がdynamicfor_eachの説明になります。

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年06月15日に最終更新
読み込み中...