Lambda 函數版本 - AWS Lambda

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

Lambda 函數版本

您可以使用版本來管理函數的部署。例如,您可以發佈新版本的函數來測試 Beta 版,而不會影響穩定生產版本的使用者。每次發佈函數時,Lambda 都會建立新版本的函數。新版本是此函數未發佈版本的副本。未發佈的版本名稱為 $LATEST。

注意

若要建立函數的新版本,您必須先變更未發佈的版本 ($LATEST)。這些變更可能包括更新程式碼或修改組態設定。如果 $LATEST 與先前發佈的版本相同,則在將變更部署到 $LATEST 之前,您將無法建立新版本。

發佈函數版本之後,其程式碼、執行階段、架構、記憶體、層和大多數其他組態設定都是不可變的。這表示您無法在未從 $LATEST 發佈新版本的情況下變更這些設定。您可以為已發佈的函數版本設定下列項目:

注意

搭配 Auto 模式使用執行階段管理控制項時,函數版本所使用的執行階段版本會自動更新。使用 Function update (函數更新) 或 Manual (手動) 模式時,不會更新執行階段版本。如需詳細資訊,請參閱 Lambda 執行階段更新

建立函數版本

您只能在未發佈的函數版本上變更函數代碼和設定。當您發佈版本時,Lambda 會鎖定程式碼和大多數設定以為該版本的使用者保持一致的使用體驗。

您可以使用 Lambda 主控台建立函數版本。

新建函數版本
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇一個函數,然後選擇 Versions (版本)

  3. 在版本組態頁面上,選擇 Publish new version (發佈新版本)

  4. (選用) 輸入版本描述。

  5. 選擇 Publish (發佈)。

或者,您可以使用 PublishVersionAPI 操作發布函數的版本。

下列 AWS CLI 指令會發佈函數的新版本。回應會傳回關於新版本的組態資訊,包含版本號碼,以及含有版本尾碼的函式 ARN。

aws lambda publish-version --function-name my-function

您應該會看到下列輸出:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1", "Version": "1", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "Runtime": "nodejs20.x", ... }
注意

Lambda 會為版本控制指派依序遞增的序號。即使刪除並重新建立函數,Lambda 也不會重複使用版本號碼。

使用版本

您可以使用合格的 ARN 或不合格的 ARN 來參考您的 Lambda 函數。

  • 合格的 ARN - 帶有版本尾碼的函數 ARN。下列範例指的是 helloworld 函數的版本 42。

    arn:aws:lambda:aws-region:acct-id:function:helloworld:42
  • 不合格的 ARN - 沒有版本尾碼的函數 ARN。

    arn:aws:lambda:aws-region:acct-id:function:helloworld

您可以在所有相關 API 操作中使用合格或不合格的 ARN。但是,您無法使用不合格的 ARN 來建立別名。

如果您決定不發佈函數版本,則可以在事件來源映射中使用合格或不合格的 ARN 來調用函數。當您使用不合格的 ARN 調用函數時,Lambda 會隱含調用 $LESTEST。

只有在程式碼從未發佈過,或程式碼已從上次發佈的版本變更時,Lambda 才會發佈新的函數版本。如果沒有變更,函數版本會保持在最新發佈的版本。

每個 Lambda 函數版本的合格 ARN 是唯一的。發佈版本之後,您就無法變更 ARN 或函數程式碼。

授予許可

您可以使用以資源為基礎的政策以身分為基礎的政策來授予您函數的存取權。許可的範圍取決於您是將政策套用至函數或函數的一個版本。如需政策中函數資源名稱的詳細資訊,請參閱Lambda 動作的資源和條件

您可以使用函數別名簡化事件來源和 AWS Identity and Access Management (IAM) 政策的管理。如需更多詳細資訊,請參閱 Lambda 函數別名