Workflow Studio でステートマシンを設計する - AWS Step Functions

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

Workflow Studio でステートマシンを設計する

このチュートリアルでは、 の Workflow Studio を使用するための基本について説明します。 AWS Step Functions。 Workflow Studio デザインモードの では、、、、PassChoice Fail Waitなど、複数の状態を含むステートマシンを作成しますParallel。ドラッグアンドドロップ機能を使用して、これらの状態を検索、選択、設定します。次に、ワークフローの自動生成された Amazon ステートメント言語 (ASL) 定義を表示します。また、Workflow Studio の コードモード を使用して、ワークフロー定義を編集します。その後、Workflow Studio を終了してステートマシンを実行し、実行の詳細を確認します。

このチュートリアルでは、ステートマシンを更新し、実行出力の変更を確認する方法についても学習します。最後に、クリーンアップステップを実行し、ステートマシンを削除します。

このチュートリアルを完了すると、Workflow Studio を使用して、[デザイン] モードと [コード] モードの両方を使用してワークフローを作成および構成する方法を習得できます。また、ステートマシンを更新、実行、削除する方法も習得できます。

ステップ 1: Workflow Studio に移動する

  1. Step Functions コンソールを開き、[ステートマシンの作成] を選択します。

  2. [テンプレートを選択] ダイアログボックスで [空白] を選択します。

  3. 選択 を選択して、 で Workflow Studio を開きますデザインモード

ステップ 2: ステートマシンを作成する

Workflow Studio では、ステートマシンはワークフローをグラフィカルに表示したものです。Workflow Studio を使用して、ワークフローの個々のステップを定義、設定、および検証できます。次のステップでは、Workflow Studio の デザインモード を使用してステートマシンを作成します。

ステートマシンを作成するには
  1. Workflow Studio が[デザイン] モードになっていることを確認してください。

  2. 左側の [State browser] (状態ブラウザ) で、[フロー] タブを選択します。次に、[パス] 状態を [最初の状態をここにドラッグ] とラベル付けされた空の状態にドラッグします。

  3. [フロー] タブから [選択] 状態をドラッグし、[パス] 状態の下にドロップします。

  4. [状態名] のデフォルト名を [選択] に置き換えます。このチュートリアルでは、名前に IsHelloWorldExample を使用します。

  5. 別のパス状態をドラッグして、IsHelloWorldExample状態の 1 つのブランチにドロップします。次に、失敗状態をドラッグして、IsHelloWorldExample状態の他のブランチの下にドロップします。

  6. [パス (1)] 状態を選択し、その名前を Yes に変更します。[失敗] 状態の名前を No に変更します。

  7. ブール変数 を使用して、IsHelloWorldExample状態の分岐ロジックを指定しますIsHelloWorldExample

    IsHelloWorldExampleFalse の場合、ワークフローは [No] 状態を入力します。それ以外は、ワークフローは [Yes] 状態で実行フローを継続します。

    分岐ロジックを定義するには、次の手順を実行します。

    1. IsHelloWorldExample状態を選択しCanvas とワークフローグラフルールの選択でルール #1 ボックスの編集アイコンを選択して、最初の選択ルールを定義します。

    2. [条件を追加] を選択します。

    3. [ルール #1 の条件] ダイアログボックスで、[変数]$.IsHelloWorldExample を入力します。

    4. [演算子] で、[次と等しい] を選択します。

    5. [値][ブール定数] を選択し、ドロップダウンリストから [true] を選択します。

    6. [条件を保存する] を選択します。

    7. [次の状態:] ドロップダウンリストで [Yes] が選択されていることを確認します。

    8. [新しい選択ルールを追加] を選択し、次に [条件を追加] を選択します。

    9. [ルール #2] ボックスで、サブステップ 7.c から 7.f を繰り返して、IsHelloWorldExample 変数の値が [false] のときの 2 番目の選択ルールを定義します。ステップ 7.e では、[true] の代わりに [false] を選択します。

    10. [ルール #2] ボックスで、[次の状態:] ドロップダウンリストから [No] を選択します。

    11. [デフォルトのルール] ボックスで、編集アイコンを選択してデフォルトの選択ルールを定義し、ドロップダウンリストから [Yes] を選択します。

  8. [Yes] 状態の後に [待機] 状態を追加し、Wait 3 sec という名前を付けます。次に、次の手順を実行して待機時間を 3 秒に設定します。

    1. [オプション] では、デフォルトの [一定の時間間隔を待機] のままにします。

    2. [秒][秒を入力] が選択されていることを確認し、ボックスに 3 を入力します。

  9. [3 秒間待機] 状態になったら、[並列] ステートを追加します。さらに 2 つの [パス] 状態を 2 つの分岐に追加します。最初の [パス] 状態に Hello という名前を付けます。2 つ目の [パス] 状態に World という名前を付けます。

    完了したワークフローは次の図のようになります。

    IsHelloWorldExample ステートマシンワークフローのスクリーンショット。

ステップ 3: 自動生成された Amazon States Language 定義を確認する

フロータブからキャンバスに状態をドラッグアンドドロップすると、Workflow Studio はワークフローの Amazon ステートメント言語 (ASL) 定義をリアルタイムで自動的に作成します。Inspector パネル パネルで、[定義] トグルボタンを選択してこの定義を表示するか、コードモード に切り替えて、必要に応じてこの定義を編集します。ワークフロー定義の編集については、このチュートリアルのステップ 4 を参照してください。

  • (オプション) [Inspector] パネルで [定義] を選択し、ステートマシンのワークフローを表示します。

    次のサンプルコードは、ワークフロー用に自動的に生成された IsHelloWorldExample ステートマシンの Amazon States Language の定義を示しています。Workflow Studio で追加した Choice 状態は、ステップ 2 で定義した分岐ロジックに基づいて実行フローを決定するために使用されます。

    { "Comment": "A Hello World example of the Amazon States Language using Pass states", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "IsHelloWorldExample", "Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful when constructing and debugging state machines." }, "IsHelloWorldExample": { "Type": "Choice", "Comment": "A Choice state adds branching logic to a state machine. Choice rules can implement 16 different comparison operators, and can be combined using And, Or, and Not\"", "Choices": [ { "Variable": "$.IsHelloWorldExample", "BooleanEquals": false, "Next": "No" }, { "Variable": "$.IsHelloWorldExample", "BooleanEquals": true, "Next": "Yes" } ], "Default": "Yes" }, "No": { "Type": "Fail", "Cause": "Not Hello World" }, "Yes": { "Type": "Pass", "Next": "Wait 3 sec" }, "Wait 3 sec": { "Type": "Wait", "Seconds": 3, "Next": "Parallel" }, "Parallel": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "End": true } } } ] } } }

