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