

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

# 管理 Lambda 函數版本
<a name="configuration-versions"></a>

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

重要的是，每當您部署函式程式碼時，都會覆寫 `$LATEST` 中的目前程式碼。若要儲存 `$LATEST` 的目前迭代，需建立新的函式版本。如果 `$LATEST` 與先前發布的版本相同，則必須先將變更部署到 `$LATEST`，才能建立新版本。這些變更可能包括更新程式碼或修改函式組態設定。

發布函數版本後，其程式碼、執行時期、架構、記憶體、層以及大多數其他組態設定都是不可變的。這意味著如果未從 `$LATEST` 發布新版本，就無法變更這些設定。您可以為已發佈的函數版本設定下列項目：
+ [觸發](lambda-services.md#lambda-invocation-trigger)
+ [目的地](invocation-async-retain-records.md#create-destination)
+ [佈建並行](provisioned-concurrency.md)
+ [非同步叫用](invocation-async.md)
+ [資料庫連線和代理](services-rds.md#rds-configuration)

**注意**  
搭配使用[執行時期管理控制項](runtimes-update.md#runtime-management-controls)與**自動**模式時，函數版本所使用的執行時期版本會自動更新。使用 **Function update** (函數更新) 或 **Manual** (手動) 模式時，不會更新執行階段版本。如需詳細資訊，請參閱[了解 Lambda 如何管理執行時期版本更新](runtimes-update.md)。

**Topics**
+ [建立函數版本](#configuration-versions-config)
+ [使用版本](#versioning-versions-using)
+ [授予許可](#versioning-permissions)

## 建立函數版本
<a name="configuration-versions-config"></a>

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

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

**新建函數版本**

1. 開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇一個函數，然後選擇 **Versions** 索引標簽。

1. 在版本組態頁面上，選擇 **Publish new version (發佈新版本)**。

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

1. 選擇**發布**。

或者，您可以使用 [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html) API 操作發佈函數的版本。

下列 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": "nodejs24.x",
  ...
}
```

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

## 使用版本
<a name="versioning-versions-using"></a>

您可以使用合格的 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 來建立別名。

如果您決定不發佈函數版本，則可以在[事件來源映射](invocation-eventsourcemapping.md)中使用合格或不合格的 ARN 來調用函數。當您使用不合格的 ARN 調用函數時，Lambda 會隱含調用 `$LATEST`。

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

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

當您發布一個版本時，Lambda 會建立函式程式碼與組態的不可變快照。並非所有組態變更都會觸發新版本的發布。下列組態變更符合函式發布版本的條件：
+ 函數程式碼
+ 環境變數
+ 執行時期
+ 處理常式
+ 層
+ 記憶體大小
+ Timeout (逾時)
+ VPC 組態
+ 無效字母佇列 (DLQ) 組態
+ IAM 角色
+ Description
+ 架構 (x86\_64 或 arm64)
+ 暫時性儲存大小
+ 套件類型
+ 記錄組態
+ 檔案系統組態
+ SnapStart
+ 追蹤組態

[預留並行](configuration-concurrency.md)等操作設定的變更不會觸發新版本的發布。

## 授予許可
<a name="versioning-permissions"></a>

您可以使用[以資源為基礎的政策](access-control-resource-based.md)或[以身分為基礎的政策](access-control-identity-based.md)來授予您函數的存取權。許可的範圍取決於您是將政策套用至函數或函數的一個版本。如需政策中函數資源名稱的詳細資訊，請參閱[微調政策的資源和條件區段](lambda-api-permissions-ref.md)。

您可以使用 函數別名，簡化事件來源和 AWS Identity and Access Management (IAM) 政策的管理。如需詳細資訊，請參閱[建立 Lambda 函數的別名](configuration-aliases.md)。