Lambda 関数の .zip ファイルアーカイブとしてのデプロイ
Lambda 関数を作成する場合、関数コードをデプロイパッケージにパッケージ化します。Lambda は、コンテナイメージと .zip ファイルアーカイブの 2 種類のデプロイパッケージをサポートします。関数を作成するワークフローは、デプロイパッケージの種類によって異なります。コンテナイメージとして定義される関数の作成については、コンテナイメージを使用した Lambda 関数の作成を参照してください。
Lambda コンソールと Lambda API を使用して、.zip ファイルアーカイブで定義された関数を作成できます。更新済みの .zip ファイルをアップロードして、関数コードを変更することもできます。
注記
既存の関数のデプロイパッケージタイプ (.zip またはコンテナイメージ) を変更することはできません。例えば、既存のコンテナイメージ関数を、.zip ファイルアーカイブを使用するように変換することはできません。この場合は、新しい関数を作成する必要があります。
関数の作成
.zip ファイルアーカイブで定義した関数を作成する場合、その関数のコードテンプレート、言語バージョン、実行ロールを選択します。Lambda が関数を作成したら、関数コードを追加します。
関数を作成するには
Lambda コンソールの [関数ページ]
を開きます。 -
[Create function (関数の作成)] を選択します。
-
[Author from scratch] (ゼロから作る) または [Use a blueprint] (設計図の使用) を選択して関数を作成します。
-
[基本的な情報] で、以下を実行します。
-
[関数名] に関数名を入力します。関数名の長さは 64 文字に制限されています。
-
[Runtime] (ランタイム) で、関数で使用する言語バージョンを選択します。
-
(オプション) アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。デフォルトのアーキテクチャは x86_64 です。関数用のデプロイパッケージを構築するときは、この命令セットアーキテクチャと互換性があることを確認してください。
-
-
(オプション) [アクセス権限] で、[デフォルトの実行ロールの変更] を展開します。実行ロールを使用することも、既存のロールを使用することもできます。
-
(オプション) [詳細設定] を展開します。関数の [Code signing configuration] (コード署名設定) を選択します。関数がアクセスできるように (Amazon VPC) を設定することもできます。
-
[Create function] (関数の作成) をクリックします。
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 アーカイブとしてアップロードするには
Lambda コンソールの [関数ページ]
を開きます。 -
更新する関数を選択し、[Code] (コード) タブを選択します。
-
[Code source (コードソース)] で、[Upload from (アップロード元)] を選択します。
-
[.zip file (.zip ファイル)]、[Upload (アップロード) ] の順に選択します。
ファイルチューザで新しいイメージバージョンを選択し、[Open (開く)]、[Save (保存) ] の順に選択します。
-
(ステップ 4 の代わりに) Amazon S3 の場所を選択します。
-
テキストボックスに .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
ランタイムを変更する
Lambda コンソールの [関数ページ]
を開きます。 -
更新する関数を選択し、[Code] (コード) タブを選択します。
-
コードエディタの下にある [Runtime settings] (ランタイム設定) セクションまで下にスクロールします。
-
[編集] を選択します。
-
[Runtime] (ランタイム) で、ランタイム識別子を選択します。
-
[Handler] (ハンドラ) で、関数のファイル名とハンドラを指定します。
-
アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。
-
-
[Save] を選択します。
アーキテクチャの変更
命令セットアーキテクチャを変更する前に、関数コードがターゲットアーキテクチャと互換性があることを確認する必要があります。
Node.js、Python、Ruby を使用し、組み込みエディタで関数コードを編集する場合、既存のコードが変更されずに実行されることがあります。
ただし、.zip ファイルアーカイブのデプロイパッケージを使用して関数コードを提供する場合は、ターゲットランタイムおよび命令セットアーキテクチャ用に正しくコンパイルされ、構築された新しい .zip ファイルアーカイブを準備する必要があります。手順については、関数ランタイムのハンドラーページを参照してください。
命令セットアーキテクチャを変更するには
Lambda コンソールの [関数ページ]
を開きます。 -
更新する関数を選択し、[Code] (コード) タブを選択します。
-
[Runtime settings] (ランタイム設定) で、[Edit] (編集) を選択します。
-
アーキテクチャで、関数に使用する命令セットアーキテクチャを選択します。
-
[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
です。