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

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

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

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

注記

Step Functions では、ワークフローはステートマシンと呼ばれ、一連のイベント駆動型ステップです。ワークフローの各ステップはステートと呼ばれますTask状態は、AWSAWS Lambdaなどの別のサービスが実行する作業単位を表します。TaskAWSステートは任意のサービスまたは API を呼び出すことができます。詳細については、次を参照してください。

Lambda 関数はサーバーレスで記述も簡単なので、LambdaTask はステートに適しています。AWS Management Console や使い慣れたエディタでコードを作成できます。関数用のコンピューティング環境を提供して実行する細かい部分は AWS が処理します。

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

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

重要

Lambda 関数がステートマシンと同じ AWS アカウントと AWS リージョンの下にあることを確認します。

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

  2. [Create function] ページで、[Author from scratch] を選択します。

  3. [Basic information] (ベーシックな情報) セクションで、Lambda 関数を構成:

    1. [Function name] (関数名) に HelloFunction と入力します。

    2. ランタイム」では、Node.js 14.x を選択します。

    3. [Change a new role with basic Lambda permissions] で、[Create a new role with basic Lambda permissions] を選択します。

    4. [Create function] (関数の作成) を選択します。

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

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

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

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

  5. [Deploy‬] (デプロイ) をクリックします。

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

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

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

  2. [テストイベントの設定] ダイアログボックスで、[イベント名]HelloEvent ボックスに入力します。

  3. データ例を以下に置き換えます。

    { "who": "AWS Step Functions" }

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

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

  5. HelloFunctionページで [テスト] を選択し、新しいデータを使用して Lambda 関数をテストします。

    テストの結果は [実行結果] タブに表示されます。

  6. [実行結果] タブを選択して出力を確認します。

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

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

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

    重要

    ステートマシンが、前に作成した Lambda 関数と同じ AWS アカウントおよびリージョンにあることを確認します。

  2. 「作成方法の選択」 ページで、「ワークフローを視覚的にデザインする」を選択します。

  3. タイプ」では、デフォルトの選択である「標準」のままにします。

  4. [Next] (次へ) を選択します。これにより、Workflow Studio が開きます。

  5. 左側のステートブラウザから、アクションパネルを選択します

    1. AWS LambdaInvoke API を「最初の状態をここにドラッグ」というラベルの付いた空の状態にドラッグアンドドロップします

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

    1. [構成] を選択し、必要に応じて州名を編集します

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

    3. ペイロードドロップダウンリストのデフォルト選択のままにします

  7. [Next] (次へ) を選択します。

  8. 生成コードの確認ページでアクションとInspector パネルでの選択に基づいて自動的に生成されるステートマシンの Amazon States Language (ASL) 定義を確認します。

  9. [Next] (次へ) を選択します。

  10. [Name for your state machine] (ステートマシンの名前) に、例えば LambdaStateMachine と入力します。

    注記

    ステートマシン、実行、アクティビティ名は 1~80 文字で、アカウントと AWS リージョンが一意である必要があり、以下のものを含めることはできません。

    • 空白

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

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

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

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

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

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

  11. 実行ロール」の「権限」セクションで、「新しいロールの作成」を選択します。

  12. Create State Machine(ステートマシンの作成)を選択します。

ステップ 4: 新しい実行をスタートする

ステートマシンを作成した後、実行をスタートします。

  1. LambdaStateMachineページで、[実行開始] を選択します。

    [Start execution] (実行開始) ダイアログボックスが表示されます。

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

    注記

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

  3. 実行入力領域で、サンプルデータを以下で置き換えます。

    { "who" : "AWS Step Functions" }

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

  4. [Start Execution] (実行のスタート) を選択します。

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

  5. 実行結果を表示するには、[Execution output] (実行出力) タブを選択します。

注記

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