タイトル通りであります。GO言語でDBにアクセスするLambda用の関数を作りデプロイ、検証までやってみました。(現時点ではDB接続までです。)自分の作業メモとして残していきます。
■GoでLambda用の実行関数ランタイムを作成する
参考にしたのは、こちら。
- https://qiita.com/yuta_vamdemic/items/5a0639e9aced509946d4
- https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-handler.html
まずGoのLambdaプログラミングモデルを実装するパッケージをインストール。
go get github.com/aws/aws-lambda-go/lambda
書き起こしたコードは下記。処理を実行するfunctionを用意(handle_request)し、この関数をmainでコールする lambda.Start の引数とする。
func handle_request(ctx context.Context) (string, error) {
jsonlogger := pkg_log.GetInstance()
jsonlogger.Info("main")
dbErr := pkg_db.Db_base_init()
if dbErr != nil {
slog.Info("DB Error", "err", dbErr)
return "NG", dbErr
}
return "OK", nil
}
func main() {
lambda.Start(handle_request)
}
※自作の関数、モジュールを使っています。
一通り組み終えたら、ビルドして実行ファイルを作成します。この際、関数コードを含む実行ファイルの名前は bootstrap
でなくてはいけません。ですので、下記のようなビルドコマンドを実行します。
GOOS=linux go build -o bootstrap handler.go
handler.go : main関数を含まれるGoファイル。
ビルドされた実行ファイル(bootstrap)をzip化します。(私は7-Zipを利用し、function.zipというファイル名としました。)
こちらを実行するLambda関数を次から用意していきます。