- OpenTofu言語
- 関数
- type
type
関数
type
は、指定された値の型を返します。
OpenTofuの設定によっては、型の一貫性に関する分かりにくいエラーが発生することがあります。この関数は、OpenTofuが指定された値の型をどのように評価しているかを表示するため、このエラーメッセージを理解するのに役立ちます。
これは、tofu console
コマンドでのみ使用可能な特別な関数です。これは、指定された値の型を調べるためだけに使用でき、より複雑な式では使用しないでください。
例
ここでは、var.list
の値またはdefault_list
という名前のローカル変数のいずれかを印刷する条件付きoutput
があります。
variable "list" {
default = []
}
locals {
default_list = [
{
foo = "bar"
map = { bleep = "bloop" }
},
{
beep = "boop"
},
]
}
output "list" {
value = var.list != [] ? var.list : local.default_list
}
この設定を適用すると、次のエラーが発生します。
Error: Inconsistent conditional result types
on main.tf line 18, in output "list":
18: value = var.list != [] ? var.list : local.default_list
|----------------
| local.default_list is tuple with 2 elements
| var.list is empty tuple
The true and false result expressions must have consistent types. The given
expressions are tuple and tuple, respectively.
このエラーメッセージにはいくつかの型情報が含まれていますが、OpenTofuが各入力に対して決定した正確な型を検査すると役立つ場合があります。type
関数を用いてvar.list
とlocal.default_list
の両方を検査することで、エラーメッセージに対するコンテキストがより詳細になります。
> type(var.list)
tuple
> type(local.default_list)
tuple([
object({
foo: string,
map: object({
bleep: string,
}),
}),
object({
beep: string,
}),
])