Lambda を使用する Step Functions ステートマシン状態の作成 - AWS Step Functions

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

Lambda を使用する Step Functions ステートマシン状態の作成

このチュートリアルでは、 AWS Step Functions 関数を呼び出すための単一ステップのワークフローを作成します。 AWS Lambda

注記

Step Functions はステートマシンとタスクに基づいています。Step Functions では、ワークフローをステートマシンと呼びます。ステートマシンは、一連のイベント駆動型ステップです。ワークフローの各ステップはステートと呼ばれます。タスクステートは AWS Lambda、 AWS などの別のサービスが実行する作業単位を表します。タスクステートは任意の API AWS のサービス または API を呼び出すことができます。

詳細については、以下を参照してください。

Lambda 関数はサーバーレスで、記述が容易なため、Lambda は Task 状態に適しています。 AWS Management Console またはお気に入りのエディタでコードを記述できます。 AWS 関数用のコンピューティング環境の提供と実行の詳細を処理します。

ステップ 1: Lambda 関数を作成する

Lambda 関数は、イベントデータを受け取り、グリーティングメッセージを返します。

重要

Lambda AWS AWS 関数がステートマシンと同じアカウントとリージョンにあることを確認してください。

  1. Lambda コンソールを開き、[関数を作成] を選択します。

  2. [関数の作成] ページで、[一から作成] を選択します。

  3. [関数名]HelloFunction と入力します。

  4. その他のすべてのオプションはデフォルトのまま選択して、[関数を作成] を選択します。

  5. Lambda 関数が作成されたら、ページの右上隅に表示されている関数の Amazon リソースネーム (ARN) をコピーします。ARN をコピーするには、 
                                        copy Amazon Resource Name
                                    をクリックします。ARN の例を次に示します。

    arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
  6. Lambda 関数の次のコードをページの [コードソース] セクションにコピーします。HelloFunction

    export const handler = async(event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };

    このコードは、関数に渡された event オブジェクトから提供された入力データの who フィールドを使用して、挨拶をアセンブルします。後で新しい実行をスタートするときに、この関数の入力データを追加します。callback メソッドによって、関数からアセンブルされた挨拶が返されます。

  7. デプロイを選択します。

ステップ 2: Lambda 関数をテストする

Lambda 関数をテストしてオペレーションを確認します。

  1. [テスト] を選択します。

  2. イベント名()で、HelloEvent と入力します。

  3. Event JSON データを次のものに置き換えます。

    { "who": "AWS Step Functions" }

    "who" エントリは Lambda 関数の event.who フィールドに対応し、挨拶を完了させます。ステートマシンを実行する場合にも、同じ入力データを入力します。

  4. [保存] を選択し、次に [テスト] を選択します。

  5. テスト結果を確認するには、[Execution result] (実行結果) で、[Details] (詳細) を展開します。

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

Step Functions コンソールを使用して、ステップ 1 で作成した Lambda 関数を呼び出すステートマシンを作成します。

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

    重要

    ステートマシンが、前に作成した Lambda AWS 関数と同じアカウントとリージョンにあることを確認してください。

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

  3. [選択] を選びます。これにより、デザインモード で Workflow Studio が開きます。

  4. 左側の[状態ブラウザ] で、[アクション] タブが選択されていることを確認します。次に、以下の操作を実行します。

    1. AWS Lambda 呼び出し API を [最初の状態をここにドラッグ] とラベル付けされた空の状態にドラッグします。

      
                                    [State browser] (状態ブラウザ)
  5. 右側の [Inspector] パネルで、Lambda 関数を設定します。

    1. [API パラメータ] セクションで、[関数名] ドロップダウンリストで、以前に作成した Lambda 関数を選択します。

    2. [ペイロード] ドロップダウンリストでは、デフォルトの選択をそのまま使用します。

  6. (オプション) [定義] を選択すると、ステートマシンの Amazon ステートメント言語 (ASL) の定義が表示されます。この定義は、[アクション] タブと [Inspector] パネルの選択によって自動的に生成されます。

  7. ステートマシンの名前を指定します。これを行うには、デフォルトのステートマシン名の横にある編集アイコンを選択します。MyStateMachine次に、[ステートマシンの設定][ステートマシン名] ボックスに名前を入力します。

    例えば、名前を LambdaStateMachine と入力します。

    注記

    ステートマシン、実行、アクティビティタスクの名前は 80 文字以下にする必要があります。 AWS これらの名前はアカウントと地域で一意である必要があり、次のものを含んではいけません。

    • 空白

    • ワイルドカード文字 (? *)

    • 角かっこ (< > { } [ ])

    • 特殊文字 (: ; , \ | ^ ~ $ # % & ` ")

    • 制御文字 (\\u0000 - \\u001f または \\u007f - \\u009f)

    ステートマシンのタイプが [Express] の場合、ステートマシンを複数回実行する際に同じ名前を指定できます。Step Functions では、複数の実行が同じ名前であっても、Express ステートマシンの実行ごとに一意の実行 ARN を生成します。

    Step Functions では、ステートマシン、実行、アクティビティの名前、および ASCII 以外の文字を含むラベルを作成できます。これらの非ASCII名は、Amazonでは機能しません。 CloudWatch CloudWatch メトリクスを追跡できるようにするには、ASCII 文字のみを使用する名前を選択してください。

  8. (オプション) [ステートマシンの設定] で、ステートマシンのタイプや実行ロールなど、他のワークフロー設定を指定します。

    このチュートリアルでは、[ステートマシンの設定] のデフォルト設定をすべてそのまま使用します。

  9. [作成] を選択します。

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

    [ロールの設定を表示] を選択して [ステートマシンの設定] に戻ることもできます。

    注記

    Step Functions が作成した IAM ロールを削除すると、Step Functions を後で再作成することはできません。同様に、ロールを変更すると (例えば、IAM ポリシーのプリンシパルから Step Functions を削除するなど)、後で Step Functions でそれを元の設定に復元することはできません。

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

ステートマシンを作成した後、それを実行できます。

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

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

    [実行を開始] ダイアログが表示されます。

  3. (オプション) 実行を識別するには、[名前] ボックスに名前を指定します。デフォルトでは、Step Functions は自動的に一意の実行名を生成します。

    注記

    Step Functions では、ステートマシン、実行、アクティビティの名前、および ASCII 以外の文字を含むラベルを作成できます。これらの非ASCII名は、Amazonでは機能しません。 CloudWatch CloudWatch メトリクスを追跡できるようにするには、ASCII 文字のみを使用する名前を選択してください。

  4. [入力] 領域で、サンプルの実行データを次のものに置き換えます。

    { "who" : "AWS Step Functions" }

    "who" は Lambda 関数が挨拶する相手の名前を取得するために使用するキー名です。

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

    ステートマシンの実行が開始され、実行中の実行が表示されている新しいページが表示されます。

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

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

    
                            [ステップの詳細] ペインの [出力] タブには、ステートマシンの実行から返された出力が表示されます。
注記

ステートマシンから Lambda を呼び出す際にペイロードを渡すこともできます。Parameters フィールドにペイロードを渡すことによって Lambda を呼び出す方法の詳細と例については、「Step Functions で Lambda を呼び出す」を参照してください。