アクティビティ
アクティビティは、ワーカーによって作業が実行されるステートマシンでタスクを実行できるようにする AWS Step Functions 機能です。ワーカーは、Amazon Elastic Compute Cloud (Amazon EC2) や Amazon Elastic Container Service (Amazon ECS)、モバイルデバイスなど—基本的にどこでもホストできます。
概要
AWS Step Functions では、アクティビティはどこかで実行されているコード (アクティビティワーカーとも呼ばれる) を、ステートマシンの特定のタスクと関連付ける方法です。Step Functions コンソールで、または CreateActivity
を呼び出すことでアクティビティを作成できます。これによって、タスクの状態の Amazon リソースネーム (ARN) が提供されます。この ARN を使用して、アクティビティワーカーでの作業のタスク状態をポーリングします。
注記
アクティビティはバージョニングされず、下位互換性があることが予期されます。アクティビティに下位互換性のない変更を加える必要がある場合は、一意の名前を使用して、Step Functions で新しいアクティビティを作成します。
アクティビティワーカーは、Amazon EC2 インスタンス、AWS Lambda 関数、モバイルデバイスで実行されているアプリケーションです。任意の場所にホストされている、HTTP
接続を行うことができる任意のアプリケーションです。Step Functions がアクティビティタスクの状態に達すると、ワークフローはアクティビティワーカーのタスクのポーリングを待機します。アクティビティワーカーは、GetActivityTask
を使用して Step Functions をポーリングし、関連するアクティビティの ARN を送信します。GetActivityTask
は input
(タスクの JSON 入力文字列) および taskToken
(タスクの一意の識別子) を含むレスポンスを返します。アクティビティワーカーは作業の完了後に SendTaskSuccess
または SendTaskFailure
を使用して成功または失敗のレポートを提供します。これら 2 つの呼び出しは、GetActivityTask
によって提供される taskToken
を使用して結果をタスクと関連付けます。
アクティビティタスクの完了を待機中
タスク定義で TimeoutSeconds
を設定して、ステートが待機する時間を設定します。タスクをアクティブおよび待機中にしておくためには、TimeoutSeconds
で設定した時間内に SendTaskHeartbeat
を使用して、アクティビティワーカーから定期的にハートビートを送信します。長いタイムアウト期間を設定し、能動的にハートビートを送信することで、Step Functions
のアクティビティは実行の完了を最大で 1 年間待機できます。
たとえば、長いプロセスの結果を待機するワークフローが必要な場合は、以下の操作を実行します。
-
コンソールで、または
CreateActivity
を呼び出してアクティビティを作成します。アクティビティ ARN を書き留めます。 -
ステートマシンの定義でアクティビティのタスク状態の ARN を参照し、
TimeoutSeconds
を設定します。 -
GetActivityTask
を使用して作業をポーリングするアクティビティワーカーを実装し、そのアクティビティ ARN を参照します。 -
ステートマシンのタスク定義の
HeartbeatSeconds
で設定した時間内に定期的にSendTaskHeartbeat
を使用して、タスクがタイムアウトしないようにします。 -
ステートマシンの実行を開始します。
-
アクティビティワーカーのプロセスを開始します。
実行はアクティビティタスクの状態で一時停止して、アクティビティワーカーのタスクのポーリングを待機します。taskToken
がアクティビティワーカーに提供されると、ワークフローはステータス提供のため SendTaskSuccess
または SendTaskFailure
を待機します。TimeoutSeconds
で設定された時間より前に、これらのいずれかまたは SendTaskHeartbeat
呼び出しを実行が受け取らない場合、実行は失敗し、実行履歴に ExecutionTimedOut
イベントが含まれることになります。
アクティビティタスクに関連する API
Step Functions では、アクティビティの作成と一覧表示、タスクのリクエスト、ワーカーの結果に基づくステートマシンのフロー管理のための API を提供しています。
以下は、アクティビティに関連する Step Functions API です。
注記
GetActivityTask
を使用してアクティビティタスクをポーリングすると、一部の実装でレイテンシーが発生する可能性があります。「アクティビティタスクポーリング時のレイテンシーを回避する」を参照してください。
次のステップ
アクティビティワーカーを使用するステートマシンの作成の詳細については、アクティビティステートマシンを作成する を参照してください。