Edited at

awsのlamdaがGo言語対応したので雑にsampleを動かしてみる

More than 1 year has passed since last update.

ついにawsのlambdaにGo言語サポートがやってきましたね

Goの対応バージョンは 1.x のようです

とは言うもののawsでGo言語を動かすときの流れは

1. Goのプログラムを書く

2. linux向けバイナリとしてビルドする

3. zipで固めてアップロードする

ということなので仮に 2.x がやってきても普通に動きそうなきはしなくもないのですがまぁ気にしないでおきましょう

本題の方に戻りますが公式の出してる記事に従ってGoのコードを書きます

main.go とかにでもして保存しましょう

package main

import (
"fmt"

"github.com/aws/aws-lambda-go/lambda"
)

type Request struct {
ID float64 `json:"id"`
Value string `json:"value"`
}

type Response struct {
Message string `json:"message"`
Ok bool `json:"ok"`
}

func Handler(request Request) (Response, error) {
return Response{
Message: fmt.Sprintf("Processed request ID %f", request.ID),
Ok: true,
}, nil
}

func main() {
lambda.Start(Handler)
}

これをビルドしてzipに固めます

$ go build -o main

$ zip func.zip main

linux向けにbuildするのでmacの人はGOOSを指定してください

$ GOOS=linux go build -o main

ここまでできたら次に関数を作成します

ランタイムを Go 1.x にして作成します

今回はAWSの他の権限を使わないので空っぽのroleで良いです

スクリーンショット 0030-01-16 午前11.20.37.png

関数が作成されたらzipを関数コードのアップロードからアップロードして保存します

スクリーンショット 0030-01-16 午前11.24.36.png

あとは適当にテストイベントを作って実行すると動きます


参考文献