『実践AWS Lambda』サポートサイト
このページは『実践AWS Lambda』のサポートページです。
お知らせ
「AWS Summit Tokyo 2017」で本書をご購入いただいた方で、シリアルコードを入力すると「ご入力いただいたシリアルコードは使用済みです。」と表示されてしまう場合、お手数ですが、pc-books@mynavi.jpまで、メールにてお問い合わせいただけますでしょうか。
その際、本文のどこかに配布したシリアルコードの番号を記載してください。
お手数をおかけして申し訳ございません。
サンプルファイル
本書の7章で使用しているサンプルファイルは、こちらよりダウンロードできます。
補足情報
2017/11のアップデートにより、AWS Lambdaのコンソール画面が大きく変更になりました。
以下では、Chapter3の「3-1 Hello World」について、画面変更後の操作を紹介します。
●Lambda関数の作成
===(以下P.029部分より)===
まずは、マネジメントコンソールにサインインし、AWS Lambda のコンソール(https://console.aws.amazon.com/lambda/home)にアクセスします。
まだ何もLambda関数が作成されていない場合は次のような画面が表示されますので「関数の作成」というボタンが表示されていますのでそれをクリックします(図3-1-1)。
図3-1-1
そうするとLambda関数の作成画面となり、設計図の選択画面が表示されます(図3-1-2)。
今回はNode.js 6.10 の「hello-world」という関数を作成しますので①の「一から作成」が選ばれている状態で進めます。では、まずは作成するLambda関数の名前を設定します。②の入力欄に任意の名前を入力してください(ここではhello-worldとします)。③の「ランタイム」は「Node.js 6.10」のままにしておきます。
図3-1-2
次にロールを設定します。ここで設定するロールとは2-2で解説したIAMロールのことです。作成する場合はさらに基本的なポリシーが定義されたテンプレートを選択して作成することも、完全に新たに作成することも可能です。今回はテンプレートから新しいIAMロールを作成することとします(図3-1-3)。
図3-1-3
①のプルダウンで「テンプレートから新しいロールを作成」を選択します。
②のロール名は入力欄に任意の名前を入力してください(ここではlambda-basic-executionとしています)。
そして、③のポリシーテンプレートから「テストハーネスのアクセス権限」を選択します。
最後に「関数の作成」ボタンをクリックします。
問題なく作成されると成功のメッセージとともに画面が関数の設定画面にうつります(図3-1-4)。その際、裏側ではファイルにコードの内容が保存され、デプロイするためのパッケージが作成されています(zipで圧縮されたものです)。
図3-1-4
また、「関数のコード」にあらかじめ用意されたコードが入力済みとなっています。このコードは実行するとレスポンスとして"Hello from Lambda"と出力するだけのアプリケーションです(図3-1-5)。
図3-1-5
また、AWS Lambda がLambda 関数を呼び出す際のコード内の関数名である「ハンドラ」として「index.handler」が指定された状態となっています(図3-1-6)。
図3-1-6
それ以外にも「基本設定」では「メモリ」が128MB、「タイムアウト」は3秒、「ネットワーク」の「VPC」では「非VPC」がそれぞれ選択された状態となっています(図3-1-7)。「非VPC」というのはAmazon Virtual Private Cloud(Amazon VPC)内のリソースにアクセスしないということを示しますが、これについては詳細を後ほど説明しますのでこの段階では気にしないでください。
図3-1-7
これで「hello-world」関数の作成は完了しました。このコンソールにはいくつかのタブがあり、それぞれ以下のようになっています。
・ 設定 - Lambda 関数の現在の設定内容を確認できます。また、必要に応じて変更をすることも可能です
・ モニタリング - Lambda 関数が呼びだされた回数や実行時間などの様々なCloudWatch メトリクスを表示できます
●P.035 Lambda関数の実行
先ほどの続きからであれば図3-1-4で①の「テストイベントの設定」をクリックしてください。
別の画面に移っていたり、マネジメントコンソールからサインアウトしていしまっている場合などは再度マネジメントコンソールにサインインした上で「AWS Lambda → 関数 → hello-world」と選択していき、ファンクションの関数を開いた上で①の「テストイベントの設定」をクリックします(図3-1-8)。
図3-1-8
表示された「テストイベントの設定」画面ではテストイベントを定義します。今回は「新しいテストイベントの作成」を選び、「イベントテンプレート」として「Hello World」を利用します。ここでは名前を「HelloWorldTest」としました(図3-1-9)。
図3-1-9
このイベントデータは以下のようなKeyとValueからなるシンプルなJSON形式のデータとなっています。今回のサンプルアプリケーションはイベントのデータについては何も処理しないのでこのまま保存します。
{ "key3": "value3", "key2": "value2", "key1": "value1" }
設定したら画面下の「作成」ボタンをクリックします。元の画面に戻ったら、「テスト」ボタンをクリックして実行します(図3-1-10)。
図3-1-10
正常に実行されるとコンソール上にその結果が表示されます。「詳細」をクリックすると詳細も確認できます(図3-1-11)。
図3-1-11
実行結果のステータスが①に、実行結果の出力が②に、Lambda関数の実行に関するサマリが③に、そして実行に関連するログが④に出力されます。
②の実行結果はコード内でレスポンスした値となります。また、③のサマリにはLambda関数の実行時間や実際に利用されたメモリ量などが表示されています。④の「ログ出力」にはAmazon CloudWatch Logs に出力されたログが表示されています。今回の「hello-world」ではイベントデータの値を読み取って出力するコードになっているのでそれらが正しく出力されていることが確認できます。なお、このようにコンソール上で手動で実行する場合、イベントタイプとしては「RequestResponse」という同期型のイベント呼び出しが行われています。イベントタイプに関しては3-2で詳細に説明します。
さて、何度かテストを実行したらコンソールの「モニタリング」タブを開いてください(図3-1-12)。「モニタリング」タブではAmazon CloudWatch のメトリクスが表示されるという説明をしました。実際にこのページではAWS Lambda で確認可能な6 種類のAmazon CloudWatch メトリクスが表示されています。画面下半分にテスト実行結果が表示されていてすべてのメトリクスが表示されていない場合があります。その場合は画面中ほどの境界線を下にドラッグすることですべてのメトリクスを表示可能です。
図3-1-12
メトリクスの種類は以下のようになっています。
・ 呼び出し - Lambda 関数が呼び出された回数です
・ 所要時間 - Lambda 関数の実際にかかった実行時間(ミリ秒)です。最短時間、最長時間および平均時間が表示されています
・ エラー - Lambda 関数が失敗した回数です
・ スロットリング - Lambda 関数の呼び出しがスロットリングされた回数です。許可されている同時実行数を越えて実行された場合にその呼出しはスロットリングされ実行が制限されます
・ イテレーターの有効期間 - Amazon Kinesis Streams やDynamoDB Streamsといったストリームベースのイベントソースを利用している場合のみに記録されるメトリクスです。レコードがストリームに書き込まれてからLambda で読み取られるまでの時間(ミリ秒)です
・ DLQ エラー - 設定したデッドレターキュー(後述)へエラーになったイベントのペイロードを書き込めなかった回数です
===(以上P.039の「まとめ」前まで)====