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

大規模Webサービス技術入門 イントロ

一応WEBサービスを日々改修していますが、データが日々ふえ、大規模なサービスの対処法などを勉強する必要があるため、「大規模サービス技術入門」を少しずつ読んでいこうと思います。 ポイント データはディス …

no image

URLのリライトに関して

laravelのアプリをサブディレクトリ(notサブドメイン)に配置しなくてはならないケースがあり、.htaccessと格闘したのでメモを。 このパターンはハマりが多いですね・・・ http://sk …

no image

Terraform入門(シンプルなEC2の構築)

前回の記事でcloudformationとterraformの比較や紹介をしましたが、terraformがとっつきやすかったため、簡単なサンプルとメモを。 Contents1 インストール2 実行手順 …

no image

Dockerでのredis活用(redisinsightなどについて)

引き続きdockerネタですがredisを使ったネタに関して。 redis自体は以前のエントリーでも説明しましたが、一般的なキャッシュサーバーかと思います。 今回はredis自体の説明ではなくdock …

no image

firewall復習 ansibleコマンドもかねて

CentOS7ではファイアーウォールの設定をfirewallというコマンドで行います。要はportのブロックですね。 以前下記リンクでもfirewallについて書いたんですが、あまり理解もできていなか …

アーカイブ