

# Lambda 関数の .zip ファイルアーカイブとしてのデプロイ
<a name="configuration-function-zip"></a>

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

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

**注記**  
既存の関数の[デプロイパッケージタイプ](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType) (.zip またはコンテナイメージ) を変更することはできません。例えば、既存のコンテナイメージ関数を、.zip ファイルアーカイブを使用するように変換することはできません。この場合は、新しい関数を作成する必要があります。

**Topics**
+ [関数の作成](#configuration-function-create)
+ [コンソールのコードエディタの使用](#configuration-functions-console-update)
+ [関数コードの更新](#configuration-function-update)
+ [ランタイムの変更](#configuration-function-runtime)
+ [アーキテクチャの変更](#configuration-function-arch)
+ [Lambda API の使用](#configuration-function-api)
+ [関数コードのダウンロード](#configuration-function-download)
+ [CloudFormation](#configuration-function-cloudformation)
+ [Lambda .zip デプロイパッケージの暗号化](encrypt-zip-package.md)

## 関数の作成
<a name="configuration-function-create"></a>

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

**関数を作成するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

1. [**関数の作成**] を選択してください。

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

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

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

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

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

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

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

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

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

------
#### [ Node.js ]

[.zip ファイルアーカイブで Node.js Lambda 関数をデプロイする](nodejs-package.md) 

------
#### [ Python ]

 [Python Lambda 関数で .zip ファイルアーカイブを使用する](python-package.md) 

------
#### [ Ruby ]

 [.zip ファイルアーカイブで Ruby Lambda 関数をデプロイする](ruby-package.md) 

------
#### [ Java ]

 [.zip または JAR ファイルアーカイブで Java Lambda 関数をデプロイする](java-package.md) 

------
#### [ Go ]

 [.zip ファイルアーカイブを使用して Go Lambda 関数をデプロイする](golang-package.md) 

------
#### [ C\# ]

 [.zip ファイルアーカイブを使用して C\# Lambda 関数を構築し、デプロイする](csharp-package.md) 

------
#### [ PowerShell ]

 [.zip ファイルアーカイブを使用した PowerShell Lambda 関数のデプロイする](powershell-package.md) 

------

## コンソールのコードエディタの使用
<a name="configuration-functions-console-update"></a>

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

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

## 関数コードの更新
<a name="configuration-function-update"></a>

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

**関数コードを.zip アーカイブとしてアップロードするには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

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

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

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

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

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

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

## ランタイムの変更
<a name="configuration-function-runtime"></a>

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

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](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/)」を参照してください。

**ランタイムを変更する**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

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

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

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

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

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

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

1. **[保存]** を選択します。

## アーキテクチャの変更
<a name="configuration-function-arch"></a>

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

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

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

**命令セットアーキテクチャを変更するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

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

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

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

1. **[保存]** を選択します。

## Lambda API の使用
<a name="configuration-function-api"></a>

.zip ファイルアーカイブを使用する関数を作成および設定するには、以下の API オペレーションを使用します。
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)

## 関数コードのダウンロード
<a name="configuration-function-download"></a>

関数コード .zip の最新の未公開 (`$LATEST`) バージョンは、Lambda コンソールからダウンロードできます。このためには、まず次の IAM アクセス許可があることを確認します。
+ `iam:GetPolicy`
+ `iam:GetPolicyVersion`
+ `iam:GetRole`
+ `iam:GetRolePolicy`
+ `iam:ListAttachedRolePolicies`
+ `iam:ListRolePolicies`
+ `iam:ListRoles`

**関数コード .zip をダウンロードするには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

1. 関数コード .zip をダウンロードする関数を選択します。

1. **[関数の概要]** で、**[ダウンロード]** ボタンを選択し、**[ファンクションコード .zip をダウンロード]** を選択します。

   1. または、**[AWS SAM ファイルをダウンロード]** を選択して、関数の設定に基づいて SAM テンプレートを生成してダウンロードします。**[両方ダウンロード]** を選択して、.zip と SAM テンプレートの両方をダウンロードすることもできます。

## CloudFormation
<a name="configuration-function-cloudformation"></a>

CloudFormation を使用して、.zip ファイルアーカイブを使用する Lambda 関数を作成できます。CloudFormation テンプレートでは、Lambda 関数は `AWS::Lambda::Function` のリソースにより指定されます。`AWS::Lambda::Function` リソースのプロパティの詳細については、*AWS CloudFormation ユーザーガイド*の「[AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)」を参照してください。

`AWS::Lambda::Function` リソースで、次のプロパティを設定して .zip ファイルアーカイブとして定義された関数を作成します。
+ AWS::Lambda::Function
  + PackageType － `Zip` に設定します。
  + コード — Amazon S3 バケット名と.zip ファイル名を `S3Bucket` および `S3Key` のフィールドに入力します。Node.js または Python では、Lambda 関数のインラインソースコードを提供できます。
  + ランタイム — ランタイム値を設定します。
  + アーキテクチャ — AWS Graviton2 プロセッサを使用するには、アーキテクチャ値を`arm64`に設定します。デフォルトでは、アーキテクチャ値は`x86_64`です。