💡

Terraformのlistを指定した個数で分解して別のlistとして使用する方法

2022/11/10に公開

やりたいこと

タイトルだけでは分かりづらいので、例を使って説明します。

例えば、こんなリストが定義されていたとします。
["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
https://developer.hashicorp.com/terraform/language/expressions/for

index
https://developer.hashicorp.com/terraform/language/functions/index_function

Discussion