本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Lambda 別名的路由設定
在別名上使用路由組態,將部分流量傳送至第二個函式版本。例如,您可以將別名設定為將大部分流量傳送至現有版本,而只將一小部分的流量傳送至新版本,以降低部署新版本的風險。
Lambda 使用簡單的概率模型來在兩個函數版本之間分配流量。在流量較低時,您可能會看到每個版本已設定流量百分比與實際流量百分比之間,存在很大差異。如果您的函數使用佈建並行,透過在別名路由作用期間設定較高數目的已佈建並行執行個體,則可以避免溢出叫用。
一個別名可以指向最多兩個 Lambda 函數版本。版本必須符合下列條件:
- Console
-
使用控制台在別名上設定路由
開啟 Lambda 主控台中的 函數頁面。
-
選擇一個函數。
-
選擇 Aliases (別名),然後選擇 Create alias (建立別名)。
-
在 Create alias (建立別名) 頁面,執行下列動作:
-
輸入別名的 Name (名稱)。
-
(選用) 輸入別名的 Description (描述)。
-
在 Version (版本)中,選擇要別名指向的第一個函數版本。
-
展開 Weighted alias (加權別名)。
-
在 Additional version (其他版本)中,選擇要別名指向的第二個函數版本。
-
為 Weight (%) (權重 (%))函數輸入一個權重值。權數是當別名被叫用時,指派至該版本的流量百分比。第一版收到剩餘權數。例如,若指定 10% 至 Additional version (其他版本),第一版會自動指派 90%。
-
選擇 Save (儲存)。
- AWS CLI
-
使用「建立別名」和「更新-別名」 AWS CLI 指令來設定兩個函數版本之間的流量權數。當您建立或更新別名時,請在 routing-config
參數中指定流量權重。
以下範例會建立一個名為 routing-alias 的 Lambda 函數別名,此別名指向函數的版本 1。函數的版本 2 會接收 3% 的流量。剩餘 97% 的流量會路由至版本 1。
aws lambda create-alias \
--name routing-alias \
--function-name my-function \
--function-version 1 \
--routing-config AdditionalVersionWeights={"2"=0.03}
使用 update-alias
命令可增加連入流量至版本 2 的百分比。在下列範例中,您會將流量增加到 5%。
aws lambda update-alias \
--name routing-alias \
--function-name my-function \
--routing-config AdditionalVersionWeights={"2"=0.05}
若要將所有流量路由傳送至版本 2,請使用 update-alias
命令,將 function-version
屬性變更為將別名指向版本 2。此命令也會重設路由組態。
aws lambda update-alias \
--name routing-alias \
--function-name my-function \
--function-version 2 \
--routing-config AdditionalVersionWeights={}
上述步驟中的 AWS CLI 命令對應於下列 Lambda API 作業:
決定叫用哪個版本
當您設定兩個函數版本之間的流量權重時,有兩種方法可判斷已叫用的 Lambda 函數版本:
-
CloudWatch 日誌 — Lambda 會在每次函數叫用時,自動將包含叫用版本 ID 的 CloudWatch 日誌項目發送至 Amazon 日誌。START
以下是範例:
19:44:37 START RequestId: request id
Version:
$version
對於別名叫用,Lambda 使用 Executed Version
維度,依照已叫用的版本來篩選指標資料。如需詳細資訊,請參閱檢視 Lambda 函數的指標。
-
回應承載 (同步呼叫) – 回應至同步函式呼叫包含 x-amz-executed-version
標題,以顯示已呼叫哪個函式版本。