本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 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/ |
否 (不可變) |
| 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)
-
執行下列命令來建立新的修訂。將 S3 儲存貯體、金鑰、角色 ARN 和組態值取代為您自己的值。
aws lambda-web create-web-function-revision \ --function-namemy-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。修訂以待定狀態開始。 -
-
若要確認修訂版為作用中,請執行下列命令。將
my-web-app取代為您的函數名稱,並將rev-a1b2c取代為回應revisionId中的 。aws lambda-web get-web-function-revision \ --function-namemy-web-app\ --revision-idrev-a1b2c當
state為 時,修訂已就緒Active。如果state是Failed,則stateReason說明原因。如需詳細資訊,請參閱修訂狀態。在您建立修訂之後,它通常
state為Pending。若要等到是Active,aws lambda-web wait web-function-revision-active請使用相同的選項執行 。
建立具有更新組態的修訂 (AWS CLI)
-
若要變更組態而不變更程式碼,請使用新設定指定相同的程式碼位置。下列範例會將逾時變更為 60 秒,並新增環境變數。
aws lambda-web create-web-function-revision \ --function-namemy-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" } }' -
若要確認修訂版為作用中,請執行下列命令。將
my-web-app取代為您的函數名稱,並將rev-a1b2c取代為回應revisionId中的 。aws lambda-web get-web-function-revision \ --function-namemy-web-app\ --revision-idrev-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-namemy-web-app
回應包含每個修訂的識別符、狀態、建立時間戳記和組態摘要。更新端點修訂權重或刪除修訂時,請使用修訂識別符。
刪除修訂
您可以刪除不再需要的修訂。刪除修訂會永久移除它。Amazon S3 中的部署套件不受影響。
重要
您無法刪除任何端點將流量路由到的修訂 (任何端點上具有非零權重的修訂)。從每個端點的修訂權重移除修訂,然後再刪除它。
刪除修訂 (AWS CLI)
-
執行下列命令來刪除特定修訂。
aws lambda-web delete-web-function-revision \ --function-namemy-web-app\ --revision-idrev-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 函數的擴展行為。