

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

# Lambda を使用する Step Functions ステートマシン状態の作成
<a name="tutorial-creating-lambda-state-machine"></a>

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

**注記**  
Step Functions は*ステートマシン*と*タスク*に基づいています。Step Functions では、ステートマシンは*ワークフロー*と呼ばれます。これは、一連のイベント駆動型ステップです。ワークフローの各ステップは*ステート*と呼ばれます。たとえば、[タスク状態](state-task.md)は、別の AWS のサービス や API の呼び出しなど、別の AWS サービスが実行する作業単位を表します。タスクを行うワークフローを実行するインスタンスは、Step Functions では*実行*と呼ばれます。  
詳細については、以下を参照してください。  
[Step Functions とは](welcome.md)
[サービスと Step Functions の統合](integrate-services.md)

Lambda 関数は*サーバーレス*で、記述が容易なため、Lambda は `Task` 状態に適しています。 AWS マネジメントコンソール またはお好みのエディタでコードを記述できます。 は、関数のコンピューティング環境を提供し、実行する詳細 AWS を処理します。

## ステップ 1: Lambda 関数を作成する
<a name="create-lambda-function"></a>

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

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

1. [Lambda コンソール](https://console.aws.amazon.com/lambda/home)を開き、**[関数を作成]** を選択します。

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

1. **[関数名]** に「`HelloFunction`」と入力します。

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

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

   ```
   arn:aws:lambda:region:123456789012:function:HelloFunction
   ```

1. Lambda 関数の以下のコードを ***[HelloFunction]*** ページの **[コードソース]** セクションにコピーします。

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

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

1. **[デプロイ]** をクリックします。

## ステップ 2: Lambda 関数をテストする
<a name="test-lambda-function"></a>

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

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

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

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

   ```
   {
       "who": "AWS Step Functions"
   }
   ```

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

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

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

## ステップ 3: ステートマシンを作成する
<a name="create-state-machine-step"></a>

Step Functions コンソールを使用して、[ステップ 1](#create-lambda-function) で作成した Lambda 関数を呼び出すステートマシンを作成します。

1. [Step Functions コンソール](https://console.aws.amazon.com/states/home)を開き、メニューから **[ステートマシン]** を選択したら、**[ステートマシンの作成]** を選択します。
**重要**  
ステートマシンが、前に作成した Lambda 関数と同じ AWS アカウントとリージョンにあることを確認します。

1. **[空白から作成]** を選択します。

1. ステートマシンに名前を付け、**[続行]** を選択して Workflow Studio でステートマシンを編集します。

1. 左側の[[状態ブラウザ]](workflow-studio.md#workflow-studio-components-states) で、**[アクション]** タブが選択されていることを確認します。それから、**AWS Lambda 呼び出し** API を **[最初の状態をここにドラッグ]** とラベル付けされた空の状態にドラッグします。

1. 右側の [[Inspector]](workflow-studio.md#workflow-studio-components-formdefinition) パネルで、Lambda 関数を設定します。

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

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

1. (オプション) **[定義]** を選択すると、ステートマシンの [Amazon States Language](concepts-amazon-states-language.md) (ASL) の定義が表示されます。この定義は、**[アクション]** タブと **Inspector パネル**での選択に基づいて自動生成されます。

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

   例えば、名前を **LambdaStateMachine** と入力します。
**注記**  
ステートマシン、実行、アクティビティタスクの名前は 80 文字以下にする必要があります。これらの名前は、アカウントと AWS リージョンで一意である必要があり、次のいずれかを含めることはできません。  
空白
ワイルドカード文字 (`? *`)
角かっこ (`< > { } [ ]`)
特殊文字 (`" # % \ ^ | ~ ` $ & , ; : /`)
制御文字 (`\\u0000` - `\\u001f` または `\\u007f` - `\\u009f`)
Step Functions では、ステートマシン、実行、アクティビティ、ラベルに、ASCII 以外の文字を含む名前を使用できます。このような文字を使用すると Amazon CloudWatch がデータを記録できなくなるため、Step Functions のメトリクスを追跡できるように ASCII 文字のみを使用することをお勧めします。

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

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

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

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

   **[ロールの設定を表示]** を選択して **[ステートマシンの設定]** に戻ることもできます。
**注記**  
Step Functions が作成した IAM ロールを削除すると、Step Functions を後で再作成することはできません。同様に、ロールを変更すると (例えば、IAM ポリシーのプリンシパルから Step Functions を削除するなど)、後で Step Functions でそれを元の設定に復元することはできません。

## ステップ 4: ステートマシンを実行する
<a name="start-lambda-function"></a>

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

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

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

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

1. (オプション) 生成されたデフォルトを上書きするカスタム実行名を入力します。
**非 ASCII 名とログ記録**  
Step Functions では、ステートマシン、実行、アクティビティ、ラベルに、ASCII 以外の文字を含む名前を使用できます。このような文字を使用すると Amazon CloudWatch がデータを記録できなくなるため、Step Functions のメトリクスを追跡できるように ASCII 文字のみを使用することをお勧めします。

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

   ```
   {
       "who" : "AWS Step Functions"
   }
   ```

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

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

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

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

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

**注記**  
ステートマシンから Lambda を呼び出す際にペイロードを渡すこともできます。`Parameters` フィールドにペイロードを渡すことによって Lambda を呼び出す方法の詳細と例については、「[Step Functions を使用して AWS Lambda関数を呼び出す](connect-lambda.md)」を参照してください。