跳至主要内容

函数

内置函数

OpenTofu 语言包含许多内置函数,您可以在表达式中调用这些函数来转换和组合值。函数调用的通用语法是函数名称后跟括号中以逗号分隔的参数

代码块
max(5, 12, 9)

有关语法的更多详细信息,请参阅表达式部分中的 函数调用

您可以通过运行 tofu console 命令,在 OpenTofu 表达式控制台中试验 OpenTofu 内置函数的行为。

代码块
> max(5, 12, 9)
12

每个函数文档中的示例都使用控制台输出来说明使用不同参数调用函数的结果。

提供程序定义的函数

从 OpenTofu 1.7.0 开始,提供程序可以定义自己的函数,以便在执行期间使用。

OpenTofu 遍历 required_providers 块,并查询指定的提供程序以获取他们希望注册的任何函数。函数将添加到当前模块的上下文中,位于 provider::<provider_name>::<function_name> 下。提供程序别名也在 provider::<provider_name>::<provider_alias>::<function_name> 下受支持。函数的作用域限定为需要提供程序的模块,并且不会被子模块继承。

示例:

代码块
terraform {
required_providers {
myhelper = {
# yantrio/helpers registers a function named "echo"
source = "yantrio/helpers"
}
}
}

locals {
myval = provider::myhelper::echo("Hello Functions!")
}

提供程序作者注意事项:

  • 在协议版本 5.5 和 6.5 中添加了对函数的支持。
  • OpenTofu 的提供程序协议与 Terraform 的提供程序协议兼容。
  • GetProviderSchema() 用于最初查询给定提供程序中可用的函数。
  • 提供函数的提供程序可以进行配置,并且可以通过 GetFunctions() 提供其他函数。请参阅实验性的 LuaGo 提供程序以获取实现示例。