何度も調べているのでそろそろメモしておく
やりたいこと
var.env
に入っている dev
stg
prod
などの環境文字列を基に、共通moduleのresourceやstatementを分岐させたい( dev
だけ実装したい)などのケース
そもそも分岐書く必要あるmoduleの構造がそもそもダメじゃん、みたいな話はここではナシ。そういうコードに出会った場合の対処法です。
例: 三項演算子
1 | ## var.env = "dev"の場合のみ、`Hoge = "hoge"` となる |
例: countを使ってresourceを動的に生成
1 | ## var.env = "dev"の場合のみ、 `resource "aws_ecs_service" "moge"` が生成される |
例: dynamicとfor_eachを使ってIAMのstatementを動的に生成
dynamic
は、 count
が使えないため、 for_each
で実装します
1 | # iam_policy_documentの場合 |
dynamicは、CodePipelineの action
などでも使用可能です