翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lambda を使用する Step Functions ステートマシンの作成
このチュートリアルでは、AWS Step FunctionsAWS Lambda関数を呼び出すためのシングルステップワークフローを作成します。
Step Functions では、ワークフローはステートマシンと呼ばれ、一連のイベント駆動型ステップです。ワークフローの各ステップはステートと呼ばれます。Task
状態は、AWSAWS Lambdaなどの別のサービスが実行する作業単位を表します。Task
AWSステートは任意のサービスまたは API を呼び出すことができます。詳細については、次を参照してください。
Lambda 関数はサーバーレスで記述も簡単なので、LambdaTask
はステートに適しています。AWS Management Console や使い慣れたエディタでコードを作成できます。関数用のコンピューティング環境を提供して実行する細かい部分は AWS が処理します。
ステップ 1: Lambda 関数を作成する
Lambda 関数はイベントデータを受け取り、グリーティングメッセージを返します。
Lambda 関数がステートマシンと同じ AWS アカウントと AWS リージョンの下にあることを確認します。
-
Lambda コンソールを開き
、[関数の作成] を選択します。 -
[Create function] ページで、[Author from scratch] を選択します。
-
[Basic information] (ベーシックな情報) セクションで、Lambda 関数を構成:
-
[Function name] (関数名) に
HelloFunction
と入力します。 -
「ランタイム」では、Node.js 14.x を選択します。
-
[Change a new role with basic Lambda permissions] で、[Create a new role with basic Lambda permissions] を選択します。
-
[Create function] (関数の作成) を選択します。
-
Lambda 関数が作成されたら、ページの右上隅に表示されている関数の Amazon リソースネーム (ARN) をコピーします。ARN をコピーするには、をクリックします
。ARN の例を以下に示します。
arn:aws:lambda:us-east-1:123456789012:function:HelloFunction
-
-
Lambda
HelloFunction
関数の次のコードをページのコードソースセクションにコピーします。exports.handler = (event, context, callback) => { callback(null, "Hello from " + event.who + "!"); };
このコードは、関数に渡された
event
オブジェクトから提供された入力データのwho
フィールドを使用して、挨拶をアセンブルします。後で新しい実行をスタートするときに、この関数の入力データを追加します。callback
メソッドによって、関数からアセンブルされた挨拶が返されます。 -
[Deploy] (デプロイ) をクリックします。
ステップ 2: Lambda 関数をテストする
Lambda 関数をテストしてオペレーションを確認します。
-
[Test] (テスト) を選択します。
-
[テストイベントの設定] ダイアログボックスで、[イベント名]
HelloEvent
ボックスに入力します。 -
データ例を以下に置き換えます。
{ "who": "AWS Step Functions" }
"who"
エントリは Lambda 関数のevent.who
フィールドに対応し、挨拶を完了させます。ステートマシンを実行するときも同じ入力データを入力します。 -
[作成] を選択します。
-
HelloFunction
ページで [テスト] を選択し、新しいデータを使用して Lambda 関数をテストします。テストの結果は [実行結果] タブに表示されます。
-
[実行結果] タブを選択して出力を確認します。
ステップ 3: ステートマシンを作成する
Step Functions コンソールを使用して、ステップ
-
Step Functions コンソール
を開き、[Create a state machine] (ステートマシンの作成)] を選択します。 重要 ステートマシンが、前に作成した Lambda 関数と同じ AWS アカウントおよびリージョンにあることを確認します。
-
「作成方法の選択」 ページで、「ワークフローを視覚的にデザインする」を選択します。
-
「タイプ」では、デフォルトの選択である「標準」のままにします。
-
[Next] (次へ) を選択します。これにより、Workflow Studio が開きます。
-
左側のステートブラウザから、アクションパネルを選択します。
-
AWS LambdaInvoke API を「最初の状態をここにドラッグ」というラベルの付いた空の状態にドラッグアンドドロップします。
-
-
右側のInspector パネルで、Lambda 関数とその名前を設定します。
-
[構成] を選択し、必要に応じて州名を編集します。
-
API パラメータセクションで、関数名のドロップダウンリストで以前に作成した Lambda 関数を選択します。
-
ペイロードドロップダウンリストのデフォルト選択のままにします。
-
-
[Next] (次へ) を選択します。
-
生成コードの確認ページで、アクションとInspector パネルでの選択に基づいて自動的に生成されるステートマシンの Amazon States Language (ASL) 定義を確認します。
-
[Next] (次へ) を選択します。
-
[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 文字のみを使用する名前を選択します。
-
-
「実行ロール」の「権限」セクションで、「新しいロールの作成」を選択します。
-
Create State Machine(ステートマシンの作成)を選択します。
ステップ 4: 新しい実行をスタートする
ステートマシンを作成した後、実行をスタートします。
-
LambdaStateMachine
ページで、[実行開始] を選択します。[Start execution] (実行開始) ダイアログボックスが表示されます。
-
(オプション) 実行を識別するには、[Name] (名前) ボックスに、実行を識別します。デフォルトでは、Step Functions は自動的に一意な実行名を生成します。
注記 Step Functions では、非 ASCII 文字を含むステートマシン、実行、およびアクティビティ名を作成できます。これらの非 ASCII 名は Amazon では機能しません CloudWatch。 CloudWatch メトリクスを確実に追跡できるようにするには、ASCII 文字のみを使用する名前を選択します。
-
実行入力領域で、サンプルデータを以下で置き換えます。
{ "who" : "AWS Step Functions" }
"who"
は Lambda 関数が挨拶する相手の名前を取得するために使用するキー名です。 -
[Start Execution] (実行のスタート) を選択します。
ステートマシンの新しい実行がスタートされ、実行中の実行が表示されている新しいページが表示されます。
-
実行結果を表示するには、[Execution output] (実行出力) タブを選択します。
ステートマシンから Lambda を呼び出す際にペイロードを渡すこともできます。Parameters
フィールドにペイロードを渡して Lambda を呼び出す方法の詳細と例については、を参照してくださいStep Functions で Lambda を呼び出す。