ステップ 4: コードモードでワークフローの定義を編集する

Workflow Studio のコードモードには、ワークフローASLの定義を表示および編集するための統合コードエディタが用意されています。

  1. [コード] を選択して、コードモードに切り替えます。

  2. [並列] 状態が定義されたら、カーソルを置いて Enter を押します。

  3. Ctrl+space を押すと、[並列] 状態の後に追加できる状態の一覧が表示されます。

  4. オプションの一覧から [パス状態] を選択します。コードエディタは、[パス状態] のボイラープレートコードを追加します。

  5. この状態を追加すると、ワークフロー定義にエラーが発生します。[並列] 状態の定義では、"End": true"Next": "PassState" に置き換えてください。

  6. 追加した [パス状態] の定義で、次の変更を実行します。

    1. [結果] ノードを削除します。

    2. "ResultPath": "$.result","Next": "NextState" を削除します。

    3. "Type": "Pass", の後で、"End": true と入力します。

    4. [パス状態] 定義の後で、, を追加します。

ワークフローの定義は、次のような定義になっているはずです。

{ "Comment": "A description of my state machine", "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "Next": "IsHelloWorldExample" }, "IsHelloWorldExample": { "Type": "Choice", "Choices": [ { "Variable": "$.IsHelloWorldExample", "BooleanEquals": true, "Next": "Yes" }, { "Variable": "$.IsHelloWorldExample", "BooleanEquals": false, "Next": "No" } ], "Default": "Yes" }, "Yes": { "Type": "Pass", "Next": "Wait 3 seconds" }, "Wait 3 seconds": { "Type": "Wait", "Seconds": 3, "Next": "Parallel" }, "Parallel": { "Type": "Parallel", "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "End": true } } } ], "Next": "PassState" }, "PassState": { "Type": "Pass", "End": true }, "No": { "Type": "Fail" } } }

ステップ 5: ステートマシンを保存する

  1. Config more を選択するか、デフォルトのステートマシン名 の横にある編集アイコンを選択しますMyStateMachine[ステートマシンの設定] で、名前を指定します。たとえば、HelloWorld と入力します。

  2. (オプション) ステートマシンのタイプや実行ロールなど、他のワークフロー設定を指定します。このチュートリアルでは、[ステートマシンの設定] のデフォルト設定をすべてそのまま使用します。

  3. [Create] (作成) を選択します。

  4. [ロールの作成を確認] ダイアログボックスで、[確認] を選択して続行します。

    [ロールの設定を表示] を選択して、[設定] モードに戻ることもできます。

