本文へスキップ

関数

組み込み関数

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()を介して追加の関数を提供できます。実装例については、実験的なLuaおよびGoプロバイダーを参照してください。