翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Step Functions を使用して実行時間の長いワークフローを継続する API (推奨)
AWS Step Functions は、期間とステップ数に制限のないワークフローを実行するように設計されています。標準ワークフロー実行の最大期間は 1 年、イベント数は 25,000 です (「」を参照Step Functions サービスクォータ)。
実行時間が長い場合、 Task
状態から新しいワークフロー実行を開始することで、ハードクォータに達しないようにできます。ワークフローを小さなステートマシンに分割し、新しい実行でも作業を継続する必要があります。
新しいワークフロー実行を開始するには、 Task
状態から StartExecution
APIアクションを呼び出し、必要なパラメータを渡します。
Step Functions は、独自の を統合サービス APIとして呼び出すことでワークフロー実行を開始できます。実行時間がない場合の Service Quotas の超過を避けるために、この方法を使用することを推奨します。
ステップ 1: 長時間実行するステートマシンを作成する
長時間実行するステートマシンを作成して、別のステートマシンの Task
状態から開始できるようにします。このチュートリアルでは、Lambda 関数を使用するステートマシンを使用します。
注記
このステートマシンの名前と Amazon リソースネームは、後で使用できるようにテキストファイルにコピーしておいてください。
ステップ 2: Step Functions APIアクションを呼び出すステートマシンを作成する
Task
状態からワークフロー実行を開始する
-
Step Functions コンソール
を開き、[ステートマシンの作成] を選択します。 -
[テンプレートを選択] ダイアログボックスで [空白] を選択します。
-
選択 を選択して、 で Workflow Studio を開きますデザインモード。
-
Actions タブから、StartExecutionAPIアクションをドラッグし、ここに「最初の状態をドラッグ」というラベルの付いた空の状態にドロップします。
-
StartExecution 状態を選択し、 の設定タブで次の操作を行いますデザインモード。
-
状態の名前を
Start nested execution
に変更します。 -
統合タイプ で、 を選択します。 AWS SDK - ドロップダウンリストから新規。
-
API パラメータ で、次の操作を行います。
-
の場合
StateMachineArn
、サンプルの Amazon リソースネームをステートマシンARNの に置き換えます。例えば、Lambda を使用するステートマシンARNの を入力します。 Lambda を使用する Step Functions ステートマシン状態の作成 -
Input
ノードで、次のように、既存のプレースホルダーテキストを置き換えます。"Comment": "Starting workflow execution using a Step Functions API action"
-
API パラメータの入力が次のようになっていることを確認します。
{ "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:
LambdaStateMachine
", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
-
-
-
(オプション) Inspector パネルパネルで 定義を選択すると、ワークフローの自動生成された Amazon ステートメント言語 (ASL) 定義が表示されます。
ヒント
Workflow Studio コードエディタの でASL定義を表示することもできます。コードエディタでは、ワークフローASLの定義を編集することもできます。
-
ステートマシンの名前を指定します。これを行うには、デフォルトのステートマシン名 の横にある編集アイコンを選択しますMyStateMachine。次に、[ステートマシンの設定] の [ステートマシン名] ボックスに名前を指定します。
このチュートリアルでは、名前として「
ParentStateMachine
」と入力します。 -
(オプション) [ステートマシンの設定] で、ステートマシンのタイプや実行ロールなど、他のワークフロー設定を指定します。
このチュートリアルでは、[ステートマシンの設定] のデフォルト設定をすべてそのまま使用します。
ステートマシンに対して正しいアクセス許可を持つ IAMロールを以前に作成していて、それを使用する場合は、アクセス許可 で既存のロールを選択 を選択し、リストからロールを選択します。または、ロールを入力しARN、そのIAMロールARNの を指定します。
-
[ロールの作成を確認] ダイアログボックスで、[確認] を選択して続行します。
[ロールの設定を表示] を選択して [ステートマシンの設定] に戻ることもできます。
注記
Step Functions が作成するIAMロールを削除した場合、Step Functions は後で再作成できません。同様に、ロールを変更した場合 (IAMポリシー内のプリンシパルから Step Functions を削除した場合など)、Step Functions は後で元の設定を復元できません。
ステップ 3: IAMポリシーを更新する
Lambda 関数 を使用するステートマシンの実行を開始するアクセス許可がステートマシンにあることを確認するには、ステートマシンのIAMロールにインラインポリシーをアタッチする必要があります。詳細については、「 ユーザーガイド」の「インラインポリシーの埋め込みIAM」を参照してください。
-
ParentStateMachine ページでロールを選択してIAMARN、ステートマシンのIAMロールページに移動します。
-
別のステートマシンの実行を開始できるように、 のIAMロールに適切なアクセス許可を割り当てParentStateMachineます。これらのアクセス許可を割り当てるには、次の手順を実行します。
-
IAM ロールページで、アクセス許可の追加 を選択し、インラインポリシーの作成 を選択します。
-
ポリシーの作成ページで、 JSONタブを選択します。
-
既存のテキストを次のポリシーに置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:
us-east-2
:123456789012
:stateMachine:LambdaStateMachine
" ] } ] } -
[ポリシーの確認] を選択します。
-
ポリシーの名前を指定し、[ポリシーの作成] を選択します。
-
ステップ 4: ステートマシンを実行する
ステートマシンの実行は、ワークフローを実行してタスクを実施するインスタンスです。
-
ParentStateMachine ページで、実行の開始 を選択します。
[実行を開始] ダイアログが表示されます。
-
[実行を開始] ダイアログボックスで、以下の操作を行います。
-
(オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。
非ASCII名前とログ記録
Step Functions は、 以外のASCII文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。このような文字は Amazon では機能しないため CloudWatch、 でメトリクスを追跡できるようにASCII、文字のみを使用することをお勧めします CloudWatch。
-
(オプション) 入力ボックスに、ワークフローを実行するための入力値を JSON形式で入力します。
-
[実行のスタート] を選択します。
-
Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。
実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「実行の詳細の概要」を参照してください。
-
-
LambdaStateMachine ページを開き、 によってトリガーされる新しい実行に気づきますParentStateMachine。