とりあえずやってみた系。
大した情報ではないが、aws-go-modについてはServerlessFramework本家のサンプルもなく、海外も含め、まだ情報が少なそうだったので一応公開しておく。
誰かのお役に立てればこれ幸い。
aws-go-mod?
ServerlessFrameworkでは、今現在(2019/03/26)、Lambdaのgoランタイムでは以下の3種から選択できる。
- aws-go
- aws-go-dep
- aws-go-mod
後者の2つはパッケージ管理ツールが含まれたものとなる。
それぞれ、dep、Moduleというツールになる。
Moduleはdepの後継版にあたり、今後はModuleが主流になる模様。新規に始める場合はこちらを選んでおきましょう。
実行コマンドの履歴
サービス生成
ServerlessFrameworkコマンドにてサービス生成する。
$ sls create --template aws-go-mod --path test-func $ cd test-func $ ls Makefile gomod.sh hello serverless.yml world
ビルド(失敗)
ビルドしてみるがエラー 🙁
$ make build chmod u+x gomod.sh ./gomod.sh export GO111MODULE=on env GOOS=linux go build -ldflags="-s -w" -o bin/hello hello/main.go hello/main.go:8:2: cannot find package "github.com/aws/aws-lambda-go/events" in any of: /usr/local/Cellar/go/1.10.3/libexec/src/github.com/aws/aws-lambda-go/events (from $GOROOT) /Users/hiroyama/go/src/github.com/aws/aws-lambda-go/events (from $GOPATH) hello/main.go:9:2: cannot find package "github.com/aws/aws-lambda-go/lambda" in any of: /usr/local/Cellar/go/1.10.3/libexec/src/github.com/aws/aws-lambda-go/lambda (from $GOROOT) /Users/hiroyama/go/src/github.com/aws/aws-lambda-go/lambda (from $GOPATH) make: *** [build] Error 1
必要なパッケージをDL。
$ go get -u github.com/aws/aws-lambda-go/lambda
ビルド(リトライ)
成功 🙂
$ make build chmod u+x gomod.sh ./gomod.sh export GO111MODULE=on env GOOS=linux go build -ldflags="-s -w" -o bin/hello hello/main.go env GOOS=linux go build -ldflags="-s -w" -o bin/world world/main.go $ ls Makefile bin go.mod gomod.sh hello serverless.yml world
デプロイ
成功 🙂
$ sls deploy
ちなみに、以下のコマンドでビルドからデプロイまで実施できる。
通常はこっちの方が使うことが多そう。
$ make deploy