このトピックでは、Aviator 関数の作成方法について説明します。
前提条件
-
ワークフローが作成済みであること。 詳細については、「ワークフローの作成と管理」をご参照ください。
-
DataService Studio 専用リソースグループが購入済みであること。 詳細については、「DataService Studio 専用リソースグループの使用」をご参照ください。
説明Aviator 関数は、DataService Studio 専用リソースグループで実行する必要があります。
背景
DataService Studio では、関数の作成、テスト、デプロイが可能です。 デプロイした関数は、API に関連付けて、リクエストパラメーターやレスポンスデータを処理するためのフィルターとして使用できます。 これにより、複雑なクエリ要件に対応し、さまざまなビジネスシナリオに適応できます。 一般的なユースケースのコード例については、「ベストプラクティス:Aviator 関数をフィルターとして使用する」をご参照ください。
制限事項
-
Aviator 関数は、DataService Studio 専用リソースグループで実行する必要があります。
-
API フィルターとして関数を使用する場合、事前フィルターと事後フィルターの関数タイプは同じにする必要があります。 つまり、両方とも Aviator 関数タイプまたは Python 関数タイプのいずれかを選択する必要があります。
使用上の注意
セキュリティとパフォーマンス上の理由から、Aviator 関数は DataService Studio 専用リソースグループで実行する必要があります。 したがって、以下の点にご注意ください。
-
関数を編集またはテストするときは、関数を DataService Studio 専用リソースグループに関連付ける必要があります。 詳細については、「関数の管理」をご参照ください。
-
API 開発中にフィルターを有効にして対象の関数に関連付ける場合、API を DataService Studio 専用リソースグループに関連付ける必要があります。 詳細については、「データソースからAPIを生成する (API Gateway)」をご参照ください。
関数構造
Aviator 関数は、次の組み込みテンプレートを使用します。 構文の詳細については、「Aviator 関数の構文」をご参照ください。
## --- AviatorScript ---
## $0:入力パラメーターのデフォルト名。
## 式はセミコロン「;」で区切る必要があります。
## 例 1:
## $0.a:入力パラメーター「$0」から属性「a」を取得します。
## $0.b[index]:入力パラメーター「$0」の配列「b」から、指定されたインデックスの要素を取得します。 インデックスは式または変数にすることはできません。
## 例 2:
## 入力:{"keyA":[1,2],"keyB":"value"}
## 関数:$0.keyA[0]=3; $0.keyB="new_value"; return $0;
## 出力:{"keyA":[3,2],"keyB":"new_value"}
return $0;
このテンプレートに基づいて関数を修正できます。
-
Aviator 関数のデフォルトの入力パラメーター名は
$0であり、変更できません。$0を使用して、関数の入力全体を取得できます。 -
DataService Studio では、関数はリクエストパラメーターとレスポンスデータを処理するための API フィルターとして機能します。 したがって、
$0で表される関数の入力は JSON オブジェクトです。 リクエストパラメーターはフラットな JSON 構造 (深さ 1) として渡され、レスポンスデータはネストされた JSON 構造 (深さ N) として渡されます。 -
関数が API の事前フィルターとして使用される場合、システムは API リクエストパラメーターまたは前の関数の出力を
キーと値のマップから JSON オブジェクトに変換し、それを$0パラメーターに渡します。 JSON オブジェクトの各キーの value は文字列である必要があります。 -
関数が API の事前フィルターとして使用される場合、その出力は
キーと値のマップである必要があります。 この出力は、SQL ステートメント実行の入力パラメーターとして機能します。 したがって、深さが 1 のフラットなキーと値のマップのみがサポートされています。
DataService Studio への移動
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[DataService Studio] をクリックします。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataService Studioに移動] をクリックします。
関数の作成
-
サービス開発 ページで、
アイコンにポインターを合わせ、 をクリックします。別の方法として、対象のワークフローを見つけ、関数 を右クリックし、 を選択します。
-
Create Aviator Function ダイアログボックスで、パラメーターを設定します。
パラメーター
説明
[Function Name]
関数の一意の名前。最大 256 文字です。
[Function Template]
AviatorScript Standard v1 のみがサポートされています。
[Function Description]
関数の簡単な説明。最大 512 文字です。
[Location]
関数の格納先ディレクトリ。
説明特定のワークフロー、フォルダー、または関数カテゴリを選択します。 ワークフローが存在しない場合は、まずワークフローを作成します。
-
Determine をクリックします。
-
Edit Code エリアで、関数用のコードを入力します。
-
リソースグループを設定します。
-
関数編集ページの右側のペインで、Resource Group for DataService Studio をクリックします。リソースグループタイプ セクションで、API 呼び出しのリソースグループタイプを設定します。
DataService Studio 専用リソースグループのみを選択できます。
説明リストからターゲットリソースグループ名を選択できない場合は、DataWorks コンソールに移動し、「ワークスペース所有者の変更」を使用して、お使いのワークスペースにリソースグループをバインドします。 また、「DataService Studio 専用リソースグループの購入」をクリックして新しいものを購入することもできます。 詳細については、「DataService Studio 専用リソースグループの使用」をご参照ください。
-
環境構成 セクションでは、メモリ と タイムアウト を設定できます。
DataService Studio 専用リソースグループの場合、関数のタイムアウトは 100 ms 以下にすることを推奨します。
-
-
ツールバーの
アイコンをクリックして、関数を保存します。
関数の作成後、テストとデプロイを行い、API の事前フィルターまたは事後フィルターとして使用できます。
次のステップ
-
関数を作成したら、テストしてデプロイできます。 詳細については、「関数のテスト、デプロイ、使用」および「関数のデプロイ」をご参照ください。
-
関数をデプロイしたら、API に関連付けて、リクエストパラメーターとレスポンスデータを処理するための事前フィルターまたは事後フィルターとして使用できます。 詳細については、「関数をAPIフィルターとして使用する」をご参照ください。