建立 Lambda 別名的路由設定 - AWS Lambda

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

建立 Lambda 別名的路由設定

在別名上使用路由組態,將部分流量傳送至第二個函式版本。例如,您可以將別名設定為將大部分流量傳送至現有版本,而只將一小部分的流量傳送至新版本,以降低部署新版本的風險。

Lambda 使用簡單的概率模型來在兩個函數版本之間分配流量。在流量較低時,您可能會看到每個版本已設定流量百分比與實際流量百分比之間,存在很大差異。如果您的函數使用佈建並行,透過在別名路由作用期間設定較高數目的已佈建並行執行個體,則可以避免溢出叫用

一個別名可以指向最多兩個 Lambda 函數版本。版本必須符合下列條件:

  • 兩個版本必須擁有相同的執行角色

  • 這兩個版本都必須具有相同無效字元佇列組態,或是沒有無效字元佇列組態。

  • 兩個版本都必須發佈。別名不能指向 $LATEST

Console
使用控制台在別名上設定路由
注意

確認函數至少有兩個已發佈的版本。若要建立其他版本,請遵循管理 Lambda 數版本中的指示。

  1. 開啟 Lambda 主控台中的 函數頁面

  2. 選擇一個函數。

  3. 選擇 Aliases (別名),然後選擇 Create alias (建立別名)

  4. Create alias (建立別名) 頁面,執行下列動作:

    1. 輸入別名的 Name (名稱)

    2. (選用) 輸入別名的 Description (描述)

    3. Version (版本)中,選擇要別名指向的第一個函數版本。

    4. 展開 Weighted alias (加權別名)

    5. Additional version (其他版本)中,選擇要別名指向的第二個函數版本。

    6. Weight (%) (權重 (%))函數輸入一個權重值。權數是當別名被叫用時,指派至該版本的流量百分比。第一版收到剩餘權數。例如,若指定 10% 至 Additional version (其他版本),第一版會自動指派 90%。

    7. 選擇 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 標題,以顯示已呼叫哪個函式版本。