Spec-Zone.ru › OpenTofu 1.10

Вызовы функций

В языке OpenTofu есть ряд встроенных функций, которые можно использовать в выражениях для преобразования и объединения значений. Они похожи на операторы, но все имеют общий синтаксис:

Блок кода
<FUNCTION NAME>(<ARGUMENT 1>, <ARGUMENT 2>)

Имя функции указывает, какую функцию вызвать. Каждая определённая функция ожидает определённое количество аргументов заданных типов и возвращает результат определённого типа.

Некоторые функции принимают произвольное количество аргументов. Например, функция min принимает любое количество числовых аргументов и возвращает наименьшее из них:

Блок кода
min(55, 3453, 2)

В результате вычисления выражения вызова функции получается возвращаемое функцией значение.

Доступные функции​

Полный список доступных функций см. в справочнике функций.

Раскрытие аргументов функции​

Если аргументы, передаваемые функции, содержатся в списке или кортеже, это значение можно раскрыть в отдельные аргументы. Передайте значение списка в качестве аргумента и добавьте после него символ ...:

Блок кода
min([55, 2453, 2]...)

Символ раскрытия состоит из трёх точек (...), а не из символа многоточия Unicode (…). Раскрытие — это специальный синтаксис, доступный только при вызове функций.

Использование конфиденциальных данных в качестве аргументов функций​

При использовании конфиденциальных данных, например входной переменной или выходного значения, определённого как конфиденциальное, в качестве аргументов функции конфиденциальность информации в аргументах будет отслеживаться во время вызова функции.

Например, передача объекта, содержащего конфиденциальную входную переменную, функции keys() вернёт список со всеми ожидаемыми ключами, а функция values() вернёт список, в котором первый элемент будет конфиденциальным, поскольку значение ключа "a" является конфиденциальным.

Блок кода
> local.baz
{
  "a" = (sensitive value)
  "b" = "dog"
}
> keys(local.baz)
[
  "a",
  "b",
]
> values(local.baz)
[
  (sensitive value),
  "dog",
]

Когда OpenTofu вызывает функции​

Большинство встроенных функций OpenTofu, говоря языком программирования, являются чистыми функциями. Это означает, что их результат зависит только от аргументов, поэтому на практике не имеет значения, когда именно OpenTofu их вызывает.

Однако небольшая группа функций взаимодействует с внешним состоянием, поэтому для них может быть полезно знать, когда OpenTofu вызывает их относительно других событий, происходящих во время запуска OpenTofu.

К этой небольшой группе специальных функций относятся file, templatefile, timestamp и uuid. Если вы не используете эти функции, этот раздел можно не читать, хотя приведённая здесь информация может быть полезна для общего понимания.

Функции file и templatefile предназначены для чтения файлов, включённых в конфигурацию как статическая часть. Поэтому OpenTofu выполняет эти функции при первоначальной проверке конфигурации, до выполнения каких-либо других действий с ней. Это означает, что ни одну из этих функций нельзя использовать для чтения файлов, которые конфигурация может динамически создавать на диске на этапах планирования или применения.

Функция timestamp возвращает представление текущего системного времени на момент её вызова OpenTofu, а функция uuid возвращает случайный результат, который меняется при каждом вызове. Без особого поведения обе эти функции приводили бы к тому, что итоговая конфигурация на этапе применения не соответствовала бы действиям, показанным в плане, что нарушило бы модель выполнения OpenTofu.

По этой причине на этапе планирования OpenTofu возвращает для обеих функций результат в виде неизвестного значения, а фактический результат определяется только на этапе применения. В частности, для timestamp это означает, что зафиксированное время будет соответствовать моменту начала применения изменений OpenTofu, а не моменту, когда OpenTofu составил план изменений.

Подробнее о поведении этих функций см. на соответствующих страницах документации.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/language/expressions/function-calls/

Spec-Zone.ru

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