Terraformのoutputで空になるかもしれないlistでindexで値を取得したいときのハック
true or falseで作られないかもしれないresourceの値を取得したい
例えばこのようにneed_instance
みたいなBooleanで作るか作らないかを決めるみたいなresourceがあったときに
variable "need_instance" { default = false } resource "aws_instance" "hoge" { count = "${var.need_instance ? 1 : 0}" ... }
outputで一つ目のinstance_idが欲しいというときに
output "instance_id" { value = "${aws_instance.hoge.id}" }
need_instance = false
だとここでエラーになってしまう。
workaround力技
こうする
"${element(concat(aws_instance.hoge.*.id, list("")), 0)}"
- 後ろに空文字のlistを必ずくっつけてあげる
- HCLは複雑なことをするための言語ではないので、こういうのはしょうがない
- countでresourceを作るということは、0 or 1と決めたのはこっちなので関係ない。それすなわちlistのresourceとなるということ