

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

# 管理 Web 函數修訂
<a name="web-functions-revisions"></a>

修訂是 Web 函數應用程式程式碼和組態的不可變快照。若要變更程式碼或任何修訂設定，例如 `maxConcurrencyPerEnvironment`、 `timeoutSeconds`或 `environmentVariables`，請建立新的修訂。新修訂是否接收流量取決於每個端點的自動部署模式。處於 **LatestRevision** 模式的端點會在新修訂版變成**作用中**後，將所有流量路由至新修訂版。處於**已停用**模式的端點會保留其目前的修訂權重，直到您變更為止。由於修訂是不可變的，因此您可以透過將流量路由到較早的修訂來轉返。先前的修訂版必須保持**作用中**，且其程式碼、金鑰、角色和其他相依性必須保持可用。如需在修訂版之間路由流量的資訊，請參閱 [部署模式](web-functions-deployment.md)。

## 修訂屬性
<a name="web-functions-revisions-properties"></a>

每個修訂都包含下列組態：


| 屬性 | 描述 | 預設 | 可變更 | 
| --- | --- | --- | --- | 
| revisionId | Lambda 在您建立修訂時產生的唯一 ID。 | – | 否 （產生的） | 
| revisionArn | 修訂的 Amazon Resource Name (ARN)。 | – | 否 （產生的） | 
| functionArn | 修訂版所屬之 Web 函數的 ARN。 | – | 否 （產生的） | 
| state | 修訂版的生命週期狀態 (Pending、 Active或 Failed)。如需詳細資訊，請參閱[修訂狀態](web-functions-how-it-works.md#web-functions-revision-states)。 | – | 否 （由 Lambda 管理） | 
| stateReason | 說明修訂版為何處於其目前狀態，例如Failed狀態的原因。 | – | 否 （由 Lambda 管理） | 
| 錯誤 | Lambda 在建立或讀取修訂時發現的錯誤清單。每個錯誤都會命名受影響的屬性，並包含錯誤代碼和訊息。當修訂版沒有錯誤時不存在。 | – | 否 （由 Lambda 管理） | 
| createdAt | 建立修訂時的時間戳記。 | – | 否 （產生的） | 
| description | 您在建立修訂版時提供的選用描述。 | 無 | 否 （不可變） | 
| buildConfig | 修訂版的程式碼和執行時間。包含下列資料列中所述的 codeConfig和 runtimeConfig設定。 | – | 否 （不可變） | 
| codeConfig | 部署套件的位置。包含下列資料列中所述s3Object的設定。的一部分buildConfig。 | – | 否 （不可變） | 
| s3Object | 部署套件的 Amazon S3 位置。包含下列資料列中所述的 key、 bucket和 versionId設定。如需詳細資訊，請參閱[從 Amazon S3 部署 Web 函數程式碼](web-functions-code-s3.md)。的一部分codeConfig。 | – | 否 （不可變） | 
| bucket | 包含部署套件的 Amazon S3 儲存貯體名稱。儲存貯體必須啟用 S3 版本控制。的一部分s3Object。 | – | 否 （不可變） | 
| 金鑰 | 部署套件的 Amazon S3 物件金鑰。的一部分s3Object。 | – | 否 （不可變） | 
| versionId | Amazon S3 物件的版本 ID。選用。如果您省略它，Lambda 會在建立時使用最新版本的物件。無論哪種方式，Lambda 都會將修訂綁定到特定物件版本。的一部分s3Object。 | 最新版本 | 否 （不可變） | 
| runtimeConfig | 執行時間組態。包含下一列所述的runtime設定。的一部分buildConfig。 | – | 否 （不可變） | 
| runtime | 執行時間識別符 （例如 nodejs24.x)。如需支援的執行時間，請參閱 [Lambda Web 函數執行時間](web-functions-runtimes.md)。雖然執行時間識別符已修正為修訂版，但執行時間本身不會凍結。Lambda 會自動將安全修補程式和錯誤修正套用至執行時間，因此識別符 （例如，nodejs24.x) 一律解析為最新的修補版本。如需詳細資訊，請參閱[自動執行階段修補](web-functions-runtimes.md#web-functions-runtimes-patching)。的一部分runtimeConfig。 | – | 否 （不可變） | 
| serviceConfig | 修訂版的執行時間設定。包含下列資料列中所述的 executionRoleArn、environmentVariables、、 timeoutSeconds maxConcurrencyPerEnvironment和 telemetryConfig設定。 | – | 否 （不可變） | 
| executionRoleArn | Web 函數在執行時間擔任之 IAM 角色的 ARN。角色會授予存取 AWS 服務和資源的許可。必要. 如需詳細資訊，請參閱[執行角色](web-functions-permissions.md#web-functions-permissions-execution-role)。的一部分serviceConfig。 | – | 否 （不可變） | 
| timeoutSeconds | 單一 HTTP 請求可執行的時間上限，以秒為單位。有效值：3–900。的一部分serviceConfig。 | 30 | 否 （不可變） | 
| maxConcurrencyPerEnvironment | 每個執行環境的並行 HTTP 請求數目上限。有效值：1–128。的一部分serviceConfig。 | 64 | 否 （不可變） | 
| environmentVariables | 您的應用程式在執行時間可使用的鍵/值對。建立後設定每個修訂和不可變。的一部分serviceConfig。 | 無 | 否 （不可變） | 
| telemetryConfig | 修訂版的遙測設定。包含下列資料列中所述loggingConfig的設定。如果您省略 telemetryConfig，Lambda 仍會將您的應用程式日誌傳送至預設日誌群組。的一部分serviceConfig。 | 無 | 否 （不可變） | 
| loggingConfig | 修訂版的記錄組態。包含下列資料列中所述的 applicationLogLevel、 logGroup和 systemLogLevel設定。如需詳細資訊，請參閱[記錄控制項](web-functions-logging.md#web-functions-logging-format-levels)。的一部分telemetryConfig。 | 無 | 否 （不可變） | 
| logGroup | 接收日誌的 Amazon CloudWatch Logs 日誌群組。以 開頭的日誌群組名稱aws/會保留並拒絕。如需詳細資訊，請參閱[使用自訂日誌群組](web-functions-logging.md#web-functions-logging-custom-group)。的一部分loggingConfig。 | /aws/lambda/web/{{function-name}} | 否 （不可變） | 
| applicationLogLevel | Lambda 傳送至 Amazon CloudWatch Logs 的應用程式日誌的最低嚴重性。有效值：TRACE、DEBUG、INFO、ERROR、 WARN和 FATAL。的一部分loggingConfig。 | INFO | 否 （不可變） | 
| systemLogLevel | Lambda 傳送給 Amazon CloudWatch Logs 的 Lambda 產生系統日誌的最低嚴重性。有效值：DEBUG、INFO 和 WARN。的一部分loggingConfig。 | INFO | 否 （不可變） | 
| kmsKeyArn | 用於加密程式碼和環境變數之客戶受管金鑰的 ARN。選用。如果 MultiRegion或 PerRegion 端點將流量路由到修訂版，請在每個端點的區域中使用具有複本的多區域金鑰。如需詳細資訊，請參閱[Web 函數的靜態加密](web-functions-encryption.md)。 | 無 | 否 （不可變） | 

所有修訂屬性在建立後都是不可變的。若要變更任何組態，請使用更新的值建立新的修訂。

## 建立修訂
<a name="web-functions-revisions-create"></a>

當您呼叫 時，Lambda 會建立修訂`CreateWebFunctionRevision`。您可以在請求中提供程式碼位置和組態。新的修訂不會從現有的修訂複製設定。指定您要保留的每個設定，包括環境變數。您省略的設定會使用其預設值。若要從目前值開始，請執行 `get-web-function-revision` 和 `buildConfig``serviceConfig`並與您的變更一起重複使用。新的修訂會在 Lambda 下載程式碼並從中準備程式碼成品時，以**待**定狀態開始。準備完成時，修訂會轉換為**作用中**。如果在準備期間發生錯誤，修訂會轉換為**失敗**，且無法為流量提供服務。如需每個狀態的詳細資訊，請參閱 [修訂狀態](web-functions-how-it-works.md#web-functions-revision-states)。

建立修訂之前，請將 .zip 部署套件上傳至版本控制的 Amazon S3 儲存貯體，並取得 Lambda 可擔任之執行角色的 ARN。如需詳細資訊，請參閱 [從 Amazon S3 部署 Web 函數程式碼](web-functions-code-s3.md) 和 [執行角色](web-functions-permissions.md#web-functions-permissions-execution-role)。

**使用更新的程式碼建立修訂 (AWS CLI)**

1. 執行下列命令來建立新的修訂。將 S3 儲存貯體、金鑰、角色 ARN 和組態值取代為您自己的值。

   ```
   aws lambda-web create-web-function-revision \
       --function-name {{my-web-app}} \
       --build-config '{
         "codeConfig": {
           "s3Object": {
             "bucket": "{{my-bucket}}",
             "key": "{{my-app-v2.zip}}"
           }
         },
         "runtimeConfig": { "runtime": "nodejs24.x" }
       }' \
       --service-config '{
         "executionRoleArn": "arn:aws:iam::{{111122223333}}:role/{{my-web-function-role}}"
       }'
   ```

   命令使用下列物件。如需每個設定及其預設值，請參閱 [修訂屬性](#web-functions-revisions-properties)。
   + `buildConfig` 包含 `codeConfig`、部署套件的 Amazon S3 儲存貯體和金鑰，以及 `runtimeConfig`、執行時間 （例如 `nodejs24.x`)。兩者都是必要參數。
   + `serviceConfig` 包含必要的 `executionRoleArn`，即 Web 函數在執行時擔任之執行角色的 ARN。它也可以包含 `timeoutSeconds`、`environmentVariables`、 `maxConcurrencyPerEnvironment`和 `telemetryConfig`。

   命令會傳回新修訂版的詳細資訊，包括其 `revisionId`。修訂以**待**定狀態開始。

1. 若要確認修訂版為**作用中**，請執行下列命令。將 {{my-web-app}} 取代為您的函數名稱，並將 {{rev-a1b2c}} 取代為回應`revisionId`中的 。

   ```
   aws lambda-web get-web-function-revision \
       --function-name {{my-web-app}} \
       --revision-id {{rev-a1b2c}}
   ```

   當 `state`為 時，修訂已就緒`Active`。如果 `state`是 `Failed`，則`stateReason`說明原因。如需詳細資訊，請參閱[修訂狀態](web-functions-how-it-works.md#web-functions-revision-states)。

   在您建立修訂之後，它通常`state`為 `Pending`。若要等到是 `Active`，`aws lambda-web wait web-function-revision-active`請使用相同的選項執行 。

**建立具有更新組態的修訂 (AWS CLI)**

1. 若要變更組態而不變更程式碼，請使用新設定指定相同的程式碼位置。下列範例會將逾時變更為 60 秒，並新增環境變數。

   ```
   aws lambda-web create-web-function-revision \
       --function-name {{my-web-app}} \
       --build-config '{
         "codeConfig": {
           "s3Object": {
             "bucket": "{{my-bucket}}",
             "key": "{{my-app-v2.zip}}"
           }
         },
         "runtimeConfig": { "runtime": "nodejs24.x" }
       }' \
       --service-config '{
         "executionRoleArn": "arn:aws:iam::{{111122223333}}:role/{{my-web-function-role}}",
         "timeoutSeconds": 60,
         "maxConcurrencyPerEnvironment": 32,
         "environmentVariables": {
           "DATABASE_URL": "{{my-database-endpoint}}",
           "LOG_LEVEL": "info"
         }
       }'
   ```

1. 若要確認修訂版為**作用中**，請執行下列命令。將 {{my-web-app}} 取代為您的函數名稱，並將 {{rev-a1b2c}} 取代為回應`revisionId`中的 。

   ```
   aws lambda-web get-web-function-revision \
       --function-name {{my-web-app}} \
       --revision-id {{rev-a1b2c}}
   ```

   當 `state`為 時，修訂已就緒`Active`。如果 `state`是 `Failed`，則`stateReason`說明原因。如需詳細資訊，請參閱[修訂狀態](web-functions-how-it-works.md#web-functions-revision-states)。

   在您建立修訂之後，它通常`state`為 `Pending`。若要等到是 `Active`，`aws lambda-web wait web-function-revision-active`請使用相同的選項執行 。

建立修訂之後，流量如何到達它取決於端點的自動部署模式。如需詳細資訊，請參閱[部署模式](web-functions-deployment.md)。

## 列出修訂
<a name="web-functions-revisions-list"></a>

若要檢視 Web 函數的所有修訂，請使用下列命令：

```
aws lambda-web list-web-function-revisions \
    --function-name {{my-web-app}}
```

回應包含每個修訂的識別符、狀態、建立時間戳記和組態摘要。更新端點修訂權重或刪除修訂時，請使用修訂識別符。

## 刪除修訂
<a name="web-functions-revisions-delete"></a>

您可以刪除不再需要的修訂。刪除修訂會永久移除它。Amazon S3 中的部署套件不受影響。

**重要**  
您無法刪除任何端點將流量路由到的修訂 （任何端點上具有非零權重的修訂）。從每個端點的修訂權重移除修訂，然後再刪除它。

**刪除修訂 (AWS CLI)**
+ 執行下列命令來刪除特定修訂。

  ```
  aws lambda-web delete-web-function-revision \
      --function-name {{my-web-app}} \
      --revision-id {{rev-a1b2c}}
  ```

### 修訂限制和自動清除
<a name="web-functions-revisions-limits"></a>

Lambda 使用每個 Web 函數 50 個修訂作為其自動清除目標。目標無法調整。在 Service Quotas 主控台中，它會顯示為**每個 Web 函數的修訂版** (`web-function-revisions-per-function`)。

您不需要刪除舊的修訂，即可保持在清除目標內。當新的修訂變為**作用中**且總修訂計數超過清除目標時，Lambda 會自動刪除未使用的最舊修訂。當任何端點將流量路由到它時，正在使用修訂，包括在 `MultiRegion`或 `PerRegion`端點的 `regionalEndpoints` 屬性的任何位置參考它時。Lambda 不會自動刪除正在使用的修訂或剛變成**作用中**的修訂。清除是非同步的。當較舊的修訂仍在使用中或正在進行清除時，修訂計數可能會暫時超過 50。您從所有修訂權重移除的修訂，例如轉返目標，可以透過清除來刪除。

您也可以隨時手動刪除修訂。如需此程序，請參閱上一節。

每個修訂版的部署套件最多可達 512 MB （解壓縮）。由於您在自己的 Amazon S3 儲存貯體中提供部署套件，且 Lambda 直接從儲存貯體參考您的程式碼，因此 Web 函數沒有單獨的程式碼儲存配額。如需詳細資訊，請參閱[從 Amazon S3 部署 Web 函數程式碼](web-functions-code-s3.md)。

## 設定修訂設定
<a name="web-functions-revisions-configuration"></a>

所有組態都會依修訂版設定，且在建立後是不可變的。若要變更任何設定，請使用更新的值建立新的修訂。下列設定控制執行行為。

如需請求逾時和環境變數設定，請參閱 [環境變數](web-functions-revisions-env-vars.md)中的 [請求逾時](web-functions-revisions-timeout.md)和 [設定 Lambda Web 函數](web-functions-configuration.md)。

### 每個環境的並行數
<a name="web-functions-revisions-concurrency"></a>

`maxConcurrencyPerEnvironment` 設定可控制單一執行環境同時處理的 HTTP 請求數量。有效值為 1–128。預設為 64。

對於 I/O 繫結應用程式 （許多請求正在等待資料庫或網路呼叫），較高的值可最大化使用率。對於 CPU 繫結的應用程式，較低的值可減少爭用。如需詳細的指導方針，請參閱 [Lambda Web 函數的擴展行為](web-functions-scaling.md)。