skillup

技術ブログ

サーバー・ネットワーク

SAM(AWSのサーバーレスフレームワーク)について

投稿日:

LambdaやAPIGatewayをちょこちょこいじってますが、goなどを使っているとローカルでの開発時にはAPIなどと直接連携したりすることはできません。

またデプロイ自体が面倒で画面からポチポチやらないといけないなーと思っていたところ、これらの環境をローカルで実行でき、デプロイまで自動化できるツールがあるとのことでちょっと調査してみました。

SAM

以前、cloudformationやterraformについては調べましたが、サーバーレス系のサービス(Lambda、APIGateway、DynamoDB)専用のフレームワークがそこそこあるようで、

  • AWS SAM
  • ServerlessFramework

がよく使われているようです。

AWSの公式ということもあり、AWS SAMを簡単に使ってみました。

実際の使用

awscliのインストールは前提になるかと思います。

インストール

テスト的に作ったgitのURL

https://github.com/umanari145/sam

プロジェクト作成

上記コマンドを入力しますと、ウィザードが色々と立ち上がりテンプレート的なものが作られます。

一番最初に聞かれる下記のような質問ですが、慣れないうちは1を選択しておけば問題ないかと思います。

テンプレートの見方

実際のビルド、デプロイはプロジェクト内のtemplate.ymlによって行われます。

慣れないうちは見方が大変ですが、Lambda+APIGateWayの最小設定だけでしたら上記で問題ないかと思います。

AWSのサービスは基本的にResourceで定義するのですが、上記のようにトリガー時の処理であるEventsに定義しておくだけでAPIGatewayも作られます。

ローカルでのテスト

APIGatewayのダミーのレスポンスですが、下記の用にして作成可能です。

Lambdaローカル実行は下記コマンドで実行できます。

ローカルでLambda+APIGatewayの仮想環境を構築しており、少し時間(4〜5秒)がかかるので実際の開発時にはやはりテストコードの方が効率がいいかもしれません。

pythonはもっと楽でしたが・・・汗

Lambdaでの注意点

ビルド&デプロイ

実際に定義した後は下記コマンドでAWS側に反映できます。

注意点として当たり前ですが、必ずbuildしてからdeployしましょう(汗)。

実際にAWSにログインして、サービスが作られていればOKです。

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

DNSの仕組み

本日はDNSについて。 とりあえず要点のみ DNSのざっくりとした仕組み ネットワーク上での住所を決める仕組み。 本来はIPがその役割を果たしている. [crayon-6012580a8bf3a298 …

no image

環境構築の手法について

2019年9月現在、PHPは7系(最新は7.3)を使うことが一般的ですが、たまにレガシー案件などでPHP5系を使ったりすることはあります。 まあ7系でも7.0じゃ動かないとか色々な制約あるんですけど・ …

no image

vagrantでの静的ファイルのキャッシュがクリアされない

タイトルのまんまですが、vagrantでapacheを使ってまして、静的ファイルのキャッシュがクリアされないと言う問題が発生しました。 vagrantは結構長い間使ってましたが、今まで素のhtmlを書 …

no image

VPCでEC2+RDSを構築

以前の記事で、VPCを使ってEC2の環境を作りましたが、一般的にwebアプリはwebサーバーとDBがセットになることがほとんどだと思いますので、AWSでこの環境を構築してみようと思います。 Conte …

no image

WinSCPの活用法

WinSCPの活用方法などについて WinSCPでZIPの解凍、ZIPへの圧縮を右クリックからカスタムコマンドで実行できるようにする。 特にzipでファイルを固める処理はよくやるので覚えておきましょう …