DataWorks の 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 は、次の 2 種類の関数をサポートしています:
-
イベント関数:イベントが発生したときに関数が呼び出されるイベント駆動モデルに適しています。
-
HTTP 関数:Web アプリケーションの迅速な構築などのシナリオに適しています。
Function Compute ノードでサービスと関数を設定し、ノードを本番環境にデプロイして定期的に実行できます。
制限事項
-
機能の制限
DataWorks はイベント関数の呼び出しのみをサポートしており、HTTP 関数はサポートしていません。したがって、定期的にスケジューリングしたいタスクにはイベント関数を使用する必要があります。関数の種類についての詳細は、「関数の種類」をご参照ください。
-
リージョンの制限
Function Compute 機能は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、イギリス (ロンドン)、米国 (シリコンバレー)、および米国 (バージニア) の各リージョンにあるワークスペースでのみ利用可能です。
注意事項
-
サービスを選択しようとしたときにサービスリストが空の場合、次のいずれかの理由が考えられます:
-
アカウントに支払い遅延があります。アカウントに入金し、ノード設定ページを更新してください。
-
現在ログインしているユーザーにサービスリストを取得する権限がありません。Alibaba Cloud アカウント (root ユーザー) の所有者に連絡して、ご利用の RAM ユーザーに fc:ListServices 権限を付与するか、AliyunFCFullAccess ポリシーをアタッチしてもらってください。権限が付与された後、ノード設定ページを更新して再試行してください。権限の付与方法の詳細については、「RAM ユーザーへの権限付与」をご参照ください。
-
-
DataWorks の Function Compute ノード内の関数で、ランタイムが 1 時間を超える場合は、呼び出しメソッドを非同期呼び出しに設定する必要があります。Function Compute の非同期呼び出しの詳細については、「非同期呼び出し」をご参照ください。
-
RAM ユーザーを使用して Function Compute ノードを開発する場合、ユーザーに次のシステムポリシーまたはカスタムポリシーの権限を付与する必要があります。
ポリシータイプ
説明
システムポリシー
システムポリシーを使用する場合、ユーザーに
AliyunFCFullAccess、AliyunFCReadOnlyAccess、およびAliyunFCInvocationAccessポリシーを付与します。カスタムポリシー
Function Compute のカスタムポリシーを使用する場合、一般的に次の権限が付与されます:
-
fc:GetAsyncTask -
fc:StopAsyncTask -
fc:GetService -
fc:ListServices -
fc:GetFunction -
fc:InvokeFunction -
fc:ListFunctions -
fc:GetFunctionAsyncInvokeConfig -
fc:ListServiceVersions -
fc:ListAliases -
fc:GetAlias -
fc:ListFunctionAsyncInvokeConfigs -
fc:GetStatefulAsyncInvocation -
fc:StopStatefulAsyncInvocation
説明Function Compute の権限ポリシーの詳細については、次のドキュメントをご参照ください:
-
手順 1:ノード作成ページへの移動
-
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウの をクリックします。ドロップダウンリストからワークスペースを選択し、入力 データ開発 をクリックします。
-
ノード作成ページに移動します。
DataStudio ページでは、次の 3 つの方法のいずれかで Function Compute ノードを作成できます。方法 1:上部のメニューバーで、[+ 新規作成] > [ノード] > [Function Compute] をクリックします。方法 2:左側のビジネスプロセスツリーで、対象のビジネスプロセスを右クリックし、[新規ノード] > [Function Compute] を選択します。方法 3:左側で対象のビジネスプロセスを展開し、[一般] > [新規ノード] をクリックして、[Function Compute] を選択します。
手順 2:ノードの作成と設定
-
Function Compute ノードを作成します。
ノード作成ページで、パスや名前などの新しいノードの基本情報を設定し、ノードを作成します。
-
Function Compute ノードのパラメーターを設定します。
ノード設定ページで、呼び出す関数を選択し、その呼び出しメソッドと変数を設定します。次の表にパラメーターを示します。
パラメーター
説明
Select Function
このタスクで呼び出す関数を選択します。利用可能な関数がない場合は、作成する必要があります。詳細については、「関数の作成」をご参照ください。
説明DataWorks はイベント関数の呼び出しのみをサポートしており、HTTP 関数はサポートしていません。したがって、定期的にスケジューリングしたいタスクにはイベント関数を使用する必要があります。関数の種類についての詳細は、「関数の種類」をご参照ください。
この例では、
para_service_01_by_time_triggers関数が選択されています。この関数を作成する際に、プラットフォームが提供するタイマートリガー関数のサンプルコードを選択します。コードのロジックは次のとおりです。import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # Parse the 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関数のサンプルコードの詳細については、「サンプルコード」をご参照ください。
Select Version or Alias
サービスバージョンまたはエイリアスを選択します。デフォルトのバージョンは LATEST です。
-
サービスバージョン
Function Compute は、サービスレベルのバージョン管理機能を提供し、サービスの 1 つ以上のバージョンを公開できます。バージョンを公開すると、Function Compute は、その設定、関数コード、および関数設定を含むサービスのスナップショットを作成します。トリガーは含まれません。その後、Function Compute は将来の使用のためにスナップショットにバージョン番号を自動的に割り当てます。詳細については、「バージョンの公開」をご参照ください。
-
バージョンエイリアス
Function Compute では、サービスバージョンにエイリアスを作成できます。エイリアスは特定のバージョンを指し、公開、ロールバック、カナリアリリースなどの操作を容易にします。エイリアスは、サービスやバージョンから独立して存在することはできません。エイリアスを使用してサービスや関数にアクセスすると、Function Compute はエイリアスが指すバージョンに解決します。呼び出し元は特定のバージョンを知る必要はありません。詳細については、「エイリアスの作成」をご参照ください。
Invocation Method
次の呼び出しメソッドがサポートされています:
-
同期呼び出し:イベントが直接関数をトリガーします。Function Compute は関数を実行し、応答を待ちます。関数が呼び出された後、Function Compute は実行結果を返します。
-
非同期呼び出し:Function Compute はイベントリクエストをキューに入れ、リクエストが完了するのを待たずにすぐにレスポンスを返します。
-
関数が時間のかかる、リソースを大量に消費する、またはエラーが発生しやすいロジックを含む場合、非同期呼び出しを使用して応答速度を向上させ、トラフィックスパイクを確実に処理できます。
-
1 時間以上実行される Function Compute タスクには、非同期呼び出しを使用します。
-
Variable
関数の変数に値を割り当てます。これらの変数は、Function Compute コンソールの セクションで定義されたイベントペイロードに対応します。
この例では、
para_service_01_by_time_triggers関数の変数に次のパラメーターを渡します。パラメーターでは、${}形式を使用してbizdateという名前の変数を定義します。手順 4 でこの変数に値を割り当てる必要があります。{ "payload": "payload1", "triggerTime": "${bizdate}", "triggerName": "triggerName1" } -
-
任意。 Function Compute ノードをデバッグして実行します。
ノードを設定した後、
アイコンをクリックします。その後、タスクのリソースグループを指定し、コード変数に定数値を割り当ててデバッグテストを実行し、ノードのロジックを検証できます。テストを実行する際は、key=value形式を使用します。複数のパラメーターを区切るには、カンマ (,) を使用します。説明タスクのデバッグ方法の詳細については、「タスクのデバッグ」をご参照ください。
-
ノードのスケジューリングプロパティを設定します。
DataWorks はスケジューリングパラメーターを使用して、スケジュールされたタスクに動的な値を渡します。ノード設定で
${bizdate}のような変数を定義した後、スケジューリングプロパティでそれに値を割り当てる必要があります。この例では、bizdate変数に前日の日付を割り当てます。これは、DataWorks が設定された実行日の 1 日前にノードを実行するようにスケジュールすることを意味します。スケジューリングパラメーターの設定方法の詳細については、「スケジューリングパラメーターの設定」をご参照ください。右側のペインで [スケジューリングプロパティ] タブをクリックします。[スケジューリングパラメーター] セクションで、手動でパラメーターを追加します。パラメーター名をbizdateに、値を$[yyyymmdd-1]に設定します。左側のコードエディタの [変数] セクションで、${bizdate}を使用してこのスケジューリングパラメーターを参照します。たとえば、triggerTimeフィールドの値を${bizdate}に設定します。関数バージョンには [LATEST] を、呼び出しメソッドには [同期] を選択します。ノードのスケジューリングプロパティの詳細については、「タスクの基本プロパティの設定」をご参照ください。
手順 3:ノードのコミットとデプロイ
Function Compute ノードを自動スケジュールで実行するには、まず本番環境にコミットしてデプロイする必要があります。
-
ノードを保存してコミットします。
ツールバーの
アイコンと
アイコンをクリックして、ノードを保存してコミットします。コミットダイアログボックスで、変更内容の説明を入力し、必要に応じてコードレビューとスモークテストのオプションを選択します。 -
任意。 ノードをデプロイします。
標準モードのワークスペースを使用している場合、ノードをコミットした後、右上隅にある Deploy をクリックしてノードをデプロイする必要があります。 詳細については、「標準モードのワークスペース」および「タスクのデプロイ」をご参照ください。
次のステップ
-
タスクがコミットされデプロイされると、オペレーションセンターによってスケジュールされます。その後、DataWorks オペレーションセンターでタスクを管理および監視できます。詳細については、「オペレーションセンター」をご参照ください。
-
Function Compute ノードの作成と使用の基本的な手順を習得したら、ベストプラクティスを探求してノードをより深く理解できます。詳細については、「DataWorks の Function Compute ノードを使用して PDF に動的にウォーターマークを追加する」をご参照ください。