AWS Serverless Application Model 入門ハンズオンシリーズ

 手を動かしながら AWS Serverless Application Model (SAM)について理解を深めるためのハンズオン記事を書いています。記事が溜まってきたので、上から順にやっていけば SAM を使いこなせるような形に改めて構成し直しました。

 私の気になる機能を中心に使い方を調べ、ハンズオンに落とし込んでいます。進める中で、不明点や上手くいかない点が見つかれば、遠慮なくコメントいただければと思います。また、こんなことやりたいんだけどできるの?という調査要望(?)も大歓迎です。

AWS SAM とは

 AWS が提供しているサーバレスな構成を構築するためのフレームワークです。Cloud Formation の拡張で、Lambda、API GW、DynamoDB の構築をより簡単に行える仕組みとなります。位置づけとしては、Serverless Framework と同じですね。Cloud Formation が裏側で動いているということは、最悪生の CFn テンプレートを書けば、できないことはなにもないと思っています。下記の GitHub で公開されています。

github.com

1)初期設定編

 まずは開発環境のセットアップについてです。簡単な Lambda Function をデプロイするところまで行います。

  • AWS SAM を用いた開発の流れ
  • 環境構築
  • テンプレートの作成とデプロイ

www.ketancho.net

2)Lambda 編

 Lambda Function の作成方法について詳細に見ていきます。具体的には、SAM で下記のような Lambda Function を作成する方法を解説しています。

  • 複数の Lambda Function に共通する設定の定義方法
  • スケジュール実行したい Lambda Function の作成方法
  • Lambda Function から外部モジュールを利用するには

www.ketancho.net

3)DynamoDB 編

 Lambda から DynamoDB にデータストアする方法を見ていきます。

  • DynamoDB テーブルの作成方法
  • Lambda から DynamoDB にデータ挿入する方法

www.ketancho.net

4)API Gateway 編

 API Gateway を利用して簡単な REST API を作る方法を見ていきます。

  • Lambda から DynamoDB のデータを取得する
  • API 化する

www.ketancho.net

5)ステージ管理方法

 単一テンプレートで複数の環境にデプロイする方法を見ていきます。

  • Parameters セクションで環境名のリストを定義する
  • Mappings セクションで環境ごとの差分(アクセストークンなど)を定義する
  • Parameters で選ばれた環境によって、 Mappings の値を取り分けるように、テンプレートを修正する
  • deploy 時にパラメータを指定する

www.ketancho.net

6)IAM ロールの作成

 1)でサボってしまっていた、IAM ロールの自動構築について見ていきます。

  • IAM ロールの自動作成
  • IAM ロールの Lambda Function への割り当て

www.ketancho.net