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

SSH鍵認証について+CakePHP2でのセッション切れ

鍵認証の設定をしたのでその際のメモなどを。 Contents1 SSH鍵認証2 CakePHP2セッション切れ SSH鍵認証 サーバーで公開鍵・秘密鍵を作成 サーバーで公開鍵を登録 クライアント側で秘 …

no image

zabbixアラートメール

以前、zabbixの基本設定についてこのエントリーでかきました。 今回はzabbixでの何らかの障害が発生した時に、アラートメールを送信したい場合について Contents1 ユーザーの登録&ユーザー …

no image

vueの環境構築に関して(モジュールバンドラの比較やvue-cliコマンドなど)

vueをビルドする場合、一般的にはwebpackなどのモジュールバンドラを使うかと思います。少しまとめて置こうかと思います。 Contents1 モジュールバンドラ1.1 webpack1.2 lar …

no image

ロードバランサーの構築(dockerを例に)

以前から興味のあったロードバランサーをdockerで構築。 Contents1 ロードバランサーとは?1.1 定義1.2 メリット1.2.1 負荷軽減1.2.2 可用性の向上1.2.3 拡張性の向上1 …

no image

Linuxでのパス

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

アーカイブ