

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

# 多區域部署
<a name="web-functions-endpoint-replication"></a>

對於 **MultiRegion** 和 **PerRegion** 端點，Lambda 會將執行期成品複寫到所有目標區域，讓您的應用程式可以為接近最終使用者的流量提供服務。您完全從主要區域管理 Web 函數。複寫的資源在複本區域中不可見或無法修改。

下圖顯示主區域中的控制平面如何準備修訂，並將其程式碼和組態複寫到複本區域，以及用戶端如何到達 **MultiRegion** 和 **PerRegion** 端點。複本區域沒有控制平面。**MultiRegion**端點有一個全域網域，依延遲路由，而非依區域運作狀態路由。對於 **PerRegion** 端點，您可以管理用戶端如何到達每個區域中的區域網域，例如使用 Route 53 記錄或 CloudFront。您可以在建立端點時設定端點類型和區域，之後無法變更它們。

![部署器會管理主區域中的 Web 函數，將程式碼和組態複寫至複本區域。用戶端透過一個全域網域到達MultiRegion端點，並透過每個區域中的區域網域到達 PerRegion 端點。](https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/web-functions-multi-region-flow.png)


**Topics**
+ [Lambda 複寫的內容](#web-functions-endpoint-replication-what)
+ [複本可見性](#web-functions-endpoint-replication-visibility)
+ [複寫發生時](#web-functions-endpoint-replication-trigger)
+ [轉接的運作方式](#web-functions-endpoint-replication-routing)
+ [複寫失敗](#web-functions-endpoint-replication-failure)
+ [最終一致性](#web-functions-endpoint-replication-consistency)

## Lambda 複寫的內容
<a name="web-functions-endpoint-replication-what"></a>

Lambda 會將下列項目複寫到每個目標區域：
+ **預備程式碼成品** – Lambda 從版本控制的 Amazon S3 來源物件衍生的內部執行時間成品。
+ **修訂組態** – 逾時、並行、環境變數和執行時間設定。
+ 以**資源為基礎的政策** – 連接到 Web 函數的政策，授予其存取權。
+ **標籤** – Web 函數上的標籤。

Web 函數配額適用於每個 AWS 區域。每個目標區域會在複寫的端點上強制執行自己的帳戶配額。例如，複本區域中的執行環境擴展受該區域的帳戶 vCPU 配額限制。如需帳戶配額，請參閱 [帳戶配額](web-functions-scaling.md#web-functions-scaling-quotas)。

## 複本可見性
<a name="web-functions-endpoint-replication-visibility"></a>

複寫的資源不會**在複本區域中顯示**。Web 函數的控制平面僅在其主區域中提供，因此所有 API 請求都必須傳送至主區域。其中包含：
+ 列出、取得和描述 Web 函數、其修訂版及其端點的請求。
+ 建立、更新和刪除函數、修訂和端點組態的請求。

傳送至複本區域的控制平面端點的 API 請求會失敗，無論發起人位於何處。複寫的執行時間成品僅存在於資料平面為流量提供服務。

## 複寫發生時
<a name="web-functions-endpoint-replication-trigger"></a>

當您建立或更新 **MultiRegion** 或 **PerRegion** 端點時，會觸發複寫。具體而言，複寫會在下列情況發生：
+ 您可以使用指向修訂的修訂權重來建立 MultiRegion 或 PerRegion 端點。
+ 您可以更新MultiRegion或 PerRegion 端點上的修訂權重，以包含新的修訂。
+ 您可以在多區域`authType``scalingConfig`或 PerRegion 端點上更新其他端點設定，例如 `throttleConfig`、 或 。 MultiRegion 

僅建立修訂不會觸發複寫。修訂必須包含在已設定目標區域的端點修訂權重中。由於 MultiRegion 和 PerRegion 端點只能使用**已停用**的自動部署模式，因此複寫一律是您進行端點變更的結果。

## 轉接的運作方式
<a name="web-functions-endpoint-replication-routing"></a>

路由行為取決於端點類型：

**MultiRegion**  
Lambda 提供單一全域網域名稱。使用以延遲為基礎的路由來路由請求。根據 Route 53 隨著時間收集的延遲測量，請求會路由到通常為發起人提供最低網路延遲的區域。由於網際網路延遲變更，Lambda 不保證每個請求都會進入最低延遲區域。Lambda 會自動為您管理路由。

**PerRegion**  
Lambda 在每個目標區域中提供個別的區域網域名稱。您負責管理流量如何到達每個區域網域。例如，您可以設定自己的 Route 53 路由政策，或在區域網域前面放置 CloudFront 分佈。

## 複寫失敗
<a name="web-functions-endpoint-replication-failure"></a>

由於暫時性服務問題，複寫可能會在區域中失敗。如果您使用客戶受管金鑰加密 Web 函數，則目標區域中缺少的金鑰複本也會導致複寫失敗。如需多區域金鑰需求，請參閱 [設定客戶受管金鑰](web-functions-encryption.md#web-functions-encryption-key-requirements)。

複寫失敗的影響取決於您要建立或更新端點。如果 Lambda 建立端點時任何區域中的複寫失敗，則端點會移至**失敗**狀態，且無法在任何區域中叫用。若要重試，請刪除端點並再次建立。如果在端點更新期間某個區域中複寫失敗，則失敗僅限於該區域。端點會保持可叫用狀態，而其他區域會繼續正常運作。

當區域中的新修訂版複寫失敗時，該區域會繼續使用先前成功部署的修訂版來服務流量。端點不會復原。它會繼續在每個區域中以最後已知的良好狀態運作。

您可以在`GetWebFunctionEndpoint`回應的 `regionalEndpoints` 欄位中檢視每個區域的狀態和更新狀態。每個區域的項目包括：
+ `state` 和 `stateReason` – 區域在端點建立期間的部署狀態。
+ `updateStatus` 和 `updateStatusReason` – 該區域最近更新 （例如修訂部署） 的結果。

若要解決複寫失敗，請解決根本原因 （例如，在受影響的區域中建立 AWS KMS 金鑰複本）。若要在解決根本原因後重試失敗的端點更新，請`UpdateWebFunctionEndpoint`再次呼叫 。您可以重複相同的設定，或僅指定函數名稱和端點名稱。任一請求都會啟動對目標區域的新部署。這僅適用於端點處於**作用中**狀態時。如果端點建立失敗，請刪除端點並再次建立。

## 最終一致性
<a name="web-functions-endpoint-replication-consistency"></a>

執行時間成品的複寫最終一致。在`regionalEndpoints`報告 `updateStatus`中每個區域的 之前，請勿假設每個區域都會執行新的組態`Successful`。

以資源為基礎的政策變更可以在程式碼和組態變更後完成傳播。在複寫時段，複本區域中的請求可能會根據舊版政策進行評估。如需詳細資訊，請參閱[複寫和最終一致性](web-functions-permissions.md#web-functions-permissions-resource-policy-replication)。