

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

# 租戶隔離
<a name="tenant-isolation"></a>

當您需要個別最終使用者或呼叫 Lambda 函數的租用戶進行隔離請求處理時，請使用租用戶隔離模式。此功能可簡化建置多租用戶應用程式，以處理租用戶特定的程式碼或資料，例如工作流程自動化的 SaaS 平台或程式碼執行，無需管理租用戶特定的函數資源和請求路由邏輯。

執行程式碼或處理個別租用戶或最終使用者的資料時，多租用戶應用程式有嚴格的隔離要求。使用租用戶隔離模式時，Lambda 會使用客戶指定的租用戶識別符，將請求路由到基礎函數執行環境，確保函數的執行環境僅用於提供來自指定最終使用者或租用戶的調用。Lambda 的函數執行環境利用 [Firecracker 虛擬化](https://firecracker-microvm.github.io/)來提供工作負載隔離。

當使用租用戶隔離模式的函數收到具有租用戶識別符的調用時，Lambda 會先嘗試尋找與該租用戶識別符相關聯的可用執行環境。如果不存在執行環境，Lambda 會建立新的執行環境並指派給該租用戶。隨著具有指定租用戶識別符的函數調用擴展，Lambda 會視需要尋找或建立新的執行環境。

**Topics**
+ [何時使用租戶隔離模式](#tenant-isolation-use)
+ [支援的功能和限制](#tenant-isolation-features)
+ [支援的 AWS 區域](#tenant-isolation-regions)
+ [考量事項](#tenant-isolation-considerations)
+ [定價](#tenant-isolation-pricing)
+ [隔離模式](#tenant-isolation-modes)
+ [啟用 Lambda 函數的租戶隔離](tenant-isolation-configure.md)
+ [使用租戶隔離調用 Lambda 函數](tenant-isolation-invoke.md)
+ [在 Lambda 函數程式碼中存取租戶識別符](tenant-isolation-context.md)
+ [使用租戶隔離監控 Lambda 函數](tenant-isolation-monitor.md)
+ [故障診斷 Lambda 函數的租戶隔離](tenant-isolation-troubleshooting.md)

## 何時使用租戶隔離模式
<a name="tenant-isolation-use"></a>

當您需要使用單一 Lambda 函數為多個最終使用者或租用戶提供服務時，請使用租用戶隔離模式，同時確保用於處理個別租用戶調用的執行環境彼此保持隔離。下列多租戶應用程式需要嚴格隔離執行環境：
+ **執行最終使用者提供的程式碼**：維護個別租用戶的個別執行環境，可能會限制執行使用者提供的錯誤或惡意程式碼的影響。
+ **處理租用戶特定資料**：維護個別租用戶的個別執行環境，可防止敏感租用戶特定資料暴露給其他租用戶。

來自相同租用戶的多個調用請求可以重複使用相同的函數執行環境，從而減少冷啟動並改善延遲敏感應用程式的回應時間。

## 支援的功能和限制
<a name="tenant-isolation-features"></a>

使用函數 [ URLs、佈建並行或 SnapStart 的函數](urls-configuration.md)不支援租用戶隔離模式。 [設定函數的佈建並行](provisioned-concurrency.md) [SnapStart](snapstart.md) 您可以使用[同步調用](invocation-sync.md)、[非同步調用](invocation-async.md)，或使用 [Amazon API Gateway 做為事件觸發器](services-apigateway.md)，將請求傳送至租戶隔離的函數。

## 支援的 AWS 區域
<a name="tenant-isolation-regions"></a>

除了亞太區域 （紐西蘭） 之外，所有[商業區域](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#region)都支援租戶隔離模式。

## 考量事項
<a name="tenant-isolation-considerations"></a>

搭配 Lambda 函數使用租戶隔離時，請記住下列事項：
+ **不可變組態**：租戶隔離是不可變的函數屬性。它只能在建立函數時啟用。
+ **必要的 tenant-id 參數**：必須使用 `tenant-id` 參數調用使用租用戶隔離模式的函數。省略此參數會導致函數叫用失敗。
+ **執行角色適用於所有租用戶**：來自所有租用戶的調用會使用 Lambda 函數[執行角色](lambda-intro-execution-role.md)中定義的許可。
+ **並行**：使用租用戶隔離時，函數的[並行](lambda-concurrency.md)或[擴展行為](scaling-behavior.md)沒有任何變更。Lambda 會針對為 Lambda 函數設定的每 1，000 個[並行執行，限制 2，500 個租用戶隔離的執行](gettingstarted-limits.md#compute-and-storage)環境 （作用中或閒置）。

## 定價
<a name="tenant-isolation-pricing"></a>

當 Lambda 建立新的租戶隔離執行環境時，會向您收取費用。價格取決於您配置給函數的[記憶體](configuration-memory.md)量，以及您使用的 [CPU 架構](foundation-arch.md)。如需詳細資訊，請參閱 [AWS Lambda 定價](https://aws.amazon.com/lambda/pricing)。

## 隔離模式
<a name="tenant-isolation-modes"></a>

下表概述具有和不具有租用戶隔離的 Lambda 函數之間的差異。


| 功能 | 使用租戶隔離 | 沒有租用戶隔離 | 
| --- | --- | --- | 
| 隔離類型 | 租戶層級隔離 | 函數層級隔離 | 
| 環境重複使用 | 執行環境絕不會在不同的租用戶間重複使用 | 相同函數的叫用之間可能會重複使用執行環境 | 
| 資料隔離 | 無法存取來自其他租戶的資料 | 可能可以存取先前調用相同函數版本的資料 | 
| 冷啟動 | 由於租戶特定環境而有更多冷啟動 | 由於環境重複使用，冷啟動次數較少 | 
| 定價 | 標準 Lambda 定價以外的額外費用 | 標準 Lambda 定價 | 