.zip ファイルアーカイブを使用して Go Lambda 関数をデプロイする
AWS Lambda 関数のコードは、スクリプトまたはコンパイルされたプログラムとそれらの依存関係で構成されます。関数コードを Lambda にデプロイするには、デプロイパッケージを使用します。Lambda は、コンテナイメージと .zip ファイルの、2 種類のデプロイパッケージをサポートしています。
このページでは、Go ランタイムのデプロイパッケージとして .zip ファイルを作成し、AWS Command Line Interface (AWS CLI) を使用して関数コードを AWS Lambda にデプロイするために .zip ファイルを使用する方法について説明します。Lambda コンソールに .zip ファイルをアップロードするには、「Deployment packages」をご参照ください。
セクション
前提条件
AWS CLI は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このセクションの手順を完了するには、以下が必要です。
ツールとライブラリ
Lambda は、Go ランタイム用の次のツールとライブラリを提供します。
Go 用のツールとライブラリ
-
AWS SDK for Go
: Go プログラミング言語用の公式の AWS SDK。 -
github.com/aws/aws-lambda-go/lambda
: Go 用の Lambda プログラミングモデルの実装。このパッケージは、ハンドラーを呼び出すために AWS Lambda で使用されます。 -
github.com/aws/aws-lambda-go/lambdacontext
: コンテキストオブジェクトから実行コンテキスト情報にアクセスするためのヘルパー。 -
github.com/aws/aws-lambda-go/events
: このライブラリは一般的なイベントソース統合のタイプの定義を提供します。 -
github.com/aws/aws-lambda-go/cmd/build-lambda-zip
: このツールは、Windows で .zip ファイルアーカイブを作成するために使用することができます。
詳細については、GitHub の「aws-lambda-go
サンプルアプリケーション
Lambda は、Go ランタイム用の次のサンプルアプリケーションを提供します。
Go のサンプル Lambda アプリケーション
-
blank-go
– Lambda の Go ライブラリ、ロギング、環境変数、および AWS SDK の使用を示す Go 関数。
macOS および Linux での .zip ファイルの作成
次の手順は、go get
を使用して GitHub から lambda
-
GitHub から lambda ライブラリをダウンロードします。
go get github.com/aws/aws-lambda-go/lambda
-
実行可能ファイルをコンパイルします。
GOOS=linux go build main.go
GOOS
をlinux
に設定すると、非 Linux 環境でコンパイルする場合でも、コンパイルされた実行可能ファイルと Go ランタイムとの互換性を確保できます。 -
(オプション)
main
パッケージが複数のファイルで構成されている場合は、次の go buildコマンドを使用してパッケージをコンパイルします。 GOOS=linux go build main
-
(オプション) Linux では、
CGO_ENABLED=0
set を使用してパッケージをコンパイルする必要がある場合があります。GOOS=linux CGO_ENABLED=0 go build main.go
このコマンドは、標準の C ライブラリ (
libc
) バージョン用の安定したバイナリパッケージを作成します。このパッケージは、Lambda と他のデバイスでは異なる場合があります。 -
実行可能ファイルを .zip ファイルにパッケージ化して、デプロイパッケージを作成します。
zip function.zip main
Windows での .zip ファイルの作成
次の手順は、go get
を使用して GitHub から Windows 用の build-lambda-zip
上記を実行していない場合には、git%PATH%
環境変数に git
の実行可能ファイルを追加します。
-
build-lambda-zip ツールを GitHub からダウンロードします。
go.exe get -u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
-
GOPATH
のツールを使用して、.zip ファイルを作成します。Go のデフォルトのインストールがある場合、このツールは通常%USERPROFILE%\Go\bin
に置かれています。それ以外の場合は、Go ランタイムをインストールした場所に移動し、次のいずれかの操作を行います。
AWS CLI を使用した Lambda 関数の作成
Lambda は、(runtime
内の) 関数のコードに使用する Lambda runtime 環境、(function-name
内の) Lambda 関数の名前、(handler
内の) 関数コード内の Lambda ハンドラー、 および (role
内の) 関数を呼び出すために使用できる実行ロールを認識する必要があります。
Lambda 関数を作成するには、create-function コマンドを使用します。
aws lambda create-function --function-name
my-function
--runtime go1.x --zip-file fileb://function.zip
--handlermain
--role arn:aws:iam::your-account-id
:role/execution_role