DataWorks は、カスタムコードを使用してさまざまなビジネス要件を実装できる Function Compute ノードを提供します。 Function Compute ノードは定期的なスケジューリングをサポートしています。 これにより、スケジュールされたタスクの実行が容易になります。 さらに、Function Compute ノードは他のタイプのノードと連携して動作し、完全なデータ処理プロセスを構築するのに役立ちます。 このトピックでは、Function Compute ノードを作成および使用する方法について説明します。
前提条件
Function Compute がアクティブ化されていること。
DataWorks で Function Compute ノードを使用するには、Function Compute をアクティブ化する必要があります。 データ開発をスムーズに行うために、Function Compute をアクティブ化した後、Function Compute の概要と提供される機能について学習することをお勧めします。 詳細については、「Function Compute のアクティブ化」および「Function Compute とは」をご参照ください。
関数の呼び出しに必要なサービスが作成されていること。
サービスは、Function Compute におけるリソース管理の基本単位です。 サービスレベルで、権限付与、ログ構成、関数作成などの操作を実行できます。 関数を開発する前に、サービスを作成する必要があります。 詳細については、「サービスの作成」をご参照ください。
関数が作成されていること。
関数は、リソースのスケジューリングと実行の基本単位であり、コードスニペットの処理ロジックです。 Function Compute で関数を作成するには、Function Compute が提供する関数 API を使用してコードを記述し、そのコードを関数として Function Compute にデプロイする必要があります。 関数の作成方法の詳細については、「関数の作成」をご参照ください。
背景情報
Function Compute は、イベント駆動型のフルマネージドコンピューティングサービスです。 Function Compute を使用するには、コードまたはイメージをアップロードするだけで済みます。 これにより、サーバーなどのインフラストラクチャを購入および管理することなく、コーディングに集中できます。 Function Compute では、サービスと関数を管理できます。 Function Compute は、次のタイプの関数をサポートしています。
イベント関数: このタイプの関数は、イベントに基づいて関数が呼び出されるイベント駆動型モデルに適用されます。
HTTP 関数: このタイプの関数は、Web アプリケーションを効率的に構築するのに適しています。
Function Compute ノードで実行するサービスと関数を構成し、Function Compute ノードを本番環境にデプロイして、サービスと関数を定期的に実行できます。
制限事項
機能の制限
DataWorks では、イベント関数のみを呼び出すことができます。 DataWorks でイベント処理関数を定期的にスケジュールする場合、Function Compute でイベントリクエストを処理するために HTTP 関数ではなくイベント関数を作成する必要があります。 その他の関数タイプの詳細については、「関数タイプの選択」をご参照ください。
リージョンの制限
Function Compute ノードが提供する機能は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、中国 (成都)、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、英国 (ロンドン)、米国 (シリコンバレー)、米国 (バージニア) にあるワークスペースでのみ使用できます。
注意事項
Function Compute ノードを使用する場合、作成したサービスに基づいて実行されるイベント関数を呼び出す必要があります。 サービスを選択するときに、作成済みサービスのリストを取得できない場合があります。 この問題は、次のいずれかの理由で発生する可能性があります。
現在のアカウントに支払い遅延がある。 この場合は、アカウントにチャージし、ノード構成ページを更新して再試行してください。
アカウントに必要な権限がないため、サービスリストを取得できない。 この場合は、Alibaba Cloud アカウントに連絡して [fc:ListServices] 権限を付与するか、[AliyunFCFullAccess] ポリシーをアカウントにアタッチしてください。 承認が完了したら、ノード構成ページを更新して再試行してください。 承認の詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
DataWorks で関数を呼び出して Function Compute ノードを実行する場合、ノードの実行時間が 1 時間を超える場合非同期呼び出しは、ノードの「呼び出し方法」パラメーターを に設定します。 非同期呼び出しの詳細については、「概要」をご参照ください。
RAM ユーザーとして Function Compute ノードを開発する場合、次のシステムポリシーまたはカスタムポリシーを RAM ユーザーにアタッチする必要があります。
ポリシータイプ
説明
システムポリシー
AliyunFCFullAccess、AliyunFCReadOnlyAccess、AliyunFCInvocationAccessポリシーを RAM ユーザーにアタッチします。 システムポリシーの詳細については、「システムポリシー」をご参照ください。カスタムポリシー
Function Compute 3.0 を使用する場合、カスタムポリシーを使用して、RAM ユーザーに次のすべての権限を付与します。
fc:GetAsyncTaskfc:StopAsyncTaskfc:GetServicefc:ListServicesfc:GetFunctionfc:InvokeFunctionfc:ListFunctionsfc:GetFunctionAsyncInvokeConfigfc:ListServiceVersionsfc:ListAliasesfc:GetAliasfc:ListFunctionAsyncInvokeConfigsfc:GetStatefulAsyncInvocationfc:StopStatefulAsyncInvocation
Function Compute 2.0 を使用する場合、カスタムポリシーを使用して
fc:GetAsyncTasおよびfc:StopAsyncTaskカスタムポリシー 権限を RAM ユーザーに付与する必要はありません。説明Function Compute のその他のポリシーとサンプルポリシーの詳細については、次のトピックまたはセクションをご参照ください。
1. Function Compute ノード作成のエントリポイントに移動する
DataWorks コンソール にログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
Function Compute ノード作成のエントリポイントに移動します。
DataStudio ページで、次の図に示すいずれかの方法を使用して、Function Compute ノード作成のエントリポイントに移動できます。

