AWS プログラミング

【AWS Terraform 0.12】dynamic構文の使い方【resourceやdataをfor_eachで繰り返しループする】

Terraformのバージョン0.12から追加された、『dynamic』の使い方を解説します!

うまく使用するとかなりtfファイルがスッキリ書けますのでぜひ参考にしてみてください!

 

ちなみにTerraformについて学習したい方はUdemyのLearn DevOps: Infrastructure Automation With Terraform がめちゃくちゃおすすめです。

 

 

 

dynamicとは

 

dynamic構文とは、Terraform0.12から追加された機能の一つで同一名のブロックをループで処理することができます。

こう書いてもよく意味がわからないと思うので、具体例を記載します。

 

具体例

例えば以下のような時に使用します。

 

  • 『aws_iam_policy_document』内で「statement」ブロックをループ処理で記載したい。
  • 『aws_security_group』内で「ingress」ブロックをループ処理で記載したい。

 

などなど。

基本的に、resourceないしdata内のブロックを複数記載する時に繰り返し処理によって書きたい場合に使用します。

 

使い方

 

実際の使い方(tfファイル内の書き方)について説明します。

今回は例として、上記で記載した『aws_iam_policy_document』を使用します!

 

構文の形式

まず、構文の形式としては次のようになります。

 

次の実際の作成手順を参考にしていただくとより理解しやすいと思います!

 

1. リストを定義

dynamic構文ではループによって処理を行うので、ループ時に使用するリストを定義します。

(今回はstatementブロック内のeffect属性をリストで定義します)

 

 

2. dynamic構文を記載

上記のリストを用いてdynamic構文を記載します。

 

便宜上「actions」と「resources」は記載していませんが、実際にはお使いの環境に併せて記載してください!

 

 

statement.key

dynamicで指定したブロック名(今回はstatement)に「.key」を付けるとループのインデックスを取得することができます。(0始まり)

 

statement.value

dynamicで指定したブロック名(今回はstatement)に「.value」を付けるとリストの値を取得することができます。

 

 

dynamicを使用しないで書くとどうなるか

上記をdynamicを使用しないで書くと次のようになります。

 

 

だいぶ冗長な書き方になりますよね。

こんな感じで、ループで処理できるところはdynamicを使用するとかなりスッキリ書けます!

 

【入門】Terraformの基本コマンドまとめ【AWS CLI】

みなさんAWSは使っていますか?? 今回はAWSのInfrastructure as Code(IaC)であるTerraformについて、超基本のコマンドをまとめていきます。   インフラの ...

続きを見る

 

-AWS, プログラミング
-, ,

© 2020 クラインの備忘壺