AWS Lambdaの使い方
さて、ここからは実際のAWS Lambdaの使い方について簡単な例をもとに見ていきます。
例1:ユーザアプリケーションのイベントを処理する
AWS Lambdaのコンソールを利用して、ユーザアプリケーションのイベントを処理する一番シンプルな例を実際にやっていきます。ここではマネージメントコンソール上でLambdaファンクションを作成します。コードはコンソール上で提供されているHelloWorldのサンプルコードを利用します。また、イベントに関してもコンソール上で提供されているサンプルのイベントデータを使って手動でファンクションを実行します。実行すると画面上にログが出力されるのでファンクションが実際に動いたことが確認できます。また、このログは自動的にAmazon CloudWatchへも連携されます。
まずは、マネージメントコンソールにサインインし、AWS Lambdaのコンソールを開いてください。まだ何もLambdaファンクションが作成されていない場合は「Get Started Now」というボタンが表示されていますのでそれをクリックします。
もし以前にLambdaファンクションを作成したことがある場合は、代わりに全ファンクションのリストが表示されているはずです。その場合は画面上部の「Create a AWS Lambda function」をクリックします。
そうすると新しいLambdaファンクションを作成する画面が表示されますので、詳細を入力していきます。
まず、新しいLambdaファンクションに名前を付け、説明書きを加えます。ここではHelloWorldとしています。
次に実際のコードですが、今回は組み込みのインラインエディタを利用します。また、あらかじめ用意されているテンプレートを使ってテストしますので、Code TemplateのドロップダウンリストからHelloWorldを選んでください。
実際のコードの中身は以下のようなシンプルなものです。
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 };
コード上の"handler"がHandler Nameとなります。また、パラメータとして受け取るeventに実際のイベントデータが入ってきます。上記のコードではイベントデータのkey1、key2、key3の値をそれぞれログ出力しています。
続けて、実行時にどのIAMロールを利用するかを指定します。ここで設定するIAMロールはExecution roleの方です。事前に作成済みのものをドロップダウンリストから選択して適用することも可能ですし、この場で新たに作成することも可能です。今回は新規に作成します。「Create/Select Role」と書かれたボタンをクリックします。
ボタンをクリックするとIAMロールの設定画面が表示されますが、IAMロールの箇所が「Create a new role」となっていることを確認し、「Allow」をクリックします。こうすることでデフォルトでファンクション名を元にした名前で必要な権限を持ったIAMロールが作成されます。
Advanced settingsのセクションはデフォルトで選択されている値のままとします。メモリサイズやタイムアウト時間を変更する場合はこのセクションで設定します。
最後に「Create Lambda function」をクリックすることでLambdaファンクションが作成され、コンソール上にリスト画面が表示されます。
では、早速作成したファンクションをテストしていきます。今回はコンソール上で用意されているテスト画面でサンプルのイベントデータを利用してテストします。
Lambda: Function Listのページでファンクション名の左にある三角のアイコンをクリックし、ファンクションの情報を展開します。「Edit/Test」というボタンが表示されるのでこちらをクリックします。
表示された画面でSample EventにCustomを選択して「Invoke」をクリックします。
画面下部に実行結果のログが表示されるので内容を確認します。
メッセージとしてサンプルのイベントデータに含まれるkey1、key2、key3にそれぞれ対応したvalue1、value2、value3という値が表示されていることが分かります。また、ここには実際に実行された処理時間や使用されたメモリサイズの情報なども出力されています。