ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

AWS SAMによるテンプレートプロジェクト作成~ローカルでの実行

AWS SAMを使い、テンプレートのプロジェクトを作成してローカルで実行するまでの
流れについて纏めてみました。

既に色々なサイトで書かれてはいますが、今後の自分のために書いておきます。
前提として

  • AWS SAMの実行環境が用意されていること
  • 動作確認は(Windows Subsysytem for Linuxの)Ubuntu上で行った

となります。

プロジェクト作成

$  sam init --runtime go1.x --name your-project-name

プロジェクトが作成されるので、以下のようにMakefileを編集しました。

.PHONY: deps clean build

all: deps clean build

deps:
	 go get -u github.com/aws/aws-lambda-go/events
	 go get -u github.com/aws/aws-lambda-go/lambda

clean: 
	rm -rf ./hello-world/hello-world
	
build:
	GOOS=linux GOARCH=amd64 go build -o hello-world/hello-world ./hello-world

ローカルでの実行

AWS SAMのインストールでも必要ですが、実行にはDockerが必要となります。
なのでDockerの起動もコマンドに含んでいます。

$ make
$ sam local generate-event apigateway aws-proxy > event.json # API Gatewayのイベントを記述したjsonを作成
$ sudo service docker start    # docker起動
$ sudo service docker status  # docker起動確認
$ sam local invoke HelloWorldFunction --event event.json

テスト

テストのテンプレートとして作成されるので、その実行コマンドになります。

$ go test -v ./hello-world/