Task - AWS Step Functions

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

Task

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

ステートマシンのすべての作業は、タスクにより処理されます。タスクの作業を実行するには、アクティビティ、または AWS Lambda 関数を使用するか、パラメータをそのサービスの API アクションに渡します。

AWS Step Functions では、タスク状態から直接 Lambda 関数を呼び出すことができます。Lambda 関数は、AWS Lambda で実行されるクラウドネイティブタスクです。Lambda 関数は、AWS Management Console を使用したり、コードを Lambda にアップロードしたりして、さまざまなプログラミング言語で記述できます。詳細については、Creating a Step Functions State Machine That Uses Lambda を参照してください。

注記

Step Functions では、一部の AWS サービスをタスク状態から直接調整することができます。詳細については、サービス統合 を参照してください。

アクティビティはプログラムコードで構成され、オペレーターがアクションを実行するか、入力を提供するのを待機します。アクティビティは、Amazon EC2、Amazon ECS、またはモバイルデバイスでもホストできます。アクティビティは、GetActivityTaskSendTaskSuccessSendTaskFailure、および SendTaskHeartbeat API アクションを使用して Step Functions をポーリングします。

Amazon ステートメント言語 は、状態のタイプを Task に設定し、タスクにアクティビティまたは Lambda 関数の Amazon リソースネーム (ARN) を指定することにより、タスクを表します。

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

Resource (必須)

URI (特に、実行する特定のタスクを一意に識別する ARN)。

Parameters (オプション)

接続されたリソースの API アクションに情報を渡すのに使用します。パラメータには静的な JSON と JsonPath を組み合わせて使用できます。詳細については、サービス API にパラメータを渡す を参照してください。

ResultPath (オプション)

で指定されているタスクの実行結果を配置する場所 (入力内) を指定します。 Resource。 入力は、 OutputPath フィールド(存在する場合)を使用して、状態の出力として使用されます。詳細については、「入力および出力処理」を参照してください。

ResultSelector (オプション)

キー値ペアの集合を渡します。値は静的であるか、結果から選択されます。詳細については、ResultSelector を参照してください。

Retry (オプション)

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

Catch (オプション)

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

TimeoutSeconds (オプション)

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

TimeoutSecondsPath (オプション)

参照パスを使用して状態入力から動的にタイムアウト値を提供する場合は、 TimeoutSecondsPath。 解決すると、参照パスは正の整数値を持つフィールドを選択する必要があります。

注記

A Task 州には両方を含めることはできません TimeoutSeconds および TimeoutSecondsPath

HeartbeatSeconds (オプション)

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

HeartbeatSecondsPath (オプション)

リファレンス パスを使用して状態入力から動的にハートビート値を提供する場合は、 HeartbeatSecondsPath。 解決すると、参照パスは正の整数値を持つフィールドを選択する必要があります。

注記

A Task 州には両方を含めることはできません HeartbeatSeconds および HeartbeatSecondsPath

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

タスク状態のタイムアウトとハートビート間隔

長時間実行されるアクティビティでは、タイムアウト値とハートビート間隔を設定することをお勧めします。これは、タイムアウト値とハートビート値を指定するか、動的に設定することによって実行できます。

静的タイムアウトおよびハートビート通知の例

HelloWorld が完了すると、次の状態 (ここでは NextState と呼ばれます) が実行されます。

このタスクが 300 秒以内に完了しなかった場合、または 60 秒間隔のハートビート通知を送信しなかった場合、タスクは failed とマークされます。

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

動的タスク タイムアウトおよびハートビート通知の例

この例では、 AWS Glue 次の状態が実行されます。

このタスクが、 AWS Glue または によって設定された間隔のハートビート通知は送信されません。 AWS Glue タスクは failed.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "myGlueJob" }, "TimeoutSecondsPath": "$.params.maxTime", "HeartbeatSecondsPath": "$.params.heartbeat", "Next": "NextState" }

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

Resource フィールドの 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」のタスクを呼び出すことはできません。その逆も同様です)。

タスクの種類

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

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

Activity

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

アクティビティ 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
注記

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

たとえば、 と指定します。

{ "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 } } }