View a markdown version of this page

管理 Web 函數修訂 - AWS Lambda

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

管理 Web 函數修訂

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

修訂屬性

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

屬性 描述 預設 可變更
revisionId Lambda 在您建立修訂時產生的唯一 ID。 – 否 (產生的)
revisionArn 修訂的 Amazon Resource Name (ARN)。 – 否 (產生的)
functionArn 修訂版所屬之 Web 函數的 ARN。 – 否 (產生的)
state 修訂版的生命週期狀態 (Pending、 Active或 Failed)。如需詳細資訊,請參閱修訂狀態。 – 否 (由 Lambda 管理)
stateReason 說明修訂版為何處於其目前狀態,例如Failed狀態的原因。 – 否 (由 Lambda 管理)
錯誤 Lambda 在建立或讀取修訂時發現的錯誤清單。每個錯誤都會命名受影響的屬性,並包含錯誤代碼和訊息。當修訂版沒有錯誤時不存在。 – 否 (由 Lambda 管理)
createdAt 建立修訂時的時間戳記。 – 否 (產生的)
description 您在建立修訂版時提供的選用描述。 無 否 (不可變)
buildConfig 修訂版的程式碼和執行時間。包含下列資料列中所述的 codeConfig和 runtimeConfig設定。 – 否 (不可變)
codeConfig 部署套件的位置。包含下列資料列中所述s3Object的設定。的一部分buildConfig。 – 否 (不可變)
s3Object 部署套件的 Amazon S3 位置。包含下列資料列中所述的 key、 bucket和 versionId設定。如需詳細資訊,請參閱從 Amazon S3 部署 Web 函數程式碼。的一部分codeConfig。 – 否 (不可變)
bucket 包含部署套件的 Amazon S3 儲存貯體名稱。儲存貯體必須啟用 S3 版本控制。的一部分s3Object。 – 否 (不可變)
金鑰 部署套件的 Amazon S3 物件金鑰。的一部分s3Object。 – 否 (不可變)
versionId Amazon S3 物件的版本 ID。選用。如果您省略它,Lambda 會在建立時使用最新版本的物件。無論哪種方式,Lambda 都會將修訂綁定到特定物件版本。的一部分s3Object。 最新版本 否 (不可變)
runtimeConfig 執行時間組態。包含下一列所述的runtime設定。的一部分buildConfig。 – 否 (不可變)
runtime 執行時間識別符 (例如 nodejs24.x)。如需支援的執行時間,請參閱 Lambda Web 函數執行時間。雖然執行時間識別符已修正為修訂版,但執行時間本身不會凍結。Lambda 會自動將安全修補程式和錯誤修正套用至執行時間,因此識別符 (例如,nodejs24.x) 一律解析為最新的修補版本。如需詳細資訊,請參閱自動執行階段修補。的一部分runtimeConfig。 – 否 (不可變)
serviceConfig 修訂版的執行時間設定。包含下列資料列中所述的 executionRoleArn、environmentVariables、、 timeoutSeconds maxConcurrencyPerEnvironment和 telemetryConfig設定。 – 否 (不可變)
executionRoleArn Web 函數在執行時間擔任之 IAM 角色的 ARN。角色會授予存取 AWS 服務和資源的許可。必要. 如需詳細資訊,請參閱執行角色。的一部分serviceConfig。 – 否 (不可變)
timeoutSeconds 單一 HTTP 請求可執行的時間上限,以秒為單位。有效值:3–900。的一部分serviceConfig。 30 否 (不可變)
maxConcurrencyPerEnvironment 每個執行環境的並行 HTTP 請求數目上限。有效值:1–128。的一部分serviceConfig。 64 否 (不可變)
environmentVariables 您的應用程式在執行時間可使用的鍵/值對。建立後設定每個修訂和不可變。的一部分serviceConfig。 無 否 (不可變)
telemetryConfig 修訂版的遙測設定。包含下列資料列中所述loggingConfig的設定。如果您省略 telemetryConfig,Lambda 仍會將您的應用程式日誌傳送至預設日誌群組。的一部分serviceConfig。 無 否 (不可變)
loggingConfig 修訂版的記錄組態。包含下列資料列中所述的 applicationLogLevel、 logGroup和 systemLogLevel設定。如需詳細資訊,請參閱記錄控制項。的一部分telemetryConfig。 無 否 (不可變)
logGroup 接收日誌的 Amazon CloudWatch Logs 日誌群組。以 開頭的日誌群組名稱aws/會保留並拒絕。如需詳細資訊,請參閱使用自訂日誌群組。的一部分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 函數的靜態加密。 無 否 (不可變)

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

建立修訂

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

建立修訂之前,請將 .zip 部署套件上傳至版本控制的 Amazon S3 儲存貯體,並取得 Lambda 可擔任之執行角色的 ARN。如需詳細資訊,請參閱 從 Amazon S3 部署 Web 函數程式碼 和 執行角色。

使用更新的程式碼建立修訂 (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" }'

    命令使用下列物件。如需每個設定及其預設值,請參閱 修訂屬性。

    • buildConfig 包含 codeConfig、部署套件的 Amazon S3 儲存貯體和金鑰,以及 runtimeConfig、執行時間 (例如 nodejs24.x)。兩者都是必要參數。

    • serviceConfig 包含必要的 executionRoleArn,即 Web 函數在執行時擔任之執行角色的 ARN。它也可以包含 timeoutSeconds、environmentVariables、 maxConcurrencyPerEnvironment和 telemetryConfig。

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

  2. 若要確認修訂版為作用中,請執行下列命令。將 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說明原因。如需詳細資訊,請參閱修訂狀態。

    在您建立修訂之後,它通常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" } }'
  2. 若要確認修訂版為作用中,請執行下列命令。將 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說明原因。如需詳細資訊,請參閱修訂狀態。

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

建立修訂之後,流量如何到達它取決於端點的自動部署模式。如需詳細資訊,請參閱部署模式。

列出修訂

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

aws lambda-web list-web-function-revisions \ --function-name my-web-app

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

刪除修訂

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

重要

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

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

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

修訂限制和自動清除

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 函數程式碼。

設定修訂設定

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

如需請求逾時和環境變數設定,請參閱 環境變數中的 請求逾時和 設定 Lambda Web 函數。

每個環境的並行數

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

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