.zip ファイルアーカイブを使用して Go Lambda 関数をデプロイする - AWS Lambda

.zip ファイルアーカイブを使用して Go Lambda 関数をデプロイする

AWS Lambda 関数のコードは、スクリプトまたはコンパイルされたプログラム、さらにそれらの依存関係で構成されます。デプロイパッケージを使用して、Lambda に関数コードをデプロイします。Lambda は、コンテナイメージと .zip ファイルアーカイブの 2 種類のデプロイパッケージをサポートしています。

このページでは、Go ランタイムのデプロイパッケージとして .zip ファイルを作成し、AWS Lambda (AWS Command Line Interface) を使用して関数コードを AWS CLI にデプロイするために .zip ファイルを使用する方法について説明します。

Prerequisites

AWS CLI は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このセクションの手順を完了するには、以下が必要です。

ツールとライブラリ

Lambda は、Go ランタイム用の次のツールとライブラリを提供します。

Go 用のツールとライブラリ

詳細については、GitHub の「aws-lambda-go」をご参照ください。

サンプルアプリケーション

Lambda は、Go ランタイム用の次のサンプルアプリケーションを提供します。

Go のサンプル Lambda アプリケーション

  • blank-go - Lambda の の Go ライブラリ、ログ記録、環境変数、AWS SDK の使用を示す Go 関数。

macOS および Linux での .zip ファイルの作成

次の手順は、go get を使用して GitHub から lambda ライブラリをダウンロードし、go build を使用して実行可能ファイルをコンパイルするためのものです。

  1. GitHub から lambda ライブラリをダウンロードします。

    go get github.com/aws/aws-lambda-go/lambda
  2. 実行可能ファイルをコンパイルします。

    GOOS=linux go build main.go

    GOOSlinux に設定すると、非 Linux 環境でコンパイルする場合でも、コンパイルされた実行可能ファイルと Go ランタイムとの互換性を確保できます。

  3. (オプション) main パッケージが複数のファイルで構成されている場合は、次の go build コマンドを使用してパッケージをコンパイルします。

    GOOS=linux go build main
  4. (オプション) Linux では、CGO_ENABLED=0 set を使用してパッケージをコンパイルする必要がある場合があります。

    GOOS=linux CGO_ENABLED=0 go build main.go

    このコマンドは、標準の C ライブラリ (libc) バージョン用の安定したバイナリパッケージを作成します。このパッケージは、Lambda と他のデバイスでは異なる場合があります。

  5. Lambda は POSIX ファイルアクセス許可を使用するため、.zip ファイルのアーカイブを作成する前に、デプロイパッケージフォルダのアクセス許可を設定する必要がある場合があります。

  6. 実行可能ファイルを .zip ファイルにパッケージ化して、デプロイパッケージを作成します。

    zip function.zip main

Windows での .zip ファイルの作成

次の手順は、go get を使用して GitHub から Windows 用の build-lambda-zip ツールをダウンロードし、go build を使用して実行可能ファイルをコンパイルするためのものです。

注記

上記を実行していない場合には、git をインストールした上で、お使いの Windows の git 環境変数に %PATH% の実行可能ファイルを追加します。

  1. build-lambda-zip ツールを GitHub からダウンロードします。

    go.exe get -u github.com/aws/aws-lambda-go/cmd/build-lambda-zip
  2. GOPATH のツールを使用して、.zip ファイルを作成します。Go のデフォルトのインストールがある場合、このツールは通常 %USERPROFILE%\Go\bin に置かれています。それ以外の場合は、Go ランタイムをインストールした場所に移動し、次のいずれかの操作を行います。

    cmd.exe

    cmd.exe で次を実行します。

    set GOOS=linux go build -o main main.go %USERPROFILE%\Go\bin\build-lambda-zip.exe -output main.zip main
    PowerShell

    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