Features
- aws samを利用してテンプレートプロジェクトが作れるので楽です
- Makefileは利用するgoライブラリだけをDLするように変更してください
- テンプレートのgo fileを変更して新しいfunctionを作成してください
Requirement
- golang:1.11.4
- pip
- python
- docker (local lambda test)
Installation
- aws-cli
- aws-sam-cli
- golang (1.x)
aws-sam-cli
AWS公式サイトに則って、aws-sam-cliをDLする。
https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
-
pythonとpipを入れる
$ brew install python $ pip install --upgrade pip $ pip install --user --upgrade setuptools
-
aws-cliを入れてconfigureを設定をする
$ pip install awscli --upgrade --user $ aws configure
-
aws samコマンドをセットアップする。
$ pip install --user --upgrade aws-sam-cli ※ 既に古いバージョンを入れてる人は一旦uninsallする $ npm uninstall -g aws-sam-local
-
pathを通す
$ USER_BASE_PATH=$(python -m site --user-base) $ export PATH=$PATH:$USER_BASE_PATH/bin
-
コマンドが使えるかの確認
$ sam --version SAM CLI, version 0.10.0
golang (1.x)
-
golangインストールに使うgoenvのインストール
$ brew install goenv $ goenv -v goenv 1.23.2
-
DLできるgoを確認
$ goenv install -l
-
1.xのgolangをインストール
$ goenv install 1.11.4
-
利用するgolangのバージョンを指定
$ goenv global 1.11.4 $ go version go version go1.11.4 darwin/amd64
※ 切替可能なgolang versionの確認は↓
$ goenv versions
Usage
-
samを利用してテンプレートをインストール
$ sam init --runtime go1.x --name hello
※ 確認
$ cd hello $ tree . ├── Makefile ├── README.md ├── hello-world │ ├── main.go │ └── main_test.go └── template.yaml
-
Makefileを修正して、buildが通るようにする
$ vim Makefile ~ all: deps clean build # <- 追加 deps: # go get -u ./... # <- コメントアウト go get -u github.com/aws/aws-lambda-go/events # <- 追加 go get -u github.com/aws/aws-lambda-go/lambda # <- 追加 ~
-
buildする
$ make
-
Api Gatewayのイベント作成
Api Gatewayがリクエストを受けると、イベントを発行してaws lambdaに渡されます。
このイベントを表しているjsonファイルを作成します。$ sam local generate-event apigateway aws-proxy > get_event.json
-
lambdaをローカルで動かす
sam local invoke を実行すると、lambdaが動きます。$ sam local invoke HelloWorldFunction --event get_event.json
-
localでAPI Gatewayを動かす
$ sam local start-api ~ http://127.0.0.1:3000/
↓のURLにアクセスして、jsonを確認。
http://127.0.0.1:3000/hello