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]を押下。

step-functions-tutorial-lambda-state-machine_01

任意のRole Nameを設定し、[Next Step]を押下。

step-functions-tutorial-lambda-state-machine_02

[Select Role Type]では[AWS Lambda]を選択します。

step-functions-tutorial-lambda-state-machine_03

Policyの設定。ここは特に何も付与する必要はありません。そのまま[Next Step]を押下。

step-functions-tutorial-lambda-state-machine_04

内容を確認し、[Create Role]を押下。

step-functions-tutorial-lambda-state-machine_05

IAM Roleが作成出来ました。

step-functions-tutorial-lambda-state-machine_06

 

Step 2:Hello World Lambda関数を作成

次いでStep Functionsで連動させるためのLambda関数を作成します。入力値を受け取って挨拶文を返す、というシンプルなものです。

AWS管理コンソールより、Lambdaメニューに遷移。[Create a Lambda function]を押下。

step-functions-tutorial-lambda-state-machine_07

Blueprint選択では[Blank Function]を選択。今回は特に難しい作りのものでは無いため、イチから書き上げる(というかコピペ)ためこの選択で進めます。

step-functions-tutorial-lambda-state-machine_08

Configure triggersについても特に指定は行わず、そのまま[Next]を押下。

step-functions-tutorial-lambda-state-machine_09

function設定について、以下内容で設定を行います。

  • Name: 任意
  • Description: 任意
  • Runtime: Node.js 4.3

またLambda function codeには以下コードを貼り付けます。eventオブジェクトが関数に対して渡され、callbackメソッドを使って値が呼び先に返されます。

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

step-functions-tutorial-lambda-state-machine_10

Lambda関数のIAM Roleを選択します。ここでは[Choose an existing role]を選択し、上記手順で作成したIAM Roleを選択します。

step-functions-tutorial-lambda-state-machine_11

内容を確認、[Create function]を押下。

step-functions-tutorial-lambda-state-machine_12

Lambda functionが出来ました。右上に表示されているARNについては後程使いますのでコピーして控えておきます。

step-functions-tutorial-lambda-state-machine_13

 

Step 3:ステートマシンの作成

Step Functionsにてステートマシンを作成します。管理コンソールメニューにて[Step Functions]をクリック。

step-functions-tutorial-lambda-state-machine_14

ステートマシンの作成については下記エントリと同じ流れのため、割愛します。

設定するコードについては、下記の内容を使い、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-functions-tutorial-lambda-state-machine_15

 

Step 4:ステートマシンの実行

ステートマシン実行。実行の際に用いるパラメータとして、以下文字列を設定します。この内容がLambda関数に渡され、処理が実行される形となります。

{
    "who" : "AWS Step Functions"
}

step-functions-tutorial-lambda-state-machine_20

ステートマシン実行。程なくして結果が表示されました。

step-functions-tutorial-lambda-state-machine_16

入力値がこうなって、

step-functions-tutorial-lambda-state-machine_17

出力がこうなります。

step-functions-tutorial-lambda-state-machine_18

実行結果詳細の内容も確認してみます。処理の1つ1つがログとして追える様になっていますね。

step-functions-tutorial-lambda-state-machine_19

まとめ

という訳でAWS Step Functionsチュートリアル:Lambda編でした。実行、設定は至って簡単、シンプルですね。引き続きチュートリアルについては実践を進めて行こうと思います。こちらからは以上です。

参考: