Serverless FrameworkでGolangのLambda関数を作成してみる
はじめに
先日、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対応、今後とも色々試してみたいと思います。