Lambda 関数の .zip ファイルアーカイブとしてのデプロイ - AWS Lambda

Lambda 関数の .zip ファイルアーカイブとしてのデプロイ

Lambda 関数を作成する場合、関数コードをデプロイパッケージにパッケージ化します。Lambda は、コンテナイメージと .zip ファイルアーカイブの 2 種類のデプロイパッケージをサポートします。関数を作成するワークフローは、デプロイパッケージの種類によって異なります。コンテナイメージとして定義される関数の作成については、コンテナイメージを使用した Lambda 関数の作成を参照してください。

Lambda コンソールと Lambda API を使用して、.zip ファイルアーカイブで定義された関数を作成できます。更新済みの .zip ファイルをアップロードして、関数コードを変更することもできます。

注記

既存の関数のデプロイパッケージタイプ (.zip またはコンテナイメージ) を変更することはできません。例えば、既存のコンテナイメージ関数を、.zip ファイルアーカイブを使用するように変換することはできません。この場合は、新しい関数を作成する必要があります。

関数の作成

.zip ファイルアーカイブで定義した関数を作成する場合、その関数のコードテンプレート、言語バージョン、実行ロールを選択します。Lambda が関数を作成したら、関数コードを追加します。

関数を作成するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. [Create function (関数の作成)] を選択します。

  3. [Author from scratch] (ゼロから作る) または [Use a blueprint] (設計図の使用) を選択して関数を作成します。

  4. [基本的な情報] で、以下を実行します。

    1. [関数名] に関数名を入力します。関数名の長さは 64 文字に制限されています。

    2. [Runtime] (ランタイム) で、関数で使用する言語バージョンを選択します。

    3. (オプション) アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。デフォルトのアーキテクチャは x86_64 です。関数用のデプロイパッケージを構築するときは、この命令セットアーキテクチャと互換性があることを確認してください。

  5. (オプション) [アクセス権限] で、[デフォルトの実行ロールの変更] を展開します。実行ロールを使用することも、既存のロールを使用することもできます。

  6. (オプション) [詳細設定] を展開します。関数の [Code signing configuration] (コード署名設定) を選択します。関数がアクセスできるように (Amazon VPC) を設定することもできます。

  7. [Create function] (関数の作成) をクリックします。

Lambda によって、新しい関数が作成されます。コンソールを使用して関数コードを追加し、他の関数のパラメータや機能を設定できるようになりました。コードのデプロイに関する手順については、関数が使用するランタイムのハンドラーページを参照してください。

Node.js

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

Python

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

Ruby

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

Java

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

Go

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

C#

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

PowerShell

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

コンソールのコードエディタの使用

コンソールで、単一のソースファイルを含む Lambda 関数が作成されます。スクリプト言語の場合、このファイルを編集し、組み込みのコードエディタを使用してファイルをさらに追加することができます。変更を保存するには [保存] を選択します。コードを実行するには、[Test] (テスト) を選択します。

関数コードを保存すると、Lambda コンソールは .zip ファイルアーカイブのデプロイパッケージを作成します。コンソール外で (SDE を使用して) 関数コードを開発するときは、デプロイパッケージを作成して、Lambda 関数にコードをアップロードします。

関数コードの更新

