このトピックでは、非同期タスクの状態と、Function Computeコンソールでの非同期タスクの管理方法について説明します。 次に、非同期タスクを作成、開始、停止、および表示する方法を理解できます。
Function Computeコンソールでのタスクの管理
関数を作成するときに非同期タスクを作成する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[タスク] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [タスク実行関数] ページで、[関数の作成] をクリックします。
関数の作成ページ、関連パラメーターの設定、トリガーの設定、作成をクリックします。
説明関数の作成方法については、「関数の管理」トピックの「関数の作成」セクションをご参照ください。
[関数の作成] ページで関数を作成するときに、トリガーを作成できます。 既存の関数の [トリガー] タブでトリガーを作成することもできます。
上記の方法を使用して関数を作成すると、非同期ポリシーのタスクモード機能が自動的に有効になります。 関数へのすべての非同期呼び出し要求は、タスクモードで処理されます。
関数が作成されると、[タスク実行関数] ページの [関数名] リストに関数が表示されます。
既存の関数の非同期タスクモードを有効にする
既存の関数の非同期タスクモードを有効にできます。 詳細については、「関数の管理」トピックの「関数の作成」セクションをご参照ください。
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
関数をクリックします。 関数の詳細ページで、[非同期設定] タブをクリックします。 [非同期ポリシー] セクションで、[変更] をクリックします。
では、非同期モードのポリシーの変更パネル、セットタスクモードへ有効化をクリックし、OKをクリックします。
タスクの開始または停止
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[タスク] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。
[タスク実行関数] ページで、目的の関数をクリックします。
[非同期タスク] タブで、[タスクの送信] をクリックします。 表示されるダイアログボックスで、タスクIDの生成方法とタスクの実行時間を選択し、[OK] をクリックします。
[タスクの送信] パラメーターの右側にあるアイコンをクリックし、ドロップダウンリストから [タスクパラメーターの設定] を選択することもできます。 イベント関数はeventを使用し、HTTP関数はHTTPパラメーターを使用して入力パラメーターを関数に渡し、タスクの送信をシミュレートします。
タスクを送信した後、ページを更新します。 実行中または完了したタスクを表示できます。 インスタンスへのログイン、タスクの停止、タスクの再実行、およびログの表示ができます。
説明非同期タスクでは、HTTP関数を再実行できません。
Function Compute APIを呼び出すか、Function Compute SDKを使用してタスクを管理する
非同期タスクの作成
PutFunctionAsyncInvokeConfigを呼び出して、非同期呼び出しモードをタスクモードに設定できます。 次の設定をAsyncConfigに追加します。この設定を追加すると、関数のすべての非同期呼び出しがタスクモードに変わります。
{
"statefulInvocation": true
}
非同期呼び出しモードをタスクモードに設定しても、同期モードで関数を呼び出すことができます。 ただし、非同期タスクモードは非同期呼び出しに対してのみ有効です。
タスクモードを有効にする
InvokeFunction操作を呼び出して、非同期呼び出しをトリガーしてタスクモードを開始できます。 操作を呼び出してタスクIdを指定するときに、HTTPヘッダーStateful-Async-Invocation-ID
を追加できます。 詳細については、「タスク重複排除」をご参照ください。
タスクの表示
タスクを送信した後、GetStatefulAsyncInvocation操作を呼び出して、タスクの実行ステータスまたは実行レコードを照会できます。
ListStatefulAsyncInvocations操作を呼び出して、キーワードまたは条件に基づいて、指定された条件を満たすタスクのリストを照会できます。
タスクの停止
タスクを送信した後、ビジネス要件に基づいてタスクを停止できます。 StopStatefulAsyncInvocationを呼び出して、タスクを停止できます。 タスクを停止するときは、そのIDを入力する必要があります。 タスクIDは、タスクを送信するときに指定されます。 タスクIDは、ListStatefulAsyncInvocations操作を呼び出して実行中のタスクをクエリするときに取得したIDでもあります。
非同期タスクの状態
Function Computeは、タスクの呼び出しごとに、タスクの状態変更に関する情報を記録し、タスクの状態をリアルタイムで照会できます。 Function Compute SDKまたはFunction Computeコンソールを使用して、タスクの状態を表示できます。 タスクは、次のいずれかの状態になります。
状態 | 説明 |
エンキュー済み | 非同期呼び出しはエンキューされ、実行待ちです。 |
処理済み | 非同期呼び出しはデキューされ、トリガーされるまで保留されます。 |
実行中 | 呼び出しは実行中であり、インスタンスはタスクコードの実行を開始しています。 |
成功した | 呼び出しは成功します。 |
失敗しました | 呼び出しは失敗します。 |
停止しました | 呼び出しを停止し、タスクは正常に終了します。 |
停止中 | タスクを停止し、タスクは終了中です。 |
期限切れ | 非同期呼び出しの有効期間を設定しました。 呼び出しが期限切れになり、破棄されました。 |
無効 | 呼び出しは無効になり、特定の理由でトリガーされません。 例えば、関数は削除される。 |
再試行 | 実行エラーのため、非同期呼び出しが再試行中です。 システムがタスクを再試行する準備ができたら、タスクの状態は実行中に変わります。 |
GetStatefulAsyncInvocationを呼び出して、タスクの詳細を取得できます。 ListStatefulAsyncInvocationsを呼び出して、指定した状態のタスクをフィルタリングすることもできます。