回答編集履歴

3

補足を追記

2022/10/01 10:23

投稿

jhashimoto
jhashimoto

スコア838

test CHANGED
@@ -1,3 +1,5 @@
1
+ ※コメント欄で質問があり、個別にresourceを定義する理由を追記しました。
2
+
1
3
  まとめることは可能ですが、自分なら個別にresourceを定義します。
2
4
 
3
5
  複数resourceの定義をまとめてしまうと、個別に変更ができなくなります。例えば、data_lake_s3バケットだけaws_s3_bucket_public_access_blockの属性を変更したくなったらどうするのでしょうか?

2

理由を追記

2022/10/01 09:48

投稿

jhashimoto
jhashimoto

スコア838

test CHANGED
@@ -1,4 +1,14 @@
1
+ まとめることは可能ですが、自分なら個別にresourceを定義します。
2
+
3
+ 複数resourceの定義をまとめてしまうと、個別に変更ができなくなります。例えば、data_lake_s3バケットだけaws_s3_bucket_public_access_blockの属性を変更したくなったらどうするのでしょうか?
4
+
5
+ もちろん、コードを改変してdata_lake_s3バケットのaws_s3_bucket_public_access_blockだけ個別に定義することは可能です。しかし、インフラを公開した後は安易にリソースを変更できないので、インフラのコード改変はアプリケーションと比べてコストが大きいです。ですので、コードの改変ができるだけ発生しないように実装した方が変更が容易になります。
6
+
7
+ 将来に渡ってaws_s3_bucket_public_access_block属性の変更要件が発生しないことを担保できるのであれば1定義にまとめてもいいと思いますが、そこまで読み切るのは難しいと思います。
8
+
9
+ また、このケースでは定義をまとめることにそれほどメリットがあるとは感じられず、設計・実装コストに見合わないと思いました。(ここは人それぞれかもしれません)
10
+
1
- 自分なら個別にresource定義しますが、`for_each`でまとめることはできます。(planまでしか確認してません)
11
+ したがって自分なら個別にresource定義しますが、`for_each`でまとめることはできます。(planまでしか確認してません)
2
12
 
3
13
  ```tf
4
14
  resource "aws_s3_bucket_public_access_block" "this" {

1

参考リンクを追加

2022/10/01 08:45

投稿

jhashimoto
jhashimoto

スコア838

test CHANGED
@@ -66,4 +66,6 @@
66
66
  }
67
67
  ```
68
68
 
69
+ # 参考
69
- 参考: [Terraformのfor_eachにmapのlistを渡してループしたい - Qiita](https://qiita.com/minamijoyo/items/3785cad0283e4eb5a188)
70
+ - [Terraformのfor_eachにmapのlistを渡してループしたい - Qiita](https://qiita.com/minamijoyo/items/3785cad0283e4eb5a188)
71
+ - [Terraformでのloop処理の書き方(for, for_each, count)](https://zenn.dev/wim/articles/terraform_loop)