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

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

Ruby

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

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 サービスを使用したデプロイパッケージの構築」を参照してください。

Layers

.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 コンソールユーザーガイドの「S3 バケットを作成する方法」を参照してください。