Lambda デプロイパッケージ - AWS Lambda

Lambda デプロイパッケージ

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

コンテナイメージ

コンテナイメージには、基盤となるオペレーティングシステム、ランタイム、Lambda の拡張機能、アプリケーションコードとその依存関係が含まれています。また、これらのイメージには、機械学習モデルなどの静的データを追加することもできます。

Lambda では、コンテナイメージをビルドする際に使用できる、オープンソースのベースイメージのセットを提供しています。コンテナイメージを作成およびテストするには、AWS Serverless Application Model (AWS SAM) コマンドラインインターフェイス (CLI)、またはネイティブなコンテナツール (Docker CLI など) を使用できます。

コンテナイメージをマネージド型 AWS コンテナイメージのレジストリサービスである Amazon Elastic Container Registry (Amazon ECR) にアップロードします。関数にイメージをデプロイするには、Lambda コンソール、Lambda API、コマンドラインツール、AWS SDK を使用して Amazon ECR イメージの URL を指定します。

Lambda コンテナイメージの詳細については、「Lambda のコンテナイメージを使用する」を参照してください。

.zip ファイルアーカイブ

.zip ファイルアーカイブには、アプリケーションコードとその依存関係が集録されています。Lambda コンソールまたはツールキットを使用して関数を作成する際、コードの.zip ファイルアーカイブが、Lambda により自動的に作成されます。

Lambda API、コマンドラインツール、または AWS SDK を使用して関数を管理する場合は、デプロイパッケージを作成する必要があります。関数がコンパイルされた言語を使用しているか、関数に依存関係を追加する場合、デプロイパッケージを作成する必要があります。関数のコードをデプロイするには、Amazon Simple Storage Service (Amazon S3) またはローカルマシンからデプロイパッケージをアップロードします。

Lambda コンソール、AWS Command Line Interface (AWS CLI) を使用してデプロイパッケージとして .zip ファイルをアップロードしたり、Amazon Simple Storage Service (Amazon S3) バケットにアップロードしたりできます。

Lambda コンソールの使用

次の手順は、Lambda コンソールを使用して .zip ファイルをデプロイパッケージとしてアップロードする方法を示します。

Lambda コンソールに .zip ファイルをアップロードするには
  1. Lambda コンソールで [Functions (関数)] ページを開きます。

  2. 関数を選択します。

  3. [Code Source] (コードソース) ペインで、[Upload from] (からアップロード)、[.zip file] (.zip ファイル) の順に選択します。

  4. [Upload] (アップロード) を選択して、ローカルの .zip ファイルを選択します。

  5. [Save] を選択します。

AWS CLI の使用

AWS Command Line Interface (AWS CLI) を使用して、.zip ファイルをデプロイパッケージとしてアップロードできます。言語固有の手順については、以下のトピックを参照してください。

Node.js

.zip ファイルアーカイブで Node.js Lambda 関数をデプロイする

Python

Python Lambda 関数で .zip ファイルアーカイブを使用する

Ruby

Ruby Lambda 関数で .zip ファイルアーカイブを使用する

Java

.zip または JAR ファイルアーカイブで Java Lambda 関数をデプロイする

Go

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

C#

.zip ファイルアーカイブを使用して C# Lambda 関数を構築し、デプロイする

PowerShell

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

Amazon S3 の使用

Amazon Simple Storage Service (Amazon S3) を使用して、.zip ファイルをデプロイパッケージとしてアップロードできます。詳細については、「他の AWS サービスを使用したデプロイパッケージの構築」を参照してください。

レイヤー

.zip ファイルアーカイブを使用して関数コードをデプロイする場合は、ライブラリ、カスタムランタイム、関数についてのその他の依存関係の配信メカニズムとして Lambda レイヤーを使用できます。レイヤーを使用することで、開発中の関数コードを、変更されることのないコードやリソースとは区別しながら管理できるようになります。関数が使用するレイヤーを、お客様ご自身で作成したレイヤー、AWS により提供されるレイヤー、または他の AWS のユーザーから提供されるレイヤーの中から選択して設定できます。

コンテナイメージにレイヤーは使用できません。代わりに、コンテナイメージをビルドする際、任意のランタイム、ライブラリ、その他の依存関係をコンテナイメージ内にパッケージ化します。

レイヤーの詳細については、「Lambda レイヤーでの作業」を参照してください。

他の AWS サービスを使用したデプロイパッケージの構築

次のセクションでは、Lambda 関数の依存関係をパッケージ化するために使用できる他の AWS のサービスについて説明します。

C または C++ ライブラリを備えたデプロイパッケージ

デプロイパッケージにネイティブライブラリが含まれている場合は、AWS Serverless Application Model(AWS SAM) でデプロイパッケージを構築できます。AWS SAMCLI sam build コマンドを --use-container と共に使用して、デプロイパッケージを作成できます。このオプションでは、Lambda 実行環境と互換性のある Docker イメージ内にデプロイパッケージを構築します。

詳細については、AWS Serverless Application Model デベロッパーガイドsam build を参照してください。

50 MB を超えるデプロイパッケージ

デプロイパッケージのサイズが 50 MB を超える場合は、関数のコードと依存関係を Amazon S3 バケットにアップロードしてください。

デプロイパッケージを作成し、Lambda 関数を作成する AWS リージョンの Amazon S3 バケットに .zip ファイルをアップロードできます。Lambda 関数を作成する際は、Lambda コンソール上または AWS CLI を使用して S3 バケット名とオブジェクトキー名を指定します。

Amazon S3 コンソールを使用してバケットを作成するには、「Amazon Simple Storage Service ユーザーガイド」の「バケットを作成する」を参照してください。