Go の AWS Lambda デプロイパッケージ
Lambda 関数を作成するには、最初に Lambda 関数デプロイパッケージ (コード (Go 実行可能ファイル) と依存関係で構成される .zip ファイル) を作成します。
デプロイパッケージを作成した後、それを直接アップロードできます。またはオプションで先に .zip ファイルを Lambda 関数を作成する同じ AWS リージョンの Amazon S3 バケットにアップロードしておき、その後コンソールまたは AWS CLI を使用して Lambda 関数を作成するときにバケット名とオブジェクトキー名を指定できます。
Go の Lambda ライブラリを go get
でダウンロードし、実行可能ファイルをコンパイルします。
aws-lambda-go のバージョン 1.18.0 以降を使用します。
~/my-function$
go get github.com/aws/aws-lambda-go/lambda
~/my-function$GOOS=linux go build main.go
GOOS
を linux
に設定すると、非 Linux 環境でコンパイルする場合でも、コンパイルされた実行可能ファイルと Go ランタイムとの互換性を確保できます。
実行可能ファイルを ZIP ファイルにパッケージ化してデプロイパッケージを作成し、AWS CLI を使用して関数を作成します。ハンドラーのパラメータは、ハンドラーを含む実行可能ファイルの名前と一致する必要があります。
~/my-function$
zip function.zip main
~/my-function$aws lambda create-function --function-name my-function --runtime go1.x \ --zip-file fileb://function.zip --handler main \ --role arn:aws:iam::
123456789012
:role/execution_role
Windows でのデプロイパッケージの作成
AWS Lambda で動作する .zip を Windows で作成するには、build-lambda-zip ツールのインストールが推奨されます。
上記を実行していない場合には、git%PATH%
環境変数に git
実行可能ファイルを追加します。
ツールのダウンロードには、次のコマンドを実行します。
go.exe get -u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
GOPATH
でこのツールを使用します。Go のデフォルト版インストールがある場合、このツールは通常 %USERPROFILE%\Go\bin
にあります。それ以外の場合は、Go ランタイムをインストールした場所に移動し、次の操作を行います。
cmd.exe で次を実行します。
set GOOS=linux go build -o main main.go %USERPROFILE%\Go\bin\build-lambda-zip.exe -output main.zip main
Powershell で、次を実行します。
$env:GOOS = "linux" $env:CGO_ENABLED = "0" $env:GOARCH = "amd64" go build -o main main.go ~\Go\Bin\build-lambda-zip.exe -output main.zip main