AWS Step Functionsチュートリアル実践:Lambdaステートマシンの作成と実行 #reinvent
AWS re:Invent 2016で発表された『AWS Step Functions』、Getting Startedの他にもドキュメントではチュートリアルが幾つか用意されています。当エントリではそのうちの1つ、LambdaとStep Functionsを連動させたものについて実践してみた結果をご紹介してみたいと思います。
AWS Step Functionsに関するエントリ一覧は下記関連シリーズをご参照ください。
目次
Step 1:Lambda用にIAM Roleを作成
Step FunctionsでLambdaを実行させる際にはIAM Roleが必要となります。まずはそのIAM Roleを作成するところから進めて行きましょう。管理コンソールのIAMメニューを開き、[Roles]から[Create New Role]を押下。
任意のRole Nameを設定し、[Next Step]を押下。
[Select Role Type]では[AWS Lambda]を選択します。
Policyの設定。ここは特に何も付与する必要はありません。そのまま[Next Step]を押下。
内容を確認し、[Create Role]を押下。
IAM Roleが作成出来ました。
Step 2:Hello World Lambda関数を作成
次いでStep Functionsで連動させるためのLambda関数を作成します。入力値を受け取って挨拶文を返す、というシンプルなものです。
AWS管理コンソールより、Lambdaメニューに遷移。[Create a Lambda function]を押下。
Blueprint選択では[Blank Function]を選択。今回は特に難しい作りのものでは無いため、イチから書き上げる(というかコピペ)ためこの選択で進めます。
Configure triggersについても特に指定は行わず、そのまま[Next]を押下。
function設定について、以下内容で設定を行います。
- Name: 任意
- Description: 任意
- Runtime: Node.js 4.3
またLambda function codeには以下コードを貼り付けます。eventオブジェクトが関数に対して渡され、callbackメソッドを使って値が呼び先に返されます。
exports.handler = (event, context, callback) => { callback(null, "Hello, " + event.who + "!"); };
Lambda関数のIAM Roleを選択します。ここでは[Choose an existing role]を選択し、上記手順で作成したIAM Roleを選択します。
内容を確認、[Create function]を押下。
Lambda functionが出来ました。右上に表示されているARNについては後程使いますのでコピーして控えておきます。
Step 3:ステートマシンの作成
Step Functionsにてステートマシンを作成します。管理コンソールメニューにて[Step Functions]をクリック。
ステートマシンの作成については下記エントリと同じ流れのため、割愛します。
設定するコードについては、下記の内容を使い、Resourceの部分を上記で控えておいたLambda関数のARNを貼り付けて設定します。
{ "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda Function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME", "End": true } } }
Step 4:ステートマシンの実行
ステートマシン実行。実行の際に用いるパラメータとして、以下文字列を設定します。この内容がLambda関数に渡され、処理が実行される形となります。
{ "who" : "AWS Step Functions" }
ステートマシン実行。程なくして結果が表示されました。
入力値がこうなって、
出力がこうなります。
実行結果詳細の内容も確認してみます。処理の1つ1つがログとして追える様になっていますね。
まとめ
という訳でAWS Step Functionsチュートリアル:Lambda編でした。実行、設定は至って簡単、シンプルですね。引き続きチュートリアルについては実践を進めて行こうと思います。こちらからは以上です。