AWS Step Functions
開発者ガイド

タスク

Task 状態 ("Type": "Task") は、ステートマシンによって実行される単一の作業単位を表します。

共通状態フィールドに加えて、Task 状態には次のフィールドがあります。

Resource (必須)

URI (特に、実行する特定のタスクを一意に識別する Amazon リソースネーム (ARN))

Parameters(オプション)

Parameters を使用して、接続されたリソースの API アクションに情報を渡します。

ResultPath(オプション)

Resource で指定されたタスクを実行した結果を配置する場所 (入力内) を指定します。その後、入力は OutputPath フィールド (ある場合) に従ってフィルタリングされてから状態の出力に使用されます。詳細については、「パス」を参照してください。

Retry(オプション)

Retrier と呼ばれるオブジェクトの配列。状態でランタイムエラーが発生した場合の再試行ポリシーを定義します。詳細については、「エラー後の再試行」を参照してください。

Catch(オプション)

Catcher と呼ばれるオブジェクトの配列。状態でランタイムエラーが発生し、再試行ポリシーがすでに試された後または定義されていない場合に実行されるフォールバック状態を定義します。詳細については、「フォールバック状態」を参照してください。

TimeoutSeconds(オプション)

指定した秒数よりも長時間タスクが実行されると、この状態は States.Timeout エラー名で失敗します。ゼロ以外の正の整数にする必要があります。指定しない場合、デフォルト値は 99999999 です。タスクが開始されると、カウントが開始します (例: ActivityStarted または LambdaFunctionStarted が [実行イベント履歴] にログインされる際)。

HeartbeatSeconds(オプション)

タスクからのハートビートの間隔が指定された秒数よりも長時間経過した場合、このタスクは States.Timeout エラー名で失敗します。0 以外の正の整数である必要があり、TimeoutSeconds フィールドに指定された秒数よりも小さい必要があります。指定しない場合、デフォルト値は 99999999 です。この値は、アクティビティタスクにのみ適用されます。GetActivityTask にトークンが送信され、ActivityStarted が [実行イベント履歴] にログインされると、カウントが開始します。

Task 状態は、その状態で実行が終了する場合は End フィールドが true に設定されている必要があります。または、Next フィールドに、Task 状態が完了した際に実行される状態を指定する必要があります。

例を示します。

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "HeartbeatSeconds": 60, "Next": "NextState" }

この例では、ActivityState は呼び出し元の AWS アカウントの us-east-1 リージョンで HelloWorld を実行するアクティビティをスケジュールします。HelloWorld が完了すると、次の状態 (ここでは NextState と呼ばれます) が実行されます。

このタスクが 300 秒以内に完了しなかった場合、または 60 秒間隔のハートビート通知を送信しなかった場合、タスクは failed とマークされます。長時間実行されるアクティビティでは、タイムアウト値とハートビート間隔を設定することをお勧めします。

タスクのリソース ARN の指定

Resource フィールドの Amazon リソースネーム (ARN) は次のパターンを使用して指定します。

arn:partition:service:region:account:task_type:name

各パラメーターの意味は次のとおりです。

  • partition は使用する AWS Step Functions のパーティションです。最も一般的に使用されるのは aws です。

  • service はタスクの実行に使用される AWS のサービスを示します。以下のいずれかです。

  • region は、Step Functions アクティビティ/ステートマシンタイプまたは Lambda 関数が作成された AWS リージョンです。

  • account はお客様の AWS アカウント ID です。

  • task_type は実行するタスクのタイプです。次のいずれかの値になります。

  • name は登録されたリソース名 (アクティビティ名、Lambda 関数名、またはサービス API アクション) です。

注記

Step Functions はパーティション間で参照する ARN はサポートされていません (たとえば、「aws-cn」がパーティション「aws」のタスクを呼び出すことはできません。その逆も同様です)。

タスクタイプ

以下のタスクタイプがサポートされています。

次のセクションでは、各タイプの詳細を示します。

アクティビティ

アクティビティは、お客様によって実装およびホストされ、特定のタスクを実行するワーカー (プロセスまたはスレッド) を示します。

アクティビティ resource ARN は以下の構文を使用します。

arn:partition:states:region:account:activity:name

これらのフィールドの詳細については、「タスクのリソース ARN の指定」を参照してください。

注記

アクティビティは、最初に使用する前に Step Functions で作成しておく必要があります (CreateActivity、API アクション、または Step Functions コンソールを使用)。

アクティビティの作成とワーカーの実装の詳細については、「アクティビティ」を参照してください。

Lambda 関数

Lambda タスクでは AWS Lambda を使用して関数を実行します。Lambda 関数を指定するには、Resource フィールドに Lambda 関数の ARN を使用します。

Lambda 関数 Resource ARN は以下の構文を使用します。

arn:partition:lambda:region:account:function:function_name

これらのフィールドの詳細については、「タスクのリソース ARN の指定」を参照してください。

例:

"LambdaState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloWorld", "Next": "NextState" }

Resource フィールドに指定された Lambda 関数が完了すると、その出力が Next フィールド (「NextState」) で指定された状態に送信されます。

サポートされる AWS サービス

接続されたリソースを参照すると、Step Functions によって、サポートされたサービスの API アクションが直接呼び出されます。Resource フィールドでサービスとアクションを指定します。

接続されたサービス Resource ARN では以下の構文を使用します。

arn:partition:states:region:account:servicename:APIname

注記

接続されたリソースへの同期接続を作成するには、.sync を ARN の APIname エントリに付加します。詳細については、「のサービス統合」を参照してください。

例:

{ "StartAt": "BATCH_JOB", "States": { "BATCH_JOB": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "preprocessing", "JobName": "PreprocessingBatchJob", "JobQueue": "SecondaryQueue", "Parameters.$": "$.batchjob.parameters", "RetryStrategy": { "attempts": 5 } }, "End": true } } }