GoはシングルバイナリでLambdaと相性が良いらしい・・・といったレベルの初心者なので、まずは公式のドキュメントのとおりにやってみる。
go mod init main
して、go.mod
を作成し、main.go
に例示されたコードを張り付ける
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/lambda"
)
type MyEvent struct {
Name string `json:"name"`
}
func HandleRequest(ctx context.Context, event *MyEvent) (*string, error) {
if event == nil {
return nil, fmt.Errorf("received nil event")
}
message := fmt.Sprintf("Hello %s!", event.Name)
return &message, nil
}
func main() {
lambda.Start(HandleRequest)
}
次はこちらのドキュメントに従って、Lambdaに実行ファイルをデプロイする。
LambdaのCPUはarm64とするため下記でビルドし、実行ファイルを生成する。
GOOS=linux GOARCH=arm64 go build -tags lambda.norpc -o bootstrap main.go
Lambdaにアップロードするため、zip myFunction.zip bootstrap
でzipに圧縮する。
次はLambdaのコンソールから、関数を作成する。Goで実行するため、Amazon Linux2023ランタイムを選択。