2. Function Compute ノードを作成および構成する
Function Compute ノードを作成します。
Function Compute ノード作成のエントリポイントに移動したら、プロンプトに従ってノードパスやノード名などの基本情報を構成して、Function Compute ノードを作成します。
Function Compute ノードのパラメーターを構成します。
Function Compute ノードの構成タブで、ノードの実行に呼び出す関数を選択し、ビジネス要件に基づいて呼び出し方法と変数を指定します。

パラメーター
説明
[関数を選択]
ノードの実行に呼び出す関数を選択します。 使用可能な関数がない場合は、関数を作成します。 詳細については、「関数の作成」をご参照ください。
説明DataWorks では、イベント関数のみを呼び出すことができます。 DataWorks でイベント処理関数を定期的にスケジュールする場合、Function Compute でイベントリクエストを処理するために HTTP 関数ではなくイベント関数を作成する必要があります。 その他の関数タイプの詳細については、「関数タイプの選択」をご参照ください。
この例では、
para_service_01_by_time_triggers関数が選択されています。 このような関数を作成する場合は、[スケジュール時間で関数をトリガーする] サンプルコードを使用します。 コードロジック:import json import logging # ロガーを初期化 logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # JSON を解析 evt = json.loads(event) triggerName = evt["triggerName"] triggerTime = evt["triggerTime"] payload = evt["payload"] logger.info('triggerName: %s', triggerName) logger.info("triggerTime: %s", triggerTime) logger.info("payload: %s", payload) return 'Timer Payload: ' + payload他の関数のサンプルコードの詳細については、「サンプルコード」をご参照ください。
[バージョンまたはエイリアスを選択]
後続の関数呼び出しに使用するサービスのバージョンまたはエイリアスを選択します。 デフォルトバージョンは [LATEST] です。
サービスバージョン
Function Compute は、サービスレベルのバージョン管理機能を提供します。これにより、サービスの 1 つ以上のバージョンをリリースできます。 バージョンは、サービス設定、サービスに属する関数のコードと設定などの情報を含むサービススナップショットに似ています。 バージョンにはトリガー情報は含まれていません。 バージョンをリリースすると、システムはサービスのスナップショットを生成し、後で使用するスナップショットに関連付けられたバージョン番号を割り当てます。 バージョンのリリース方法の詳細については、「バージョンの管理」をご参照ください。
バージョンエイリアス
Function Compute では、サービスバージョンのエイリアスを作成できます。 エイリアスは、サービスの特定のバージョンを指します。 エイリアスを使用して、バージョンのリリース、ロールバック、またはカナリアリリースを簡単に行うことができます。 エイリアスは、サービスまたはバージョンに依存します。 エイリアスを使用してサービスまたは関数にアクセスすると、Function Compute はエイリアスをエイリアスが指すバージョンに解析します。 これにより、呼び出し側はエイリアスが指す特定のバージョンを知る必要がなくなります。 エイリアスの作成方法については、「エイリアスの管理」をご参照ください。
[呼び出し方法]
関数を呼び出す方法。 有効な値:
同期呼び出し: 関数を同期的に呼び出すと、イベントが関数を直接トリガーし、Function Compute は関数を実行して応答を待ちます。 関数が呼び出されると、Function Compute は関数の結果を返します。
非同期呼び出し: 関数を非同期的に呼び出すと、Function Compute はリクエストの実行が完了した後ではなく、リクエストが永続化された直後に応答を返します。
関数のロジックが時間のかかるもの、リソースを消費するもの、またはエラーが発生しやすいものである場合は、この方法を使用して、プログラムがトラフィックの急増に効率的かつ確実に対応できるようにします。
実行時間が 1 時間を超える Function Compute タスクには、この方法を使用することをお勧めします。
[変数]
ビジネス要件に基づいて、関数の変数に値を割り当てます。 このフィールドのデータは、Function Compute コンソールの関数の「テストパラメーターの構成」パネルの「新しいテストイベントの作成」タブのコンテンツに対応しています。 「テストパラメーターの構成」パネルに移動するには、Function Compute コンソールの関数の詳細ページに移動し、「コード」タブで を選択します。
この例では、
para_service_01_by_time_triggers関数の変数に次のパラメーターを値として割り当てます。${}形式を使用して、bizdate変数を定義します。 ステップ 4 で変数に値を割り当てる必要があります。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" }オプション。 Function Compute ノードをデバッグして実行します。
Function Compute ノードが構成されたら、
アイコンをクリックして、ノードを実行するリソースグループを指定し、コード内の変数に定数を割り当ててノードをデバッグおよび実行し、ノードのコードロジックが正しいかどうかをテストできます。 ノードの実行に構成したパラメーターは、key=value形式です。 複数のパラメーターを構成する場合は、カンマ (,) で区切ります。説明ノードのデバッグの詳細については、「デバッグ手順」をご参照ください。
ノードのスケジューリングプロパティを構成して、ノードを定期的にスケジュールおよび実行します。
DataWorks は、スケジューリングシナリオでノードコードに動的パラメーターを渡すために使用されるスケジューリングパラメーターを提供します。 Function Compute ノードの構成タブで選択した関数の変数を定義したら、「プロパティ」タブに移動して変数に値を割り当てる必要があります。 この例では、$[yyyymmdd-1] が
bizdate変数に割り当てられています。 これにより、DataWorks は、ノードのスケジュール時間よりも 1 日早い時間に Function Compute ノードを実行します。 スケジューリングパラメーターの設定の詳細については、「サポートされているスケジューリングパラメーターの形式」をご参照ください。
スケジューリングプロパティの詳細については、「スケジュール」をご参照ください。
3. Function Compute ノードをコミットおよびデプロイする
Function Compute ノードは、本番環境にコミットおよびデプロイされた後でのみ自動的にスケジュールできます。
Function Compute ノードを保存してコミットします。
Function Compute ノードの構成タブの上部ツールバーにある
および
アイコンをクリックして、Function Compute ノードを保存してコミットします。 ノードをコミットするときは、プロンプトに従って変更の説明を入力し、コードレビューとスモークテストを実行するかどうかを指定します。説明「プロパティ」タブで [再実行] パラメーターと [親ノード] パラメーターを構成した後でのみ、ノードをコミットできます。
コードレビュー機能が有効になっている場合、ノードは、ノードのコードが指定されたレビュー担当者によって承認された後にのみデプロイできます。 詳細については、「コードレビュー」をご参照ください。
作成したノードが期待どおりに実行されるようにするために、ノードをデプロイする前にスモークテストを実行することをお勧めします。 詳細については、「スモークテストの実行」をご参照ください。
オプション。 Function Compute ノードをデプロイします。
使用しているワークスペースが標準モードの場合、コミット後に右上隅にある [デプロイ] をクリックしてノードをデプロイする必要があります。 詳細については、「基本モードのワークスペースと標準モードのワークスペースの違い」および「ノードのデプロイ」をご参照ください。
次のステップ
Function Compute ノードを本番環境のオペレーションセンターにコミットおよびデプロイした後、オペレーションセンターでノードの O&M 操作を実行できます。 詳細については、「自動トリガーノードの基本的な O&M 操作の実行」をご参照ください。
Function Compute ノードの作成と使用の基本的な手順を学習したら、ベストプラクティスに従って Function Compute ノードに関する深い知識を得ることができます。 詳細については、「DataWorks で Function Compute ノードを使用して PDF ファイルに動的にウォーターマークを追加する」をご参照ください。