Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

AWSのSAM(サーバレスアプリケーションモデル)についてまとめています。

AWSのSAMはサーバレスアプリケーション構築用のフレームワーク

AWSのSAM(Serverless Application Model)は、サーバレスアプリケーションを構築するためのオープンソースフレームワークです。

コマンドラインインタフェースを使って、関数、API、データベース、イベントソースマッピングを記述可能。リソースごとに数行で、任意のアプリケーションを定義し、 YAML を使ってモデリングができます。

また、SAM CLIを使うと、ローカル環境にLambdaに似た実行環境が提供され、コードのステップスルーやデバッグをおこない、AWS上で実行させる前に動作チェックが可能です。

SAM用のCLIには、Linux(CnetOS、Fedra、Ubuntu、Amazon Linux2)用、Windows用、Mac用が用意されています。

LinuxへのAWS SAM CLIのインストール

LinuxのAWS SAM CLIをインストールするには、以下の手順が必要です。

AWS SAMCLIをインストールするには、Githubからインストーラー用zipをダウンロード後に展開し、sudoにて実行します。最後に、samコマンドを実行してバージョンが表示されれば、正常にインストールされていることになります。具体的なコマンドは以下の通りです。

$ wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip
$ sha256sum aws-sam-cli-linux-x86_64.zip
 <64-character SHA256 hash value> aws-sam-cli-linux-x86_64.zip
$ unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
$ sudo ./sam-installation/install
$ sam --version
 SAM CLI, version 1.18.0

関連)LinuxへのAWSSAMCLIのインストール-AWSサーバーレスアプリケーションモデル

AWS SAM CLIの使い方

samコマンドの実際の使い方を見ていきましょう。

参考)チュートリアル:HelloWorldアプリケーションのデプロイ-AWSサーバーレスアプリケーションモデル

sam initでコマンドで、アプリケーションの初期化をおこないます。具体的には、プロジェクト名として指定した名前のディレクトリを作成します。

sam init

-----------------------
アプリケーションの生成:
-----------------------
名前:sam-app
ランタイム:python3.7
依存関係マネージャー:pip
アプリケーションテンプレート:hello-world
出力ディレクトリ: 。

次の手順は、。/ sam-app /README.mdのREADMEファイルにあります。

sam buildで、アプリケーションのビルドをおこないます。デプロイの準備のために、ソースコードをステージングフォルダにコピーします。

sam build

ビルドが成功しました

ビルドされたアーティファクト:.aws-sam / build
ビルドされたテンプレート:.aws-sam / build / template.yaml

次に使用できるコマンド
=========================
[*] Invoke関数:sam local invoke
[*]デプロイ:sam deploy --guided

sam deployで、アプリケーションのデプロイをおこないます。ビルドしたデプロイアーティファクトを取得、パッケージ化してAmazon S3パケットにアップロードして、AWS CloudFormationを使ってアプリケーションをデプロイします。

sam deploy --guided

次の値でデプロイする
===============================
スタック名:sam-app
地域:us-east-1
チェンジセットの確認:False
デプロイs3バケット:sam-bucket
機能:["CAPABILITY_IAM"]
パラメータのオーバーライド:{ }

展開の開始
=====================

チェンジセットが作成されるのを待っています。

CloudFormationスタックチェンジセット
---------------------------------------------------------------------------------------------------------------------------------------------------
操作LogicalResourceIdResourceType
---------------------------------------------------------------------------------------------------------------------------------------------------
+ HelloWorldFunctionHelloWorldPermissionProd AWS :: Lambda :: Permissionを追加します
+ ServerlessRestApiDeployment47fc2d5f9d AWS :: ApiGateway :: Deploymentを追加します
+ ServerlessRestApiProdStage AWS :: ApiGateway :: Stageを追加します

sam local start-apiにて、ローカル環境でアプリケーションを実行します。関数をローカルで実行できる実行コンテナをダウンロードし、実行します。

sam local start-api

2019-07-12 15:27:58 http://127.0.0.1:3000/helloでHelloWorldFunctionをマウント[GET]
2019-07-12 15:27:58これで、上記のエンドポイントを参照して関数を呼び出すことができます。機能の作業中にSAMCLIを再起動/再ロードする必要はありません。変更は即座に/自動的に反映されます。AWS SAMテンプレートを更新する場合にのみ、SAMCLIを再起動する必要があります
2019-07-12 15:27:58 * http://127.0.0.1:3000/で実行中(CTRL + Cを押して終了)

lambci / lambda:python3.7Dockerコンテナイメージのフェッチ......................................。 .................................................。 .................................................。 ..........................................。
2019-07-1215:28:56 / <working-development-path> /sam-app/.aws-sam/build/HelloWorldFunctionを/ var / task:roとしてマウントし、ランタイムコンテナ内で委任
START RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72バージョン:$ LATEST
END RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72

curlコマンドで、アプリケーションにアクセスします。

curl http://127.0.0.1:3000/hello

2019-07-12 15:29:57 app.lambda_handler(python3.7)を呼び出す
2019-07-12 15:29:57共有クレデンシャルファイルでクレデンシャルが見つかりました:〜/ .aws / credentials

lambci / lambda:python3.7Dockerコンテナイメージを取得しています......
2019-07-1215:29:58 / <working-development-path> /sam-app/.aws-sam/build/HelloWorldFunctionを/ var / task:roとしてマウントし、ランタイムコンテナ内で委任
START RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72バージョン:$ LATEST
END RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72
REPORT RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72期間:7.92ミリ秒請求期間:100ミリ秒メモリサイズ:128 MB最大使用メモリ:22 MB
{ "statusCode":200、 "body": " { \" message \ ":\" hello world \ "}"}

sam local invokeで、lambda関数を直接呼び出し、指定した入力イベントを渡します。

sam local invoke "HelloWorldFunction" -e events/event.json

2019-07-01 14:08:42共有クレデンシャルファイルでクレデンシャルが見つかりました:〜/ .aws / credentials
2019-07-01 14:08:42 app.lambda_handler(python3.7)を呼び出しています

lambci / lambda:python3.7Dockerコンテナイメージの取得......................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 .................................................。 ...。
2019-07-0114:09:39ランタイムコンテナ内で委任された/<working-development-path>/sam-app/.aws-sam/build/HelloWorldFunctionを/ var / task:roとしてマウント
START RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72バージョン:$ LATEST
END RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72
REPORT RequestId:52fdfc07-2182-154f-163f-5f0f9a621d72期間:3.51ミリ秒請求期間:100ミリ秒メモリサイズ:128 MB最大使用メモリ:22 MB
{ "statusCode":200、 "body": " { \" message \ ":\" hello world \ "}"}

AWS SAMのまとめ

ポテパンダの一言メモ
  • AWSのSAMは、サーバレスアプリケーション構築のフレームワーク
  • SAMでアプリを作成するんは、SAM CLIを利用する
  • SAM CLIにて、アプリのビルド、デプロイ、ローカル環境でのテストが可能

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。