DataWorksはFunction Computeノードを提供します。 Function Computeノードを使用して、イベント処理機能を定期的にスケジュールし、他のタイプのノードとの統合と共同スケジューリングを完了できます。 このトピックでは、Function Computeノードを作成して使用する方法について説明します。
背景情報
DataWorksは、MaxCompute、Hologres、E-MapReduce (EMR) 、AnalyticDB、CDHなどのビッグデータ計算エンジンに基づくデータウェアハウジング、データレイク、およびデータレイクハウスソリューションを提供するエンドツーエンドのビッグデータ開発およびガバナンスプラットフォームです。 DataWorksのDataStudioサービスでは、自動トリガーノードの開発およびスケジューリングプロパティを定義できます。 DataStudioはOperation Centerと連携して、MaxCompute、Hologres、E-MapReduce (EMR) などのさまざまなタイプの計算エンジンのノードに視覚化された開発インターフェイスを提供します。 視覚化された開発インターフェイスの設定を構成して、インテリジェントなコード開発、ワークフローでのマルチエンジンノードオーケストレーション、および標準化されたノード展開を実行できます。 これにより、オフラインのデータウェアハウス、リアルタイムのデータウェアハウス、およびアドホック分析システムを構築して、効率的で安定したデータ生産を保証できます。
DataWorksのDataStudioは、Function Computeのイベント関数を呼び出してリクエストを処理できます。 自動スケジューリングは、ノードの周期的スケジューリングプロパティを構成し、そのプロパティを本番環境にパブリッシュすることによって実装できます。
あなたが始める前に
DataWorks
Function Compute
制限事項
機能の制限
DataWorksでは、イベント関数のみを呼び出すことができます。 DataWorksでイベント処理関数を定期的にスケジュールする場合は、HTTP関数ではなくイベント関数を作成して、function Computeでイベントリクエストを処理する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
地域の制限
Function Computeが提供する機能は、中国 (杭州) 、中国 (上海) 、中国 (北京) 、中国 (張家口) 、中国 (深セン) 、中国 (香港) 、シンガポール、英国 (ロンドン) 、米国 (シリコンバレー) 、米国 (バージニア) 、インド (ムンバイ) サービス終了、ドイツ (フランクフルト) 、オーストラリア (シドニー) サービス終了。
注意事項
Function Computeノードを使用する場合、作成したサービスに基づいて実行するイベント関数を呼び出す必要があります。 サービスを選択する場合、作成されたサービスの一覧を取得できない場合があります。 この問題は、次のいずれかの理由で発生する可能性があります。
現在のアカウントに料金滞納があります。 この場合は、アカウントを補充し、ノード設定ページを更新して再試行してください。
アカウントには、サービスリストを取得するために必要な権限がありません。 この場合、Alibaba Cloudアカウントに連絡してfc:ListServices権限を付与するか、AliyunFCFullAccessポリシーをアカウントにアタッチします。 承認が完了したら、ノード設定ページを更新して再試行します。 権限付与の詳細については、「RAMユーザーへの権限付与」をご参照ください。
DataWorksでfunction Computeノードを実行するために関数を呼び出すときに、ノードの実行時間が1時間を超える場合、そのノードのInvocation Methodパラメーターを [非同期呼び出し] に設定します。 非同期呼び出しの詳細については、「概要」をご参照ください。
Function ComputeノードをRAMユーザーとして開発する場合、次のシステムポリシーまたはカスタムポリシーをRAMユーザーにアタッチする必要があります。
ポリシータイプ
説明
関連ドキュメント
システムポリシー
AliyunFCFullAccess
ポリシーをRAMユーザーにアタッチするか、AliyunFCReadOnlyAccess
およびAliyunFCInvocationAccess
ポリシーをRAMユーザーにアタッチします。カスタムポリシー
カスタムポリシーを使用して、次のすべての権限をRAMユーザーに付与します。
fc:GetService
fc:ListServices
fc:GetFunction
fc:InvokeFunction
fc:ListFunctions
fc:GetFunctionAsyncInvokeConfig
fc:ListServiceVersions
fc:ListAliases
fc:GetAlias
fc:ListFunctionAsyncInvokeConfigs
fc:GetStatefulAsyncInvocation
fc:StopStatefulAsyncInvocation
ステップ1: Function Computeノードを作成するためのエントリポイントに移動する
DataWorks コンソールにログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 次に、左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[DataStudioに移動] をクリックします。
Function Computeノードを作成するためのエントリポイントに移動します。
[DataStudio] ページで、次の図に示す方法のいずれかを使用して、Function Computeノードを作成するためのエントリポイントに移動できます。
ステップ2: Function Computeノードの作成と設定
Function Computeノードを作成します。
Function Computeノードを作成するためのエントリポイントに移動した後、Function Computeノードを作成するためのプロンプトに従って、ノードパスやノード名などの基本情報を設定します。
Function Computeノードのパラメーターを設定します。
Function Computeノードの構成タブで、ノードを実行するために呼び出す関数を選択し、ビジネス要件に基づいて呼び出し方法と変数を指定します。
パラメーター
説明
サービスの選択
関数呼び出し用のリソースを提供するサービスを選択します。 サービスのすべての機能は、サービスの承認やログ設定など、同じ設定を共有します。 利用可能なサービスがない場合は、サービスを作成します。 詳しくは、「サービスの作成」をご参照ください。
バージョンまたはエイリアスの選択
その後の関数の呼び出しに使用するサービスのバージョンまたはエイリアスを選択します。 デフォルトのバージョンはLATESTです。
サービスバージョン
Function Computeは、サービスレベルのバージョン管理機能を提供します。これにより、サービスの1つ以上のバージョンをリリースできます。 バージョンは、サービス設定、サービスに属する機能のコードと設定などの情報を含むサービススナップショットに似ています。 バージョンにはトリガー情報が含まれていません。 バージョンをリリースすると、システムはサービスのスナップショットを生成し、将来使用するためにスナップショットに関連付けられたバージョン番号を割り当てます。 バージョンをリリースする方法の詳細については、「バージョンの管理」をご参照ください。
バージョンエイリアス
Function Computeでは、サービスバージョンのエイリアスを作成できます。 エイリアスは、サービスの特定のバージョンを指します。 エイリアスを使用して、バージョンリリース、ロールバック、またはカナリアリリースを簡単に実行できます。 エイリアスは、サービスまたはバージョンに依存します。 エイリアスを使用してサービスまたは関数にアクセスすると、function Computeはエイリアスをそのエイリアスが指すバージョンに解析します。 このように、インボーカは、エイリアスが指す特定のバージョンを知る必要がない。 エイリアスの作成方法については、「エイリアスの管理」をご参照ください。
関数の選択
function Computeノードを実行するために呼び出す関数を選択します。 使用できる関数がない場合は、関数を作成します。 詳細については、「関数の作成」をご参照ください。
説明DataWorksでは、イベント関数のみを呼び出すことができます。 DataWorksでイベント処理関数を定期的にスケジュールする場合は、HTTP関数ではなくイベント関数を作成して、function Computeでイベントリクエストを処理する必要があります。 その他の関数タイプについては、「関数タイプの選択」をご参照ください。
この例では、
para_service_01_by_time_triggers
関数が選択されています。 このような関数を作成するときは、スケジューリング時に関数をトリガーするサンプルコードを使用します。 Code logic: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
を返す
他の関数のサンプルコードの詳細については、「サンプルコード」をご参照ください。
呼び出しメソッド
関数を呼び出すメソッド。The method to invoke a function. 有効な値:
同期呼び出し: 関数を同期して呼び出すと、イベントが関数を直接トリガーし、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ノードを運用環境のOperation Centerにコミットしてデプロイした後、Operation CenterのノードでO&M操作を実行できます。 詳細については、「自動トリガーノードでの基本的なO&M操作の実行」をご参照ください。