💡
Terraformのlistを指定した個数で分解して別のlistとして使用する方法
やりたいこと
タイトルだけでは分かりづらいので、例を使って説明します。
例えば、こんなリストが定義されていたとします。
["first", "second", "third"]
先頭2個の要素のみをリソースで使いたい場合、インデックス等を利用してうまく切ってあげる必要があります。
["first", "second"]
※こんなリストを使いたい
このようなリストを作成する方法を紹介します。
ちなみに、AWSクォータの関係で必要になりました。
やり方
組み込み関数である、forとindexを使います。
事前にsample
という3つの要素をもつ配列を定義します。
main.tf
variable "list" {
type = list(string)
default = ["first", "second", "third"]
}
先頭2つの要素を使いたい場合は次のように書けます。
shell
$ terraform console
> [for s in var.list : s if index(var.list, s) < 2]
[
"first",
"second",
]
3つ目以降の要素を使いたい場合は次のように書けます。不等号とインデックス番号に注意です。
shell
$ terraform console
> [for s in var.list : s if index(var.list, s) >= 2]
[
"third",
]
最後の2要素を使いたい場合は次のように書けます。
shell
$ terraform console
> [for s in var.list : s if index(var.list, s) >= length(var.list)-2]
[
"second",
"third",
]
誰かのお役に立てれば幸いです。
参考:使用したTerraform組み込み関数のドキュメント
for
index
Discussion