Lambda 函數版本 - AWS Lambda

Lambda 函數版本

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

注意

如果未發佈版本中的程式碼與先前發佈的版本相同,則 Lambda 不會建立新版本。您需要先以 $LATEST 部署程式碼變更,才能建立新版本。

函數版本包含下列資訊:

  • 函數代碼及所有相關聯的依存項目。

  • 叫用函數的 Lambda 執行時間。

  • 所有函數設定,包含環境變數。

  • 用於識別特定版本之函數的唯一 Amazon 資源名稱 (ARN)。

建立函數版本

您只能在未發佈的函數版本上變更函數代碼和設定。當您發佈版本時,Lambda 會鎖定程式碼和大多數設定來為該版本的使用者保持一致的使用體驗。如需關於配置函式設定的詳細資訊,請參閱 設定 Lambda 函數選項

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

新建函數版本

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

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

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

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

  5. 選擇 Publish (發佈)

使用 Lambda API 來管理版本

若要發佈函數的某個版本,請使用 PublishVersion API 操作。

下列範例會發佈新版本的函數。回應會傳回關於新版本的組態資訊,包含版本號碼,以及含有版本尾碼的函式 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": "nodejs12.x", ... }

使用版本

您可以使用合格的 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 函數別名