Go Lambda 関数のレイヤーを操作する - AWS Lambda

Go Lambda 関数のレイヤーを操作する

Lambda レイヤー は、補助的なコードやデータを含む .zip ファイルアーカイブです。レイヤーには通常、ライブラリの依存関係、カスタムランタイム、または設定ファイルが含まれています。レイヤーの作成には、次の 3 つの一般的な手順が含まれます。

  1. レイヤーコンテンツのパッケージ化。これは、関数で使用する依存関係を含む .zip ファイルアーカイブを作成することを意味します。

  2. Lambda でレイヤーを作成します。

  3. レイヤーを関数に追加します。

Go で書かれた Lambda 関数の依存関係をレイヤーで管理するという方法はお勧めしません。Go で書かれた Lambda 関数が単一の実行可能ファイルにコンパイルされて、関数をデプロイしたときにそのファイルが Lambda に渡されるためです。この実行可能ファイルには、コンパイルされた関数コードがそのすべての依存関係と共に含まれています。レイヤーを使用すると、このプロセスが複雑になります。そのうえ、他に必要なアセンブリがあれば、初期化フェーズ中にいちいちメモリにロードしなければならないため、コールドスタート時間が長くなります。

Go ハンドラーで外部の依存関係を使用する場合は、その依存関係をデプロイパッケージに直接含めます。これにより、デプロイプロセスが簡素化されるうえ、組み込みの Go コンパイラの最適化機能を活かせます。AWS SDK for Go のように依存関係を関数にインポートして使用する方法の例については、「Go の Lambda 関数ハンドラーの定義」を参照してください。