Activities - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Activities

アクティビティとは、AWS Step Functions機能を使用すると、ステートマシンにタスクを持つことができます。このタスクでは、ワーカーは、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Elastic Container Service (Amazon ECS)、モバイルデバイスで、基本的にどこにでもホストできます。

Overview

AWS Step Functions では、アクティビティはどこかで実行されているコード (アクティビティワーカーとも呼ばれる) を、ステートマシンの特定のタスクと関連付ける方法です。アクティビティは、Step Functions コンソールを使用して、またはCreateActivity。これにより、タスクの状態の Amazon リソースネーム (ARN) が提供されます。この ARN を使用して、アクティビティワーカーでの作業のタスク状態をポーリングします。

注記

アクティビティはバージョニングされず、下位互換性があることが予期されます。アクティビティに下位互換性のない変更を加える必要がある場合は、新規に一意の名前を使用して、Step Functions アクティビティを作成します。

アクティビティワーカーは、Amazon EC2 インスタンスで実行されているアプリケーション、AWS Lambda関数、モバイルデバイス:どこにでもホストされている、HTTP 接続を行うことができる任意のアプリケーションです。Step Functions が、アクティビティタスクの状態に達すると、ワークフローは、アクティビティワーカーのタスクのポーリングを待機します。アクティビティワーカーStep Functions、GetActivityTaskを呼び出し、関連するアクティビティの ARN を送信します。GetActivityTaskは以下の内容を含むレスポンスを返します。input(タスクの JSON 入力文字列)とtaskToken(タスクの一意の識別子)。アクティビティワーカーは作業の完了後に SendTaskSuccess または SendTaskFailure を使用して成功または失敗のレポートを提供します。これら 2 つの呼び出しは、GetActivityTask によって提供される taskToken を使用して結果をタスクと関連付けます。

アクティビティタスクに関連する API

Step Functions では、アクティビティの作成と一覧表示、タスクのリクエスト、ワーカーの結果に基づくステートマシンのフロー管理のための API を提供しています。

アクティビティに関連する、Step Functions API を次に示します。

注記

GetActivityTask を使用してアクティビティタスクをポーリングすると、一部の実装でレイテンシーが発生する可能性があります。「アクティビティタスクのポーリング時の待ち時間を回避」を参照してください。

アクティビティタスクの完了を待機中

タスク定義で TimeoutSeconds を設定して、ステートが待機する時間を設定します。タスクをアクティブおよび待機中にしておくためには、TimeoutSeconds で設定した時間内に SendTaskHeartbeat を使用して、アクティビティワーカーから定期的にハートビートを送信します。長いタイムアウト期間を設定し、アクティブにハートビートを送信することで、Step Functions のアクティビティは実行の完了を最大で 1 年間待機できます。

たとえば、長いプロセスの結果を待機するワークフローが必要な場合は、以下の操作を実行します。

  1. コンソールを使用して、または CreateActivity を呼び出してアクティビティを作成します。アクティビティ ARN を書き留めます。

  2. ステートマシンの定義でアクティビティのタスク状態の ARN を参照し、TimeoutSeconds を設定します。

  3. GetActivityTask を使用して作業をポーリングするアクティビティワーカーを実装し、そのアクティビティ ARN を参照します。

  4. ステートマシンのタスク定義の HeartbeatSeconds で設定した時間内に定期的に SendTaskHeartbeat を使用して、タスクがタイムアウトしないようにします。

  5. ステートマシンの実行を開始します。

  6. アクティビティワーカーのプロセスを開始します。

実行はアクティビティタスクの状態で一時停止して、アクティビティワーカーのタスクのポーリングを待機します。taskToken がアクティビティワーカーに提供されると、ワークフローはステータス提供のため SendTaskSuccess または SendTaskFailure を待機します。TimeoutSeconds で設定された時間より前に、これらのいずれかまたは SendTaskHeartbeat 呼び出しを実行が受け取らない場合、実行は失敗し、実行履歴に ExecutionTimedOut イベントが含まれることになります。

次のステップ

アクティビティワーカーを使用するステートマシンの作成の詳細については、以下を参照してください。