

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Lambda 中建立和刪除層
<a name="creating-deleting-layers"></a>

Lambda 層是含有補充程式碼或資料的 .zip 封存檔。層通常具備程式庫相依性、[自訂執行期](runtimes-custom.md)或組態檔案。

本節會說明如何在 Lambda 中建立和刪除層。若要進一步了解有關層的概念性資訊以及您可能會考慮使用的原因，請參閱 [使用層管理 Lambda 相依項](chapter-layers.md)。

[封裝層內容](packaging-layers.md)之後，下一步是在 Lambda 中建立層。本節會示範如何僅使用 Lambda 主控台或 Lambda API 建立和刪除層。若要使用  AWS CloudFormation 建立層，請參閱 [使用 AWS CloudFormation 搭配 layer](layers-cfn.md)。若要使用  AWS Serverless Application Model  (AWS SAM) 建立層，請參閱 [AWS SAM 與圖層搭配使用](layers-sam.md)。

**Topics**
+ [建立圖層](#layers-create)
+ [刪除圖層版本](#layers-delete)

## 建立圖層
<a name="layers-create"></a>

若要建立層，您可以從本機電腦或 Amazon Simple Storage Service (Amazon S3) 中上傳 .zip 封存檔。從 Amazon S3 上傳時，您可以選擇 Lambda 是將程式碼複製到 Lambda 受管儲存體，還是直接從 S3 儲存貯體參考。如需詳細資訊，請參閱[自我管理 S3 程式碼儲存](configuration-self-managed-storage.md)。

設定函數的執行環境時，Lambda 會將層內容擷取到 `/opt` 目錄中。

層可以有一個或多個 [層版本](chapter-layers.md#lambda-layer-versions)。建立層時，Lambda 將層版本設定為版本 1。您可以隨時變更既有層版本的許可。不過，若要更新程式碼或進行其他組態變更，您必須建立新的層版本。

**建立圖層 (主控台)**

1. 開啟 Lambda 主控台中的 [層頁面](https://console.aws.amazon.com/lambda/home#/layers)。

1. 選擇 **建立圖層**。

1. 在 **Layer configuration** (圖層組態) 下，為 **Name** (名稱) 輸入圖層的名稱。

1. (選用) 在 **Description (說明)** 中，輸入 Layer 的說明。

1. 若要上傳 Layer 程式碼，請執行下列其中一個動作：
   + 若要從電腦上傳 .zip 檔案，請選擇 **Upload a .zip file** (上傳 .zip 檔案)。然後，選擇 **Upload** (上傳) 以選取您的本機 .zip 檔案。
   + 若要從 Amazon S3 上傳檔案，請選擇 **Upload a file from Amazon S3** (從 Amazon S3 上傳檔案)。然後，對於 **Amazon S3 連結 URL**，輸入檔案的連結。

1. 如果您選擇從 Amazon S3 上傳，請在**程式碼儲存模式下**選擇下列其中一項：
   + **複製模式 （預設）**
   + **參考模式**

1. (選用) 對於**相容架構**，選擇一個值或兩個值。如需詳細資訊，請參閱[選取和設定 Lambda 函數的指令集架構](foundation-arch.md)。

1. (選擇性) 在 **相容執行期** 中選擇相容於您的層的執行期。

1. (選擇性) 在 **License (授權)** 中，輸入任何必要的授權資訊。

1. 選擇**建立**。

或者，您可以執行 [publish-layer-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/publish-layer-version.html) AWS Command Line Interface (CLI) 命令。從 Amazon S3 上傳時，包含 `S3ObjectStorageMode=REFERENCE` 以使用[自我管理的 S3 程式碼儲存](configuration-self-managed-storage.md)體，或省略它 （預設為 `COPY`) 以使用 Lambda 受管儲存體。範例：

```
aws lambda publish-layer-version --layer-name {{my-layer}} --zip-file fileb://layer.zip --compatible-runtimes {{python3.14}}
```

每當您執行 `publish-layer-version` 時，Lambda 都會建立新的[層版本](chapter-layers.md#lambda-layer-versions)。

## 刪除圖層版本
<a name="layers-delete"></a>

若要刪除層版本，請使用 [DeleteLayerVersion](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteLayerVersion.html) API 操作。例如，以指定的 layer 名稱和 layer 版本執行 [delete-layer-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-layer-version.html) AWS CLI 命令。

```
aws lambda delete-layer-version --layer-name my-layer --version-number 1
```

當您刪除 layer 版本時，您無法再設定新函數來使用它。不過，任何已參考已刪除 layer 版本的函數都會繼續執行該 layer 內容。Lambda 永遠不會重複使用層名稱的版本號碼。

### 刪除 layer 的儲存配額影響
<a name="layers-delete-storage"></a>

刪除 layer 版本的儲存配額影響取決於 layer 所使用的儲存模式，以及參考它的函數。

Layer 使用 Lambda 受管儲存 (COPY)  
當您刪除使用 Lambda 受管儲存的層版本時，層程式碼會從您帳戶的 Lambda 受管儲存配額中移除。不過，仍然參考已刪除 layer 版本的任何函數都會繼續存取 layer 內容。layer 內容會計入函數的部署套件大小配額 (250 MB 解壓縮），但不再計入帳戶層級的 Lambda 受管儲存配額。

Layer 使用自我管理的 S3 儲存體 （參考）  
使用[自我管理 S3 程式碼儲存體](configuration-self-managed-storage.md)的層不會使用 Lambda 受管儲存體，因此刪除它們不會影響您的 Lambda 受管儲存體配額。參考已刪除自我管理層版本的函數會繼續正常執行。不過，如果您也從 S3 儲存貯體刪除來源物件，或撤銷 Lambda 對其的存取權，則無法再使用該層更新函數組態。

**注意**  
刪除 layer 版本永遠不會停用參考它的函數。`Active` 無論 layer 是使用 Lambda 受管還是自我管理的 S3 儲存，函數都會保留。只有在 Lambda 無法存取存放在自我管理 S3 儲存貯體中的函數自己的原始碼時，`Inactive`狀態才會套用。