スクリプト言語 (Node.js, Python, and Ruby) の場合は、組み込みのコードエディタで関数コードを編集することができます。コードが 3 MBを超える場合、またはライブラリを追加する必要がある場合、またはエディタでサポートされていない言語 (Java, Go, C#) の場合は、関数コードを .zip アーカイブとしてアップロードする必要があります。.zip ファイルアーカイブが 50 MB 未満の場合は、ローカルマシンから .zip ファイルアーカイブをアップロードできます。ファイルが 50 MB を超える場合は、Amazon S3 バケットから関数にファイルをアップロードします。

関数コードを.zip アーカイブとしてアップロードするには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 更新する関数を選択し、[Code] (コード) タブを選択します。

  3. [Code source (コードソース)] で、[Upload from (アップロード元)] を選択します。

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

    1. ファイルチューザで新しいイメージバージョンを選択し、[Open (開く)]、[Save (保存) ] の順に選択します。

  5. (ステップ 4 の代わりに) Amazon S3 の場所を選択します。

    1. テキストボックスに .zip ファイルアーカイブの S3 リンク URL を入力し、[Save] (保存) を選択します。

ランタイムの変更

新しいランタイムを使用するように関数の設定を更新する場合は、新しいランタイムとの互換性を確保するために関数コードを更新する必要がある場合があります。別のランタイムを使用するように関数設定を更新した場合は、ランタイムおよびアーキテクチャと互換性のある新しい関数コードを提供する必要があります。関数コードのデプロイパッケージを作成する方法については、関数が使用するランタイムのハンドラーページを参照してください。

Node.js 20、Python 3.12、Java 21、.NET 8、Ruby 3.3 以降のベースイメージは、Amazon Linux 2023 の最小コンテナイメージに基づいています。以前のベースイメージでは Amazon Linux 2 が使用されています。AL2023 ランタイムには、デプロイのフットプリントが小さいことや、glibc などのライブラリのバージョンが更新されていることなど、Amazon Linux 2 に比べていくつかの利点があります。詳細については、AWS コンピューティングブログの「Introducing the Amazon Linux 2023 runtime for AWS Lambda」を参照してください。

ランタイムを変更する
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 更新する関数を選択し、[Code] (コード) タブを選択します。

  3. コードエディタの下にある [Runtime settings] (ランタイム設定) セクションまで下にスクロールします。

  4. [編集] を選択します。

    1. [Runtime] (ランタイム) で、ランタイム識別子を選択します。

    2. [Handler] (ハンドラ) で、関数のファイル名とハンドラを指定します。

    3. アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。

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

アーキテクチャの変更

命令セットアーキテクチャを変更する前に、関数コードがターゲットアーキテクチャと互換性があることを確認する必要があります。

Node.js、Python、Ruby を使用し、組み込みエディタで関数コードを編集する場合、既存のコードが変更されずに実行されることがあります。

ただし、.zip ファイルアーカイブのデプロイパッケージを使用して関数コードを提供する場合は、ターゲットランタイムおよび命令セットアーキテクチャ用に正しくコンパイルされ、構築された新しい .zip ファイルアーカイブを準備する必要があります。手順については、関数ランタイムのハンドラーページを参照してください。

命令セットアーキテクチャを変更するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 更新する関数を選択し、[Code] (コード) タブを選択します。

  3. [Runtime settings] (ランタイム設定) で、[Edit] (編集) を選択します。

  4. アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。

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

Lambda API の使用

.zip ファイルアーカイブを使用する関数を作成および設定するには、以下の API オペレーションを使用します。

AWS CloudFormation

AWS CloudFormation を使用して、.zip ファイルアーカイブを使用する Lambda 関数を作成できます。AWS CloudFormation テンプレートでは、Lambda 関数は AWS::Lambda::Function のリソースにより指定されます。AWS::Lambda::Function リソースのプロパティの詳細については、AWS CloudFormation ユーザーガイドの「AWS::Lambda::Function」を参照してください。

AWS::Lambda::Function リソースで、次のプロパティを設定して .zip ファイルアーカイブとして定義された関数を作成します。

  • AWS::Lambda::Function

    • PackageType - Zip に設定します。

    • コード — Amazon S3 バケット名と.zip ファイル名を S3Bucket および S3Key のフィールドに入力します。Node.js または Python では、Lambda 関数のインラインソースコードを提供できます。

    • ランタイム — ランタイム値を設定します。

    • アーキテクチャ — AWS Graviton2 プロセッサを使用するには、アーキテクチャ値をarm64に設定します。デフォルトでは、アーキテクチャ値はx86_64です。