Spec-Zone.ru › OpenTofu 1.9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, передача объекта, содержащего конфиденциальную входную переменную, функции 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.9/language/expressions/function-calls/

Spec-Zone.ru

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