AWS Lambdaを始めてみる(1).ユーザーアプリケーションからのイベントを扱う

2014.11.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

re:Invent 2014の基調講演2日目に発表された新サービス『AWS Lambda』。サービス発表に併せて始まったプレビュー版申し込みに対する利用申請が通った人も出て来たようで、弊社でもAWS Lambdaの利用が(一部アカウントで)出来るようになりました。

そこで当エントリではAWSの公式ドキュメントでも公開されている『Getting Stared』を参考にしながら実際にAWS Lambdaを動かしてみました。当エントリは『Getting Started』のエクササイズの1つ、『HelloWorld』の実践内容となります。

目次

利用ユーザー用にIAM Roleを作成

AWS Lambdaでは、利用に関してはIAM Userを作成し、それを用いる事が推奨されています。対象アカウントでAWS Lambdaが利用可能になったら、まずは利用するためのIAM Userを作成する事から始めましょう。以下手順に従いIAMユーザーを作成後、そのユーザーでAWS Lambdaを操作する事にしてみます。(ちなみに文中ではAdministrator Access権限を保有するユーザーを作成しています。Power Userアクセスであったり、必要最低限の権限を保有しているユーザーを作成する方がより安全なのかなと考えますが、この辺りは何か意図があるのでしょうか?)

Lambda Functionの作成

作成したIAM UserでAWSにサインイン後、メニューから『Lambda』を選択します。

getting-started-lambda-01

ちなみに現時点(2014/11/15現在)では、利用出来るのは以下3リージョンのみとなっています。

  • US East(N.Virginia)
  • US West(Oregon)
  • EU(Ireland)

getting-started-lambda

Functionが作成されていない状態(初めてメニューにアクセスする場合)であれば、以下のような画面が表示されるはずです。[Get Started Now]をクリック。

getting-started-lambda-02

Lambda: New Functionという画面が出て来ますので、任意のFunction Name等を入力。

getting-started-lambda-03

[Code Template]のドロップダウンから『Hello World』を選択。すると直下のテキストエリアに対応するコードサンプルが表示されるようになります。こちらの内容はそのまま修正する事が可能となっています。Handler Nameで指定されている内容(handler)は3行目のexports.handlerと対応しています。Role Nameの入力が求められていますので、[Create/Select Role]をクリックしてください。

getting-started-lambda-04

以下は実装コードの部分です。

console.log('Loading event');

exports.handler = function(event, context) {
    console.log('value1 = ' + event.key1);
    console.log('value2 = ' + event.key2);
    console.log('value3 = ' + event.key3);
    context.done(null, 'Hello World');  // SUCCESS with message
};

別ウインドウが起動し、IAM Role作成画面が表示されました。

getting-started-lambda-05

▼をクリックすると作成するIAM権限の詳細が確認出来ます。CloudWatch Logsの権限が付与されていますね。[Allow]をクリック。

getting-started-lambda-06

Role Nameに上記画面で設定したIAM RoleのARNを含む内容が設定されました。

getting-started-lambda-07

[Advanced Settings]では、実行時に割り当てるメモリ量とタイムアウト時間が設定出来ます。ここはデフォルト値そのままで進めます。[Create Lambda Function]をクリック。

getting-started-lambda-08

程無くして一覧画面にFunctionが作成されます。実際にどのような動作をするか確認してみましょう。[Edit/Test]をクリック。

getting-started-lambda-09

先程のサンプルコードの内容が編集・実行等出来るようになっています。[Invoke]をクリック。

getting-started-lambda-10

コードが実行され、[Execution Results]に結果が表示されました。

getting-started-lambda-11

コンソール内エディターで値を書き換え、保存・実行も可能です。

getting-started-lambda-12

CloudWatchで内容確認

実行後は、以下の様にFunctionの一覧が表示されるようになります。

getting-started-lambda-15

詳細を見てみましょう。実行内容に関するグラフなどが併せて表示される様になっています。[log]の部分をクリックしてみます。

getting-started-lambda-16

CloudWatch Logの画面に遷移しました。詳細なログ内容が確認出来ています。

getting-started-lambda-17

上記ログ内容とは別に、メトリックス情報も確認する事が可能です。Lambda Function実行後、CloudWatchのメニューに以下の様にサービス名が追加されていました。

getting-started-lambda-13

サンプルを実行しただけですので大した内容は記録されていませんが、こんな感じで情報を確認する事が出来ます。

getting-started-lambda-14

まとめ

以上、AWS Lambdaの入門編チュートリアルその1『Hello World』をやってみましたエントリでした。私自身Node.jsは触った事がほぼ無いのでプログラミングの細かい部分についてはまだ何も分かっていませんが、オペレーション自体はとても簡単ですし、実際に触ってみる事で動作を確認する事も出来ました。これを機会に私もNode.js習熟に努めていきたいと思います。こちらからは以上です。

参考情報: