## 祝!Lambda Go Support
ついにAWS LambdaがGo対応されました。
Serverless Frameworkも素早くGo対応を行なってくれてますので、
早速Hello worldしてみて、GoでのServerless開発を始めたいと思います。
Serverless Framework のインストール(アップデート)
まずはServerless Frameworkをグローバルにインストールします。
パッケージ毎に管理されている方はローカルにインストールしてください。
既にインストール済みの方もGo対応以降のバージョンにアップデートしましょう。
$ npm install serverless -g
テンプレート作成
Go用のテンプレートを作成します。
$ serverless create -u https://github.com/serverless/serverless-golang/ -p hello-go-lambda
Serverless: Generating boilerplate...
Serverless: Downloading and installing "serverless-golang"...
Serverless: Successfully installed "hello-go-lambda"
serverless
コマンド部分は sls
コマンドでもよいです。
$ sls create -u https://github.com/serverless/serverless-golang/ -p hello-go-lambda
Serverless: Generating boilerplate...
Serverless: Downloading and installing "serverless-golang"...
Serverless: Successfully installed "hello-go-lambda"
必要パッケージの取得 ※ 12/20追記
その後必要なパッケージを取得します。
今回の場合、 github.com/aws/aws-lambda-go/lambda
ですね
@shinriyo@githubさんに教えてもらい気付きました。
ありがとう御座います!!
$ go get github.com/aws/aws-lambda-go/lambda
main.go確認
作成したテンプレートのディレクトリ内に main.goがあるので開いてみます。
Response返すだけのプログラムの様です。今回は、動かす事が目的なのでそのまま使用します。
$ cd hello-go-lambda
$ vim main.go
package main
import (
"github.com/aws/aws-lambda-go/lambda"
)
type Response struct {
Message string `json:"message"`
}
func Handler() (Response, error) {
return Response{
Message: "Go Serverless v1.0! Your function executed successfully!",
}, nil
}
func main() {
lambda.Start(Handler)
}
build
先程のプログラムを buildします。
lambdaの動いている環境は linuxなのか、クロスコンパイル設定値 GOOSを linuxにしておきます。
※この設定をしていないと、実行時にエラーになります。
$ GOOS=linux go build -o bin/main
$ ls -R
README.md bin/ main.go serverless.yml
./bin:
main*
bin配下にmainコマンドが出来てます。
リージョン変更
デフォルトではus-east-1
にデプロイされてしまうので、serverless.yml
の設定を変更しておきます。
$ vim serverless.yml
# you can overwrite defaults here
# stage: dev
# region: us-east-1
↓
# you can overwrite defaults here
stage: dev
region: ap-northeast-1
deploy
deploy します。
$ sls deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service .zip file to S3 (2.98 MB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
................
Serverless: Stack update finished...
Service Information
service: hello-go-lambda
stage: dev
region: ap-northeast-1
stack: hello-go-lambda-dev
api keys:
None
endpoints:
None
functions:
hello: hello-go-lambda-dev-hello
※動作させれば良いという考えなのでAPIKeyなかったりします。ちゃんと使う人は確実に設定お願いします。
実行
$ sls invoke -f hello
{
"message": "Go Serverless v1.0! Your function executed successfully!"
}
楽勝ですね。
まとめ
簡単なので、みなさん是非やってみましょう!
追記
Q.Hello worldして無くない?
A.忘れてた