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

zabbixオリジナルアイテム&トリガー

zabbixは標準でもかなりのアイテム&トリガーが入っていますが、オリジナルなものを入れたいときも当然あるかと思います。 そんなときにオリジナルのアイテム&トリガーを入れることができます。 実務ではg …

no image

サーバーの過負荷の発見 理論編

会社のテストサーバー(このブログが入っているサーバー)なんかが重くなってくると、再起動したりしているわけなんですが、CPUやメモリの使用率をみたり、といったシステマティックな運用はしてないです。 本来 …

no image

pidファイルに関して

サーバー上であるサービスを動いている(と思っている)時にstopしようとしたらpidファイルがありませんと怒られました。 pidファイルってよく聞くけどわかっていなかったのでこれを機にメモ。 Linu …

no image

メールヘッダ・インジェクション

Contents1 メールヘッダ・インジェクションとは?2 被害3 対策 メールヘッダ・インジェクションとは? お問い合わせメールなどでメールのヘッダを悪意のある第三者に自由に変更させられてしまう機能 …

no image

PHP_CodeSnifferによるコードチェック

昨日の記事でphpmdという静的解析ツールを調査したんですが、それ以外にも規約にのっとっているかどうかコーディングをチェックできるツールはあります。 PHP_CodeSniffer https://g …