LoginSignup
0
0

LambdaでGoのHelloWorldをやってみた

Posted at

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

実行ファイルのbootstrapが生成された。
image.png

Lambdaにアップロードするため、zip myFunction.zip bootstrapでzipに圧縮する。

次はLambdaのコンソールから、関数を作成する。Goで実行するため、Amazon Linux2023ランタイムを選択。
image.png

コードタブのアップロード元→.zipファイルからmuFunction.zipをアップロードする。
image.png

次はテストタブからイベントJSONを変更し、テストを実行。
image.png

"Hello from Test!"が返ってきており無事に実行できた。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0