Go 開発者が AWS Lambda 関数を開発するのに役立つライブラリ、サンプル、ツール。
Go での AWS Lambda 関数の作成について詳しくは、公式ドキュメントを参照してください。
// main.gopackage mainimport ( "github.com/aws/aws-lambda-go/lambda")func hello() (string, error) { return "Hello λ!", nil}func main() { // Make AWS Lambdalambda.Start(hello) によるリモート プロシージャ コールに使用できるハンドラー }
AWS Lambda にデプロイするバイナリを準備するには、バイナリを Linux 用にコンパイルし、.zip ファイルに配置する必要があります。 provided
、 provided.al2
、またはprovided.al2023
ランタイムを使用する場合、 .zip ファイル内の実行可能ファイルにはbootstrap
名前を付ける必要があります。 Lambda のデフォルトのアーキテクチャはx86_64
であるため、非 x86 環境からクロスコンパイルする場合は、実行可能ファイルをGOARCH=amd64
でビルドする必要があります。同様に、Lambda 関数が ARM を使用するように設定されている場合は、実行可能ファイルをGOARCH=arm64
でビルドする必要があります。
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go zip lambda-handler.zip ブートストラップ
Linux では、Go コンパイラーのデフォルトの動作は、一部の標準ライブラリ機能 (DNS ルックアップなど) のために、出力実行可能ファイルをシステム libc にリンクします。ビルド環境がデプロイメント環境よりも新しい GNU libc バージョンの Linux ディストリビューションを使用している場合、アプリケーションを Lambda にデプロイすると、 /lib64/libc.so.6: version `GLIBC_X.YZ' not found
ようなエラーが発生して失敗する可能性があります。
ほとんどの Go アプリケーションでは、システム libc にリンクする必要はありません。この動作は、 CGO_ENABLED
環境変数を使用して無効にできます。
CGO_ENABLED=0 go build -o bootstrap main.go zip lambda-handler.zip bootstrap
「CGO の使用」を参照してください。
Windows 開発者は、バイナリを Linux 上で実行可能としてマークする zip ファイルの作成に苦労する可能性があります。 AWS Lambda で動作する .zip を作成するには、 build-lambda-zip
ツールが役立つ場合があります。
ツールを入手する
go.exe インストール github.com/aws/aws-lambda-go/cmd/build-lambda-zip@latest
GOPATH
のツールを使用します。 Go がデフォルトでインストールされている場合、ツールは%USERPROFILE%Gobin
にあります。
cmd.exe内:
set GOOS=linuxset GOARCH=amd64set CGO_ENABLED=0go build -o bootstrap main.go%USERPROFILE%Gobinbuild-lambda-zip.exe -o lambda-handler.zip bootstrap
Powershell で:
$env:GOOS = "linux"$env:GOARCH = "amd64"$env:CGO_ENABLED = "0"go build -o bootstrap main.go ~GoBinbuild-lambda-zip.exe -o lambda-handler.zip ブートストラップ
CGO を必要とするアプリケーションの場合、ビルド環境は、ターゲット Lambda ランタイムと互換性のあるインストールされた GNU libc バージョンを使用する必要があります。そうしないと、 /lib64/libc.so.6: version `GLIBC_X.YZ' not found
ようなエラーで実行が失敗する可能性があります。
ラムダランタイム | GLIBC バージョン |
---|---|
provided.al2023 | 2.34 |
provided.al2 | 2.26 |
provided とgo1.x | 2.17 |
また、Lambda は、.zip ファイルの代わりとなるデプロイメントパッケージとしてコンテナイメージをサポートしています。詳細については、コンテナ イメージの操作に関する公式ドキュメントを参照してください。
関数をデプロイするには、AWS CLI、AWS Cloudformation、および AWS SAM を使用したデプロイに関する公式ドキュメントを参照してください。
イベント モデルを使用して、AWS イベント ソースをモデル化できます。公式ドキュメントには詳細なチュートリアルが記載されています。