- OpenTofu言語
- 関数
- can
can
関数
can
は与えられた式を評価し、式がエラーなしで結果を生成したかどうかを示すブール値を返します。
これは、引数の評価時に発生したエラーをキャッチできる特殊な関数です。can
を使用できるほとんどの状況では、より簡潔に失敗した式のフォールバック値を定義できるため、代わりにtry
を使用することをお勧めします。
can
の主な目的は、カスタム変数検証ルールを作成する際に、エラー状態をブール値の検証結果に変換することです。例:
variable "timestamp" {
type = string
validation {
# formatdate fails if the second argument is not a valid timestamp
condition = can(formatdate("", var.timestamp))
error_message = "The timestamp argument requires a valid RFC 3339 timestamp."
}
}
can
関数は、実行時まで不明なデータへのアクセスから生じる *動的* なエラーのみをキャッチして処理できます。不正なリソース参照など、入力に対して無効であることが証明できる式に関連するエラーはキャッチしません。
警告
can
関数は、変数検証ルールでの単純なテストのみに使用することを目的としています。技術的にはあらゆる種類の式を受け入れ、設定の他の場所で使用できますが、他のコンテキストでは使用しないことをお勧めします。設定の他の場所でのエラー処理には、try
を使用することをお勧めします。
例
> local.foo
{
"bar" = "baz"
}
> can(local.foo.bar)
true
> can(local.foo.boop)
false
can
関数は、不正な参照や宣言されていないトップレベルオブジェクトへの参照など、動的式評価の前に無効であることが証明できる構成に関連するエラーは *キャッチしません*。
> can(local.nonexist)
Error: Reference to undeclared local value
A local value with the name "nonexist" has not been declared.
関連関数
try
は、一連の式を評価しようと試み、最初に成功した式の結果を返します。