Spec-Zone.ru › OpenTofu 1.9

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, которая пытается вычислить последовательность выражений и возвращает результат первого успешно вычисленного выражения.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/functions/can/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API