share facebook facebook twitter menu hatena pocket slack

2019.04.09 TUE

ServerlessFrameworkにてaws-go-modテンプレートのサービスをデプロイしてみる

廣山 豊

WRITTEN BY 廣山 豊

とりあえずやってみた系。
大した情報ではないが、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

元記事はこちら

ServerlessFrameworkにてaws-go-modテンプレートのサービスをデプロイしてみる

廣山 豊

廣山 豊

もっか修行中

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。