SAMを使ってテンプレートからサーバーレスな環境を構築する(その①-概説と準備)

AWSのホームページの初心者ハンズオンにある「SAMを使ってテンプレートからサーバーレスな環境を構築する 」の内容を自分のAWSアカウントでやってみました。

ハンズオンではAWSホームページで、10本の Youtube-video でもって、翻訳 Web API を AWS Serverless Application Model (AWS SAM) を用いてテンプレートからシステムを構築します。
( 翻訳 Web API はハンズオンシリーズの前回取り扱い分 )

今回の投稿では、この中から、以下の内容で4パートに分けてあげようと思っています。

  • SAMの概説とCloud9を使った準備作業
  • 小手調べでSAMを使って、「Hello Hands on world!」Lambdaを作った後、SAMでTranslate機能をLambda関数として追加して、IAMも許可する
  • API Gateway を構成に追加後、DynamoDBにログを書き込むようにLambda関数を連携させる
  • SAM CLIも使ってみる。最後にリソースを削除する。

ざっくりと基本構成を図で表します。全体の構成は次のようになります。
今回の投稿は、この構成の中から、SAMの概説とCloud9を使った準備作業です。

SAMを使ってテンプレートからサーバーレスな環境を構築する

当投稿で扱うSAM(AWS Serverless Application Model)とは?

SAM (AWS Serverless Application Model)

  • サーバーレスアプリケーションの環境構築を、設定ファイル (テンプレート) の定義によって、自動生成するサービス。
  • テンプレートを定義することにより、自分好みのサーバーレス環境を簡単な操作によって、手軽に再現できる。
  • AWS CloudFormationの拡張機能であり、CloudFormationで同一の内容を定義するより、簡潔にテンプレートを書くことができる。
  • YAMLもしくはJSON形式で、SAMテンプレートを記述できる。
  • AWS SAMコマンドラインインターフェイス (CLI) のコマンド操作による運用ができる。
SAM(AWS Serverless Application Model)

SAMテンプレートの特徴

  • サーバーレスアプリケーションの構築に特化している。
  • デプロイ時には、本来のCloudformationの文法に変換される。
  • 通常のCloudformationの文法と共存できる。
  • 実行に必要なAWS Identity and Access Management (IAM) ロールも自動で作成される。
  • サーバーレスリソースのみリクエストベースの料金体系( スタートアップ事業に良い従量課金 + 無料枠 )
     ⇒ 【 実行回数(無料枠あり) + 実行時間(単価は確保したメモリによる+無料枠あり)】

AWS SAM テンプレートの書き方

1.SAM テンプレートのリソースタイプ5種類

  • AWS::Serverless::Function
  • AWS::Serverless::Api
  • AWS::Serverless::SimpleTable
  • AWS::Serverless::LayerVersion
  • AWS::Serverless::Application

2.リソース毎に必要なプロパティを記述


AWS::Serverless::Functionであれば...

  • <必須>Handler,Runtime
  • <何れか定義>CodeUri,InlineCode
  • Timeout,MemorySize,Eents, …

AWS SAM Command Line Interface (CLI)

  • 開発者のローカル環境でLambdaやAPIのエンドポイントを起動し、テストを実行することができる。
  • Dockerコンテナを利用するため、Dockerのインストールが事前に必要です。(Cloud9であればセットアップ済み)
  • アプリケーションのビルド、パッケージング、デプロイを行うことができる。
  • 事前に AWS CLI のインストールが必要。(Cloud9であればセットアップ済み)

AWS Cloud9

  • ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。
  • コードエディタ、デバッガー、ターミナルが含まれており、JavaScript、Python、PHP などに不可欠なツールがパッケージ化されている。
  • サーバーレス開発に必要なSDK、ライブラリ、プラグインが事前設定されています。
  • AWSアカウント内のIAMユーザーを招待することで、ペアプログラミングできます。
  • チームメンバー同士お互いのタイピング内容をリアルタイムに確認したり、IDE内のチャット機能でコミュニケーションをとったりできます。
  • Cloud9はEC2上で動きますが、そのホストされるEC2インスタンス+EBS分の料金で使用できます。

SAMによる環境作成には、Cloud9を使います。

AWS Cloud9 による準備

「Create environment」クリックで、操作をスタート

ワークスペース(アプリケーション開発を行う作業場)
に名前を付ける(名前は任意)

「Next step」をクリック

t2.microは無料枠

Platformは、最新の「AmazonLinux2」にしました。

Cost-saving setting を「After 30 minutes」にすると、30分経ったら自動でIDEのEC2が停止されます。

「Create environment」をクリック

Cloud9 起動中画面

Cloud9 が立ち上がった!!

新しいマネージメントコンソールを開く方法

「Go To Your  Dashboard」をクリック

注意!! ▲ をクリックすると操作しずらかった!!

環境整備を行う

「Preferences」をクリック

「Soft Tabs」を、yaml の記述に合わせて
「4」→「2」に変更

これで、準備OK!!
今回は、その1- SAMの概説とCloud9を使った準備作業を行いました。
次回は、その2-小手調べでSAMを使って、「Hello Hands on world!」Lambdaを作った後、
        SAMでTranslate機能をLambda関数として追加して、IAMも許可します。