この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
先日、AWS LambdaでGolangがサポートされました。それに伴い、Serverless FrameworkでもGolangが使えるようにようなので(※)、試してみました。
※ 厳密には以前から追加モジュールなどを使えばできましたが・・・
手順
以下の手順でできました。今回作るプロジェクト名は「goserverless」とします。
1. Serverless Frameworkをインストール
Serverless Frameworkをインストールします。今回は作業フォルダ内のローカルにインストールしました。グローバル領域にインストールする場合は、以降の「serverless」コマンドを「./node_modules/.bin/serverless」などではなく「serverless」としてください。
$ npm install serverless
2. プロジェクト作成
プロジェクトを作成します。
$ ./node_modules/.bin/serverless create -u https://github.com/serverless/serverless-golang/-p goserverless
3. ビルド
ビルドを行います。
$ cd goserverless
$ GOOS=linux go build -o bin/main
main.go:4:2: cannot find package "github.com/aws/aws-lambda-go/lambda" in any of:
cannot find package "github.com/aws/aws-lambda-go/lambda"とパッケージが無いとのエラーメッセージが出たので、これをインストールします。
$ go get github.com/aws/aws-lambda-go/lambda
再度ビルドします。
$ GOOS=linux go build -o bin/main
4. デプロイ
デプロイを行います。
$ ../node_modules/.bin/serverless deploy
(中略)
...............
Serverless: Stack update finished...
Service Information
service: goserverless
stage: dev
region: us-east-1
stack: goserverless-dev
api keys:
None
endpoints:
None
functions:
hello: goserverless-dev-hello
結果確認
結果をマネージメントコンソールで確認してみます。まずはLambdaが出来ているかを見てみます。
次にこのLambdaをテストしてみます。
無事実行できたようです。
まとめ
serverless deploy コマンドでデプロイを行うなど、Serverless Frameworkを使ったことがある場合は、それほど違和感なく使えるのではないかと思います。今回はLambda関数だけ試しましたが、API Gatewayを組み合わせることもできるようです。個人的には待望だったAWS LambdaのGolang対応、今後とも色々試してみたいと思います。