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

ansibleでのインストール

ansibleについてのメモなど。 Contents1 ansibleって何?2 インストール前準備3 ansibleインストール4 SSH鍵登録5 具体的なソフトウェアのインストール6 参考リンク& …

no image

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

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

no image

MacでのVirtualHost設定

MacでのVirtualHostについて。 Contents1 設定方法2 注意点2.1 httpd -S2.2 httpd: Could not reliably determine the ser …

no image

Linuxでのパス

以前、composerを入れるときに、こちらの記事を書いたのですが、自分が使っているVPSではこの方法で入りませんでした。 調べるとみるとPATHが[crayon-62bedad7c82fd99023 …

no image

SQSについて

以前、少しQueueの登録について書きましたが、今回はAWSのキューサービスであるSQSについて。 以前のリンク Queueの登録と実際の処理に関して SQSのポイントについて簡単にまとめて置きたいこ …

アーカイブ