UpdateFunctionCode - AWS Lambda

UpdateFunctionCode

更新 Lambda 函數的程式碼。如果已對函數啟用程式碼簽署,則程式碼套件必須由受信任的發佈者簽署。如需詳細資訊,請參閱設定程式碼簽署

如果函數的套件類型是 Image,您必須將 ImageUri 中的程式碼套件指定為 Amazon ECR 登錄檔中的容器映像

如果函數套件類型是 Zip,則必須將部署套件指定為 .zip 檔案封存。輸入 Amazon S3 儲存貯體和程式碼 .zip 檔案位置的金鑰。您也可以使用 ZipFile 欄位來提供內嵌的函數程式碼。

部署套件中的程式碼必須與函數 (x86-64arm64) 的目標指令集架構相容。

當您發佈版本時,函數的程式碼被鎖定。您無法修改已發佈版本的程式碼,只能修改未發佈版本。

注意

對於定義為容器映像的函數,Lambda 會將映像標籤解析為映像摘要。在 Amazon ECR 中,如果您將映像標籤更新為新映像,則 Lambda 不會自動更新該函數。

請求語法

PUT /2015-03-31/functions/FunctionName/code HTTP/1.1 Content-type: application/json { "Architectures": [ "string" ], "DryRun": boolean, "ImageUri": "string", "Publish": boolean, "RevisionId": "string", "S3Bucket": "string", "S3Key": "string", "S3ObjectVersion": "string", "ZipFile": blob }

URI 請求參數

請求會使用下列 URI 參數。

FunctionName

Lambda 函數的名稱。

名稱格式

  • 函數名稱 - my-function

  • 函數 ARN - arn:aws:lambda:us-west-2:123456789012:function:my-function

  • 部分 ARN - 123456789012:function:my-function

長度限制條件僅會套用到完整的 ARN。若您僅指定函數名稱,則其長度限制為 64 個字元。

長度限制:長度下限為 1,長度上限為 140。

