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)、または Amazon Simple Storage Service (Amazon S3) バケットを使用して、.zip ファイルをデプロイパッケージとしてアップロードできます。

Lambda コンソールを使用する

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

Lambda コンソールに .zip ファイルをアップロードするには

  1. Lambda コンソールの [Functions] (関数) ページを開きます。

  2. 関数を選択します。

  3. [コードソース] ペインで、[アップロード元]、[.zip ファイル] の順に選択します。

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

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

AWS CLI の使用

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

Amazon S3 の使用

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

Layer

.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 ビルド」を参照してください。

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

デプロイパッケージが 50 MB を超える場合は、関数コードと依存関係を Amazon S3 バケットにアップロードすることをお勧めします。

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

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