[設定] モードについての詳細は、「Workflow Studio の設定モード」を参照してください。

ステップ 6: ステートマシンを実行する

ステートマシンの実行は、ワークフローを実行してタスクを実施するインスタンスです。

  1. ステートマシンページで、HelloWorldステートマシンを選択します。

  2. HelloWorld ページで、実行の開始 を選択します。

  3. (オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。

    非ASCII名前とログ記録

    Step Functions は、 ASCII以外の文字を含むステートマシン、実行、アクティビティ、およびラベルの名前を受け入れます。このような文字は Amazon では機能しないため CloudWatch、 でメトリクスを追跡できるようにASCII、文字のみを使用することをお勧めします CloudWatch。

  4. 入力ボックスに、実行の入力値を JSON形式で入力します。入力に基づいて、IsHelloWorldExample 変数は、どのステートマシンフローが実行されるかを決定します。ここでは、次の入力値を使用します。

    { "IsHelloWorldExample": true }
    注記

    実行入力の指定はオプションですが、このチュートリアルでは、上記の入力例と同様の実行入力を指定することが必要です。この入力値は、ステートマシンを実行する際に Choice 状態で参照されます。

  5. [実行のスタート] を選択します。

  6. Step Functions コンソールから実行 ID のタイトルが付いたページが表示されます。このページは、[実行の詳細] ページと呼ばれます。このページでは、実行の進行中または完了後に実行結果を確認できます。

    実行結果を確認するには、[グラフビュー] で個々の状態を選択し、ステップの詳細 ペインの個々のタブを選択すると、入力、出力、定義などの各状態の詳細がそれぞれ表示されます。[実行の詳細] ページに表示できる実行情報の詳細については、「実行の詳細の概要」を参照してください。

    このチュートリアルでは、"IsHelloWorldExample": true の入力値を入力すると、次のような出力が表示されます。

    { "IsHelloWorldExample": true }, { "IsHelloWorldExample": true }

ステップ 7: ステートマシンを更新する

ステートマシンを更新すると、更新は結果に整合します。短時間のうちに、新しく開始したすべての実行にステートマシンの更新された定義が反映されます。現在実行中のすべての実行は、前の定義に基づいて完了します。

このステップでは、Workflow Studio の デザインモード モードでステートマシンを更新します。[パス] 状態に [World] という名前の Result フィールドを追加します。

  1. 実行 ID のタイトルのページで、[Edit state machine] (ステートマシンの編集) を選択します。

  2. [デザイン] モードになっていることを確認してください。

  3. キャンバスで [World] という名前の [パス] 状態を選択し、次に [出力] を選択します。

  4. [結果] ボックスに、"World has been updated!" と入力します。

  5. [Save] を選択します。

  6. (オプション) [定義] 領域では、ワークフローの更新された Amazon States Language の定義を表示します。

    { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Hello", "States": { "Hello": { "Type": "Pass", "End": true } } }, { "StartAt": "World", "States": { "World": { "Type": "Pass", "Result": "World has been updated!", "End": true } } } ], "Next": "PassState" }
  7. [実行] を選択します。

  8. 新しいタブで [実行を開始] ダイアログボックスを開き、次の実行入力を指定します。

    { "IsHelloWorldExample": true }
  9. [実行のスタート] を選択します。

  10. (オプション) [グラフビュー][World] ステップを選択し、次に [出力] を選択します。この出力は、「World が更新されました」です。

ステップ 8: クリーンアップする

ステートマシンを削除するには
  1. ナビゲーションメニューから、[State machines] (ステートマシン) を選択します。

  2. ステートマシンページで、 を選択しHelloWorld削除 を選択します。

  3. [ステートマシンの削除] ダイアログボックスに、delete と入力して削除を確定します。

  4. [削除] を選択します。

    正常に削除されると、緑色のステータスバーが画面の上部に表示されます。緑色のステータスバーには、ステートマシンが削除対象としてマークされていると書かれています。進行中のすべての実行が停止すると、ステートマシンは削除されます。

実行ロールを削除するには
  1. のロールページを開きますIAM。

  2. Step Functions が作成したIAMロールを選択します。例えば、StepFunctions-HelloWorld-role-EXAMPLE などです。

  3. [Delete role] (ロールの削除) を選択します。

  4. [Yes, delete] (はい、削除します) を選択します。