模式:(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

必要:是

請求主體

請求接受採用 JSON 格式的下列資料。

Architectures

函數支援的指令集架構。輸入具有其中一個有效值 (arm64 或 x86_64) 的字串陣列。預設值為 x86_64

類型:字串陣列

陣列成員:固定項目數為 1。

有效值: x86_64 | arm64

必要:否

DryRun

設定為 true 可驗證請求參數並存取許可,而無需修改函數程式碼。

類型:布林值

必要:否

ImageUri

Amazon ECR 登錄檔中容器映像的 URI。請勿將此函數用於以 .zip 檔案封存定義的函數。

類型:字串

必要:否

Publish

設為 true,以在更新程式碼之後發佈新版本的函數。此操作與單獨呼叫 PublishVersion 效果相同。

類型:布林值

必要:否

RevisionId

只有在修訂版本 ID 符合指定的 ID 時才更新函數。使用此選項來避免修改自您最近一次讀取之後產生變更的函數。

類型:字串

必要:否

S3Bucket

與您的函數位於同一 AWS 區域的 Amazon S3 儲存貯體。儲存貯體可位於不同的 AWS 帳戶中。只能與 .zip 檔案封存部署套件定義的函數搭配使用。

類型:字串

長度限制:長度下限為 3。長度上限為 63。

模式:^[0-9A-Za-z\.\-_]*(?<!\.)$

必要:否

S3Key

部署套件的 Amazon S3 金鑰。只能與 .zip 檔案封存部署套件定義的函數搭配使用。

類型:字串

長度限制:長度下限為 1,長度上限為 1024。

必要:否

S3ObjectVersion

對於版本控制的物件,要使用的部署套件物件版本。

類型:字串

長度限制:長度下限為 1,長度上限為 1024。

必要:否

ZipFile

部署套件的 base64 編碼內容。AWSSDK 和 AWS CLI 用戶端會為您處理編碼。只能與 .zip 檔案封存部署套件定義的函數搭配使用。

類型:Base64 編碼的二進位資料物件

必要:否

回應語法

HTTP/1.1 200 Content-type: application/json { "Architectures": [ "string" ], "CodeSha256": "string", "CodeSize": number, "DeadLetterConfig": { "TargetArn": "string" }, "Description": "string", "Environment": { "Error": { "ErrorCode": "string", "Message": "string" }, "Variables": { "string" : "string" } }, "EphemeralStorage": { "Size": number }, "FileSystemConfigs": [ { "Arn": "string", "LocalMountPath": "string" } ], "FunctionArn": "string", "FunctionName": "string", "Handler": "string", "ImageConfigResponse": { "Error": { "ErrorCode": "string", "Message": "string" }, "ImageConfig": { "Command": [ "string" ], "EntryPoint": [ "string" ], "WorkingDirectory": "string" } }, "KMSKeyArn": "string", "LastModified": "string", "LastUpdateStatus": "string", "LastUpdateStatusReason": "string", "LastUpdateStatusReasonCode": "string", "Layers": [ { "Arn": "string", "CodeSize": number, "SigningJobArn": "string", "SigningProfileVersionArn": "string" } ], "MasterArn": "string", "MemorySize": number, "PackageType": "string", "RevisionId": "string", "Role": "string", "Runtime": "string", "SigningJobArn": "string", "SigningProfileVersionArn": "string", "State": "string", "StateReason": "string", "StateReasonCode": "string", "Timeout": number, "TracingConfig": { "Mode": "string" }, "Version": "string", "VpcConfig": { "SecurityGroupIds": [ "string" ], "SubnetIds": [ "string" ], "VpcId": "string" } }

回應元素

如果動作成功,則服務傳回 HTTP 200 回應。

服務會傳回下列 JSON 格式的資料。

Architectures

函數支援的指令集架構。架構是具有其中一個有效值的字串陣列。預設架構值為 x86_64

類型:字串陣列

陣列成員:固定項目數為 1。

有效值: x86_64 | arm64

CodeSha256

函數部署套件的 SHA256 雜湊。

類型:字串

CodeSize

函數部署套件的大小 (以位元組為單位)。

類型:長度

DeadLetterConfig

函數的無效信件佇列。

類型:DeadLetterConfig 物件

Description

函數的描述。

類型:字串

長度限制:長度下限為 0。長度上限為 256。

Environment

函數的環境變數

類型:EnvironmentResponse 物件

EphemeralStorage

函數的 /tmp 目錄的大小,以 MB 為單位。預設值為 512,但可以是介於 512 和 10240 MB 之間的任何非負整數。

類型:EphemeralStorage 物件

FileSystemConfigs

Amazon EFS 檔案系統的連線設定。

類型:FileSystemConfig 物件陣列

陣列成員:最多 1 個項目。

FunctionArn

函數的 Amazon 資源名稱 (ARN)。

類型:字串

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:function:[a-zA-Z0-9-_\.]+(:(\$LATEST|[a-zA-Z0-9-_]+))?

FunctionName

函數的名稱。

類型:字串

長度限制:長度下限為 1,長度上限為 170。

模式:(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_\.]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

Handler

Lambda 呼叫以開始執行函數的函數。

類型:字串

長度限制:長度上限為 128。

模式:[^\s]+

ImageConfigResponse

函數的映像組態值。

類型:ImageConfigResponse 物件

KMSKeyArn

用來加密函數環境變數的 AWS KMS key。只有在您已設定客戶受管金鑰的情況下,才會傳回此金鑰。

類型:字串

模式:(arn:(aws[a-zA-Z-]*)?:[a-z0-9-.]+:.*)|()

LastModified

上次更新函數的日期和時間,採用 ISO-8601 格式 (YYYY-MM-DDThh:mm:ss.sTZD)。

類型:字串

LastUpdateStatus

對函數執行的上次更新的狀態。這是在函數建立完成後首次設定為 Successful

類型:字串

有效值: Successful | Failed | InProgress

LastUpdateStatusReason

對函數執行的上次更新的原因。

類型:字串

LastUpdateStatusReasonCode

對函數執行的上次更新的原因代碼。

類型:字串

有效值: EniLimitExceeded | InsufficientRolePermissions | InvalidConfiguration | InternalError | SubnetOutOfIPAddresses | InvalidSubnet | InvalidSecurityGroup | ImageDeleted | ImageAccessDenied | InvalidImage

Layers

函數的

類型:Layer 物件陣列

MasterArn

若是 Lambda@Edge 函數,則為主函數的 ARN。

類型:字串

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:function:[a-zA-Z0-9-_]+(:(\$LATEST|[a-zA-Z0-9-_]+))?

MemorySize

可供函式在執行階段使用的記憶體量 (MB)。

類型:整數

有效範圍:最小值為 128。最大值為 10240。

PackageType

部署套件的類型。針對容器影像設定為 Image,並針對 .zip 檔案封存設定 Zip

類型:字串

有效值: Zip | Image

RevisionId

函數或別名的最新更新修訂版。

類型:字串

Role

函數的執行角色。

類型:字串

模式:arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+

Runtime

Lambda 函數的執行時間環境。

類型:字串

有效值: nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x | nodejs12.x | nodejs14.x | java8 | java8.al2 | java11 | python2.7 | python3.6 | python3.7 | python3.8 | python3.9 | dotnetcore1.0 | dotnetcore2.0 | dotnetcore2.1 | dotnetcore3.1 | dotnet6 | nodejs4.3-edge | go1.x | ruby2.5 | ruby2.7 | provided | provided.al2

SigningJobArn

簽署任務的 ARN。

類型:字串

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

SigningProfileVersionArn

簽署描述檔版本的 ARN。

類型:字串

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

State

函數目前的狀態。當狀態為 Inactive 時,您可以透過叫用它來重新激活該函數。

類型:字串

有效值: Pending | Active | Inactive | Failed

StateReason

函數目前狀態的原因。

類型:字串

StateReasonCode

函數目前狀態的原因代碼。當代碼為 Creating 時,則無法叫用或修改函數。

類型:字串

有效值: Idle | Creating | Restoring | EniLimitExceeded | InsufficientRolePermissions | InvalidConfiguration | InternalError | SubnetOutOfIPAddresses | InvalidSubnet | InvalidSecurityGroup | ImageDeleted | ImageAccessDenied | InvalidImage

Timeout

Lambda 在停止函數前允許函數執行的時間 (以秒為單位)。

類型:整數

有效範圍:最小值為 1。

TracingConfig

函數的 AWS X-Ray 追蹤組態。

類型:TracingConfigResponse 物件

Version

Lambda 函數的版本。

類型:字串

長度限制:長度下限為 1,長度上限為 1024。

模式:(\$LATEST|[0-9]+)

VpcConfig

函數的聯網設定。

類型:VpcConfigResponse 物件

錯誤

CodeSigningConfigNotFoundException

指定的程式碼簽署組態不存在。

HTTP 狀態碼:404

CodeStorageExceededException

已超過每個帳戶的總程式碼大小上限。進一步了解

HTTP 狀態碼:400

CodeVerificationFailedException

程式碼簽章無法進行一個或多個驗證檢查,因為簽章不符或到期,程式碼簽署政策設定為 ENFORCE。Lambda 會阻止部署。

HTTP 狀態碼:400

InvalidCodeSignatureException

程式碼簽章無法進行完整性檢查。如果完整性檢查失敗,Lambda 一律會阻止部署,即使程式碼簽署政策設定為 WARN。

HTTP 狀態碼:400

InvalidParameterValueException

請求中的其中一個參數無效。

HTTP 狀態碼:400

PreconditionFailedException

所提供的 RevisionId 與 Lambda 函數或別名的最新 RevisionId 不相符。呼叫 GetFunctionGetAlias API 來擷取資源的最新 RevisionId。

HTTP 狀態碼:412

ResourceConflictException

資源已存在,或另一個操作正在進行中。

HTTP 狀態碼:409

ResourceNotFoundException

請求中指定的資源不存在。

HTTP 狀態碼:404

ServiceException

AWS Lambda 服務發生內部錯誤。

HTTP 狀態碼:500

TooManyRequestsException

超出請求輸送量限制。

HTTP 狀態碼:429

另請參閱

如需在語言特定的 AWS 開發套件之一中使用此 API 的詳細資訊,請參閱下列說明: