CloudFlow のフロー定義言語 (FDL) は、ワークフロー定義内でデータ処理を行うためのビルトイン関数を提供します。これらの関数を使用すると、外部関数コードを記述することなく、文字列、配列、マップ、JSON データを操作できます。
入力または出力コンストラクターでビルトイン関数を使用するには、コンストラクターキーに .$ を追加します。これにより、CloudFlow は値を式として評価します。.$ サフィックスがない場合、値はプレーン文字列として扱われます。1つの式につき、最大 10 個のネストされた関数呼び出しがサポートされています。
例: FDL コンストラクターでのビルトイン関数の使用
{
"inputMappings": {
"greeting.$": "format('Hello, {}', $input.username)"
}
}この例では、greeting.$ は、値がリテラル文字列ではなく、format 関数を含む式であることを CloudFlow に伝えます。
関数リファレンス
次の表に、カテゴリ別にグループ化されたすべてのビルトイン関数を示します。
共通操作
| 関数 | 目的 |
|---|---|
format | {} プレースホルダーを使用した文字列のフォーマット |
length | 文字列、配列、またはマップの長さを取得 |
regexMatchString | 文字列を正規表現と照合 |
split | 文字列をデリミタで分割 |
配列操作
| 関数 | 目的 |
|---|---|
arrayContains | 配列に特定の要素が含まれているか確認 |
arrayUnique | 配列から重複要素を削除 |
toArray | 可変個の引数を配列に変換 |
マップ操作
| 関数 | 目的 |
|---|---|
mapKeys | JSON オブジェクトまたはマップからすべてのキーを配列として抽出 |
mapValues | JSON オブジェクトまたはマップからすべての値を配列として抽出 |
mapValuesPartition | マップから値を抽出し、ステップサイズでサブ配列に分割 |
データエンコーディングとデコーディング
| 関数 | 目的 |
|---|---|
toBase64 | 文字列を Base64 にエンコード |
fromBase64 | Base64 エンコードされた文字列をデコード |
ハッシュ計算と UUID 生成
| 関数 | 目的 |
|---|---|
hash | 指定されたアルゴリズムを使用してハッシュ値を生成 |
uuid | UUID を生成 |
JSON データ操作
| 関数 | 目的 |
|---|---|
jsonToString | JSON オブジェクトまたはマップを JSON 文字列に変換 |
stringToJson | JSON 文字列を JSON オブジェクトまたはマップに解析 |
jsonMerge | 2つの JSON オブジェクトまたはマップを1つにマージ |
共通操作
format
文字列内の {} プレースホルダーを、指定された引数で順番に置き換えてフォーマットします。
構文
format(template, arg1, arg2, ...)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| template | string | Yes | {} プレースホルダーを含むテンプレート文字列 |
| arg1, arg2, ... | any | Yes | プレースホルダーに順番に代入する値 |
戻り値の型: string
例
format("hello {}", "world")
// Returns: "hello world"FDL での使用例:
{
"message.$": "format('タスク {} は {} に完了しました', $input.taskName, $input.timestamp)"
}length
文字列、配列、またはマップの長さを返します。
文字列の場合、文字数を返します。
配列の場合、要素数を返します。
マップの場合、キーと値のペアの数を返します。
構文
length(値)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| value | string, []any, or map[string]any | Yes | 測定する文字列、配列、またはマップ |
戻り値の型: int
例
length([1, 2, 3])
// Returns: 3
length({"name": "Tom", "age": 10})
// Returns: 2
length("name")
// Returns: 4FDL 使用量:
{
"itemCount.$": "length($input.orderItems)"
}regexMatchString
文字列が正規表現パターンと一致するかどうかをテストします。パターンが一致する場合は true を返し、それ以外の場合は false を返します。
構文
regexMatchString(pattern, value)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| pattern | string | Yes | 正規表現パターン |
| value | string | Yes | パターンと照合する文字列 |
戻り値の型: bool
例
regexMatchString("p([a-z]+)ch", "peach")
// Returns: true
regexMatchString("p([a-z]+)ch", "p123ch")
// Returns: falseFDL の使用方法:
{
"isValid.$": "regexMatchString('^[a-zA-Z0-9]+$', $input.userId)"
}split
文字列をデリミタに基づいて部分文字列の配列に分割します。
構文
split(value, delimiter)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| value | string | Yes | 分割する文字列 |
| delimiter | string | Yes | 分割に使用するデリミタ |
戻り値の型: []string
例
split("item1,item2,item3", ",")
// 戻り値:["item1", "item2", "item3"]FDL 使用量:
{
"tags.$": "split($input.tagString, ',')"
}配列操作
arrayContains
配列に特定の要素が含まれているか確認します。要素が見つかった場合は true を返し、それ以外の場合は false を返します。
構文
arrayContains(array, element)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| array | []any | Yes | 検索する配列 |
| element | any | Yes | 検索する要素 |
戻り値の型: bool
例
arrayContains(["Tom", 10], 10)
// 戻り値: true
arrayContains(["Tom", 10], "Jack")
// 戻り値: falseFDL 使用量:
{
"isAllowed.$": "arrayContains($input.allowedRegions, $input.targetRegion)"
}arrayUnique
配列から重複要素を削除し、重複排除された結果を返します。
構文
arrayUnique(配列)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| array | []any | Yes | 重複排除する配列 |
戻り値の型: []any
例
arrayUnique([1, 2, 3, 1])
// Returns: [1, 2, 3]toArray
可変個の引数を単一の配列に変換します。
構文
toArray(arg1, arg2, ...)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| arg1, arg2, ... | any | Yes | 配列に結合する1つ以上の値 |
戻り値の型: []any
例
toArray(1,'strig',$Input.var)
// Returns: []any{1, 'string', $valueOfVar}マップ操作
mapKeys
JSON オブジェクトまたはマップからすべてのキーを抽出し、文字列配列として返します。
構文
mapKeys(map)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| map | map[string]any | Yes | キーを抽出する JSON オブジェクトまたはマップ |
戻り値の型: []string
例
mapKeys({"name": "Tom", "age": 10})
// Returns: ["name", "age"]mapValues
JSON オブジェクトまたはマップからすべての値を抽出し、配列として返します。
構文
mapValues(map)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| map | map[string]any | Yes | 値を抽出する JSON オブジェクトまたはマップ |
戻り値の型: []any
例
mapValues({"name": "Tom", "age": 10})
// Returns: ["Tom", 10]mapValuesPartition
JSON オブジェクトまたはマップからすべての値を抽出し、指定されたサイズでサブ配列に分割します。
構文
mapValuesPartition(マップ, ステップサイズ)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| map | map[string]any | Yes | 値を抽出する JSON オブジェクトまたはマップ |
| stepSize | int | Yes | サブ配列あたりの要素数 |
戻り値の型: [][]any
例
mapValuesPartition({"name": "Tom", "age": 10}, 1)
// 戻り値: ["Tom"],[10]データエンコーディングとデコーディング
toBase64
文字列を Base64 にエンコードします。
構文
toBase64(value)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| value | string | Yes | エンコードする文字列 |
戻り値の型: string
例
toBase64("FnF")
// Returns: "Rm5G"fromBase64
Base64 エンコードされた文字列を元の値にデコードします。
構文
fromBase64(value)
パラメーターパラメーター型必須説明value文字列はいデコードする Base64 でエンコードされた文字列です。
戻り値の型: 文字列
例fromBase64("Rm5G")
// 戻り値: "FnF"ハッシュ計算と UUID 生成
hash
指定されたアルゴリズムを使用して、指定された入力のハッシュ値を生成します。
構文
hash(input, algorithm)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| input | string | Yes | ハッシュ化する文字列 |
| algorithm | string | Yes | ハッシュアルゴリズム。サポートされている値: MD5, SHA-1, SHA-256, SHA-512 |
戻り値の型: string
例
hash("abc", "MD5")
// Returns: "900150983cd24fb0d6963f7d28e17f72"FDL の使用方法:
{
"checksum.$": "hash($input.payload, 'SHA-256')"
}uuid
普遍的に一意な識別子 (UUID) を生成します。
構文 uuid()
パラメーター
なし。
戻り値の型: 文字列
例
uuid()
// 戻り値: "159fd8c1-2ec3-4d7b-b9fd-60b9d8841000"FDL uid="dfc2079465bd1_22"e-type="xCode" data-tag="codeblock" id="dfc2079465bd1" outputclass="language-json">{ "requestId.$": "uuid()" }
JSON データ操作
jsonToString
JSON オブジェクトまたはマップをその文字列表現に変換します。
Syid="dfc2079465bd1_23"code-type="xCode" data-tag="codeblock" id="dfc2079465bd1" outputclass="language-bash">jsonToString(value)
パラメーター
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| value | map[string]any | Yes | シリアル化する JSON オブジェクトまたはマップ |
戻り値の型: string
例
toJSON({"name": "Tom", "age": 10})
// 戻り値: '{"name": "Tom", "age": 10}'stringToJson
JSON 文字列を JSON オブジェクトまたはマップに解析します。
構文
stringToJson(value)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| value | string | Yes | 有効な JSON 文字列 |
戻り値の型: map[string]any
例
stringToJson('{"name": "Tom", "age": 10}')
// Returns: {"name": "Tom", "age": 10}FDL での使用例:
{
"parsedBody.$": "stringToJson($input.responseBody)"
}jsonMerge
2 つの JSON オブジェクトまたはマップを 1 つにマージします。
jsonMerge(object1, object2)パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| object1 | map[string]any | Yes | 最初の JSON オブジェクトまたはマップ |
| object2 | map[string]any | Yes | 2番目の JSON オブジェクトまたはマップ |
戻り値の型: map[string]any
例
jsonMerge({"name": "田中一郎", "age": 10}, {"name": "田中一郎", "address": "東京都港区"})
// 返り値: {"name": "田中一郎", "age": 10, "address": "東京都港区"}{
"mergedConfig.$": "jsonMerge($input.defaultConfig, $input.userOverrides)"
}