View a markdown version of this page

多區域部署 - AWS Lambda

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

多區域部署

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

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

部署器會管理主區域中的 Web 函數,將程式碼和組態複寫至複本區域。用戶端透過一個全域網域到達MultiRegion端點,並透過每個區域中的區域網域到達 PerRegion 端點。

Lambda 複寫的內容

Lambda 會將下列項目複寫到每個目標區域:

  • 預備程式碼成品 – Lambda 從版本控制的 Amazon S3 來源物件衍生的內部執行時間成品。

  • 修訂組態 – 逾時、並行、環境變數和執行時間設定。

  • 以資源為基礎的政策 – 連接到 Web 函數的政策,授予其存取權。

  • 標籤 – Web 函數上的標籤。

Web 函數配額適用於每個 AWS 區域。每個目標區域會在複寫的端點上強制執行自己的帳戶配額。例如,複本區域中的執行環境擴展受該區域的帳戶 vCPU 配額限制。如需帳戶配額,請參閱 帳戶配額。

複本可見性

複寫的資源不會在複本區域中顯示。Web 函數的控制平面僅在其主區域中提供,因此所有 API 請求都必須傳送至主區域。其中包含:

  • 列出、取得和描述 Web 函數、其修訂版及其端點的請求。

  • 建立、更新和刪除函數、修訂和端點組態的請求。

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

複寫發生時

當您建立或更新 MultiRegion 或 PerRegion 端點時,會觸發複寫。具體而言,複寫會在下列情況發生:

  • 您可以使用指向修訂的修訂權重來建立 MultiRegion 或 PerRegion 端點。

  • 您可以更新MultiRegion或 PerRegion 端點上的修訂權重,以包含新的修訂。

  • 您可以在多區域authTypescalingConfig或 PerRegion 端點上更新其他端點設定,例如 throttleConfig、 或 。 MultiRegion

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

轉接的運作方式

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

MultiRegion

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

PerRegion

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

複寫失敗

由於暫時性服務問題,複寫可能會在區域中失敗。如果您使用客戶受管金鑰加密 Web 函數,則目標區域中缺少的金鑰複本也會導致複寫失敗。如需多區域金鑰需求,請參閱 設定客戶受管金鑰。

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

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

您可以在GetWebFunctionEndpoint回應的 regionalEndpoints 欄位中檢視每個區域的狀態和更新狀態。每個區域的項目包括:

  • state 和 stateReason – 區域在端點建立期間的部署狀態。

  • updateStatus 和 updateStatusReason – 該區域最近更新 (例如修訂部署) 的結果。

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

最終一致性

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

以資源為基礎的政策變更可以在程式碼和組態變更後完成傳播。在複寫時段,複本區域中的請求可能會根據舊版政策進行評估。如需詳細資訊,請參閱複寫和最終一致性。