手を動かしながら AWS Serverless Application Model (SAM)について理解を深めるためのハンズオン記事を書いています。記事が溜まってきたので、上から順にやっていけば SAM を使いこなせるような形に改めて構成し直しました。
私の気になる機能を中心に使い方を調べ、ハンズオンに落とし込んでいます。進める中で、不明点や上手くいかない点が見つかれば、遠慮なくコメントいただければと思います。また、こんなことやりたいんだけどできるの?という調査要望(?)も大歓迎です。
AWS SAM とは
AWS が提供しているサーバレスな構成を構築するためのフレームワークです。Cloud Formation の拡張で、Lambda、API GW、DynamoDB の構築をより簡単に行える仕組みとなります。位置づけとしては、Serverless Framework と同じですね。Cloud Formation が裏側で動いているということは、最悪生の CFn テンプレートを書けば、できないことはなにもないと思っています。下記の GitHub で公開されています。
1)初期設定編
まずは開発環境のセットアップについてです。簡単な Lambda Function をデプロイするところまで行います。
- AWS SAM を用いた開発の流れ
- 環境構築
- テンプレートの作成とデプロイ
2)Lambda 編
Lambda Function の作成方法について詳細に見ていきます。具体的には、SAM で下記のような Lambda Function を作成する方法を解説しています。
- 複数の Lambda Function に共通する設定の定義方法
- スケジュール実行したい Lambda Function の作成方法
- Lambda Function から外部モジュールを利用するには
3)DynamoDB 編
Lambda から DynamoDB にデータストアする方法を見ていきます。
- DynamoDB テーブルの作成方法
- Lambda から DynamoDB にデータ挿入する方法
4)API Gateway 編
API Gateway を利用して簡単な REST API を作る方法を見ていきます。
- Lambda から DynamoDB のデータを取得する
- API 化する
5)ステージ管理方法
単一テンプレートで複数の環境にデプロイする方法を見ていきます。
- Parameters セクションで環境名のリストを定義する
- Mappings セクションで環境ごとの差分(アクセストークンなど)を定義する
- Parameters で選ばれた環境によって、 Mappings の値を取り分けるように、テンプレートを修正する
- deploy 時にパラメータを指定する
6)IAM ロールの作成
1)でサボってしまっていた、IAM ロールの自動構築について見ていきます。
- IAM ロールの自動作成
- IAM ロールの Lambda Function への割り当て