Task - AWS Step Functions

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

Task

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

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

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

注記

Step Functions、いくつかを調整することができますAWSサービスをタスク状態から直接実行します。詳細については、「他のサービスでの使用」を参照してください。

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

Amazon ステート言語では、状態のタイプをTaskをクリックして、タスクにアクティビティまたは Lambda 関数の Amazon リソースネーム (ARN) を提供することで、。

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

Resource (必須)

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

Parameters(オプション)

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

ResultPath(オプション)

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

ResultSelector(オプション)

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

Retry(オプション)

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

Catch(オプション)

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

TimeoutSeconds(オプション)

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

TimeoutSecondsPath(オプション)

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

注記

ATask状態には、両方を含めることはできませんTimeoutSecondsおよびTimeoutSecondsPath

HeartbeatSeconds(オプション)

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

HeartbeatSecondsPath(オプション)

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

注記

ATask状態には、両方を含めることはできません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である。AWSリージョンここで、Step Functions アクティビティまたは状態マシンタイプまたは Lambda 関数が作成されました。

  • 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 関数を指定するには、Lambda 関数の ARN をResourcefields。

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

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

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

次に例を示します。

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

で指定された Lambda 関数の後Resourceフィールドが完了すると、その出力がNextフィールド(「次ステート」)。

サポートされる 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 } } }