2018年1月24日

待望のAWS LambdaのGolang対応!

Share

公式ドキュメント

サンプル

Lambda Function Handler (Go)を読んで、サンプルを動かしてみる

前提

  • 実行環境
    $ go version
    go version go1.9.3 darwin/amd64
    

サンプルコード

適当なディレクトリを作成して、main.goという名前でサンプルをそのまま貼り付ける。

$ mkdir lambda-go-sample
$ cd lambda-go-sample/
  • 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, name MyEvent) (string, error) {
	return fmt.Sprintf("Hello %s!", name.Name), nil
}

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

パッケージのダウンロード

LambdaでGolangを動かすためにgithub.com/aws/aws-lambda-go/lambdaが必要のようですね。

go get します。

$ go get github.com/aws/aws-lambda-go/lambda

コンパイル

Linux用のコンパイルなのでGOOS=linuxを指定します。

$ GOOS=linux go build -o main

ファイル圧縮

Lambdaにアップロードするためにzipで圧縮する

$ zip main.zip main

Function作成

  • 名前:lambda-go-sample
  • ランタイム:Go 1.x
  • ロール:lambda_basic_excution(動かすだけなので)
aws_console_lambda_1

ファイルアップロード

  1. さきほど作ったzipファイルを指定する
  2. ハンドラをmainに変える(キャプチャ取ったあとに気づいた。。)
  3. 右上の保存ボタンを押してアップロード
aws_console_lambda_2

テストイベント設定

こんな内容のjson形式を指定してあげます。

{
  "name": "テスト太郎"
}

右下の作成ボタンを押す。

aws_console_lambda_3

テスト実行

右上のテストボタンを押すと、緑枠の実行結果が表示されます。

"Hello テスト太郎!"が出てますね。

aws_console_lambda_4

最後に

個人的にはGolang好きなので、色々やってみたい。