最近AWSに興味を持ち始めまして、
特にイベントをトリガーにした処理ができるLambdaを使いたかったので、この本を読んでみました。
読んだ内容を忘れないよう、感想や概要を書き残しておきます。
実践AWS Lambda ~「サーバレス」を実現する新しいアプリケーションのプラットフォーム~
- 作者: 西谷圭介
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/06/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
全体的な感想
AWSのアカウント取得方法や基本的な用語説明、画面キャプチャなど丁寧に記載されているので、
初めてAWSを触る私にとって非常にわかりやすい内容になっていました。
ただ、画面キャプチャが最新ではなかったので、設定したい項目がなかったり戸惑うことも多かったです。
��実際に操作して、慣れていくうちに勘でわかるようになりました。)
構成
1.AWS Lambda とは
Lambdaの特徴が書かれています。簡単にまとめると下記内容です。
2014年11月に発表されたAmazon Web Serviceのひとつ
インフラストラクチャの運用管理が不要 -- イベントの発生頻度によってLambda関数の数が自動的にコントロールされるのでサーバ管理が必要ない
イベントドリブン -- 項目の変更など、何らかのイベントに対応してLambdaに登録されたコードが実行される
高いコスト効率 -- Lambda関数の実行リクエスト回数と、実行時間に対して料金が発生するので余計な課金が発生しない
2.AWS利用の準備
AWSのアカウント取得手順、IAMやリージョンといった基本的な用語説明が記載してあります。
3.AWS Lambdaの使い方
実際にLambda関数を作成して実行するまでの手順が載っているので、この章はよく読んだほうが良いと思います。
基本的な「hello-world」関数の実行、アクセス権限の設定、ログの見方、テスト方法、
バージョンの発行、パッケージの作成、環境変数の設定などが記載されています。
イベントの発生元として使えるAWSリソースの紹介もされています。
Lambda関数を呼び出すトリガーにしたいものによって使い分けが必要です。
また、リソースごとに呼び出しタイプが非同期と同期で分かれています。
Amazon S3 -- 画像ファイルをアップロードしたことをトリガーにできる。
Amazon DynamoDB -- テーブルに対する項目の更新などをトリガーにできる。
Amazon SNS -- SNSを利用した通知処理をトリガーにできる。CloudWatchのアラーム通知先にSNSトピックを指定できるので、これを利用してアラームに対応する処理をLambda関数として実装することで自動化ができる。
Amazon SES -- Eメール、メッセージの受信をトリガーにできる。
Amazon Cognito -- 認証データの更新をトリガーにできる。
AWS CloudFormation -- スタックの作成、更新、削除をトリガーにできる。
Amazon CloudWatch Logs -- ログイベントの処理、分析、他システムへの連携ができる。
Amazon CloudWatch Events -- AWSリソースの状態変化を示すイベントをトリガーにできる。また、トリガーにするルールの設定や、定期的にスケジュール実行することができる。
AWS Config -- AWSリソースの作成、変更、削除をトリガーにできる。不適切なリソース操作を知ることができる。
Amazon Echo -- Alexa Skillを実行するプラットフォームとして利用できる。
Amazon Lex -- Lexが認識した音声をトリガーにできる。
4.プログラミングモデル
Node.js、Python、Java、C# の言語で関数を作成する場合のコードが載っています。
見比べてみるとPythonが1番見やすくて簡潔に書かれているので、私としてはPythonで書きたいです。
5.サーバレスとは
サーバレスというコンセプトの中核を担うのがLambdaだということ、
サーバレスに対してのよくある誤解などが記載されています。
私も勘違いしていた部分があったので、忘れないように書いておきます。
サーバレスになれば全く運用が必要なくなるわけではなく、今までと異なる運用方法として存在し続ける
インフラ費用が10分の1になるなど極端に安くなるわけではなく、リクエスト数が多い場合はそれなりの費用が発生するのでトータルコストをよく考える必要がある
サーバレスといえども処理の異常を検知するのはユーザの責任なので、適切なログ出力をしてモニタリングをすることは必要
6.ユースケース
Lambdaを利用した処理パターンが紹介されています。
下記の処理パターンが紹介されているのですが、必要になった場合に改めてよく読み直したいです。
7.サーバレスで作るアプリケーション例
3章にあったhello-worldのように、下記をイベントリソースとしたLambda関数の作成手順が載っています。
IAMユーザーの作成から丁寧に記載されているので、この手順を実際にやると理解が深まりそうです。
ソースコードはNode.jsで書かれています。
8.サーバレスアプリケーションのデプロイ
AWS SAMを使用することで、Lambda関数とイベントリソースなどを1つのテンプレートファイルで定義できるそうです。
作成したLambda関数をSAMファイルとしてエクスポートすることもできます。
また、AWS CodeBuild、AWS CodePipelineを使用することで、AWS SAM定義ファイルを用いたデプロイ自動化ができるようです。
手順も詳細に載っていてわかりやすかったので、今度実際にやってみたいと思います。
読み終えた感想
私は読むよりも実際に触ってみたい気持ちが強く、
3章のhello-world関数を実行した後からネットの情報で別の関数を作り始めたのですが、
ネットの情報だと基本的なことを知っている前提で書かれており、細かい手順が省略されていることが多いように感じました。
そのため、上手く動作しなくて調査に時間がかかってしまったので、
最低でも3章を全て読み切ってから実際に自分で関数を作成したほうがよかったと反省しています。
もっと言えば、7章のアプリケーション例を実際にやってみたほうがスムーズに理解が深まったのではないかと思いました。
初めてAWSを触る私にとって、非常に理解が深まる1冊でした。
また、Lambdaを使う上で困ったり忘れたりしたときに、この書籍を参考にしようと思います。