UpdateFunctionCode - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

UpdateFunctionCode

更新 Lambda 函数代码。如果为函数启用了代码签名,则代码包必须由受信任的发布者签名。有关更多信息,请参阅为 Lambda 配置代码签名

如果函数的代码包类型为 Image,则您必须将 ImageUri 中的代码包指定为 Amazon ECR 注册表中容器映像的 URI。

如果函数的代码包类型为 Zip,则您必须将部署包指定为 .zip 文件归档。输入代码 .zip 文件位置的 Amazon S3 存储桶和密钥。此外,您还可以使用 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

  • 函数 ARNarn:aws:lambda:us-west-2:123456789012:function:my-function

  • 部分 ARN123456789012: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

与您的函数处于同一 Amazon Web Services 区域 的 Amazon S3 桶。存储桶可能位于不同的 Amazon Web Services 账户 中。仅与使用 .zip 文件归档部署包定义的函数搭配使用。

类型:字符串

长度限制:最小长度为 3。长度上限为 63。

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

必需:否

S3Key

部署程序包的 Amazon S3 密钥。仅与使用 .zip 文件归档部署包定义的函数搭配使用。

类型:字符串

长度限制:最小长度为 1。最大长度为 1024。

必需:否

S3ObjectVersion

对于版本控制的对象,指要使用的部署程序包对象的版本。

类型:字符串

长度限制:最小长度为 1。最大长度为 1024。

必需:否

ZipFile

部署程序包的 base64 编码内容。Amazon开发工具包和 Amazon 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" } ], "LoggingConfig": { "ApplicationLogLevel": "string", "LogFormat": "string", "LogGroup": "string", "SystemLogLevel": "string" }, "MasterArn": "string", "MemorySize": number, "PackageType": "string", "RevisionId": "string", "Role": "string", "Runtime": "string", "RuntimeVersionConfig": { "Error": { "ErrorCode": "string", "Message": "string" }, "RuntimeVersionArn": "string" }, "SigningJobArn": "string", "SigningProfileVersionArn": "string", "SnapStart": { "ApplyOn": "string", "OptimizationStatus": "string" }, "State": "string", "StateReason": "string", "StateReasonCode": "string", "Timeout": number, "TracingConfig": { "Mode": "string" }, "Version": "string", "VpcConfig": { "Ipv6AllowedForDualStack": boolean, "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

函数环境变量。在 Amazon CloudTrail 日志中被忽略。

类型:EnvironmentResponse 对象

EphemeralStorage

函数的 /tmp 目录大小(以 MB 为单位)。默认值为 512,但可以是介于 512 到 10240 MB 之间的任意整数。有关更多信息,请参阅配置短暂存储(控制台)

类型:EphemeralStorage 对象

FileSystemConfigs

Amazon EFS 文件系统的连接设置。

类型:FileSystemConfig 对象数组

数组成员:最多 1 个物品。

FunctionArn

函数的 Amazon Resource Name (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

用于加密函数的环境变量的 Amazon KMS key。激活 Lambda SnapStart 时,此密钥还用于加密您的函数的快照。仅当您配置了客户托管密钥时,才会返回此密钥。

类型:字符串

模式:(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 | KMSKeyAccessDenied | KMSKeyNotFound | InvalidStateKMSKey | DisabledKMSKey | EFSIOError | EFSMountConnectivityError | EFSMountFailure | EFSMountTimeout | InvalidRuntime | InvalidZipFileException | FunctionError

Layers

函数的

类型:Layer 对象数组

LoggingConfig

该函数的 Amazon CloudWatch Logs 配置设置。

类型:LoggingConfig 对象

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

在运行时 可用于函数的内存 量。

类型:整数

有效范围:最小值为 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

函数的运行时的标识符。如果部署包是 .zip 文件归档,则需要使用运行时。

以下列表包括已弃用的运行时。有关更多信息,请参阅运行时弃用策略

类型:字符串

有效值:nodejs | nodejs4.3 | nodejs6.10 | nodejs8.10 | nodejs10.x | nodejs12.x | nodejs14.x | nodejs16.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 | nodejs18.x | python3.10 | java17 | ruby3.2 | python3.11 | nodejs20.x | provided.al2023 | python3.12 | java21

RuntimeVersionConfig

运行时的 ARN 和发生的任何错误。

类型:RuntimeVersionConfig 对象

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})?:(.*)

SnapStart

发布函数版本时,将 ApplyOn 设置为 PublishedVersions 以创建初始化执行环境的快照。有关更多信息,请参阅 Improving startup performance with Lambda SnapStart(使用 Lambda SnapStart 提高启动性能)。

类型:SnapStartResponse 对象

State

函数的当前状态。当状态为 Inactive,您可以通过调用函数来重新激活该函数。

类型:字符串

有效值:Pending | Active | Inactive | Failed

StateReason

函数当前状态的原因。

类型:字符串

StateReasonCode

函数当前状态的原因代码。当代码为 Creating 时,无法调用或修改该函数。

类型:字符串

有效值:Idle | Creating | Restoring | EniLimitExceeded | InsufficientRolePermissions | InvalidConfiguration | InternalError | SubnetOutOfIPAddresses | InvalidSubnet | InvalidSecurityGroup | ImageDeleted | ImageAccessDenied | InvalidImage | KMSKeyAccessDenied | KMSKeyNotFound | InvalidStateKMSKey | DisabledKMSKey | EFSIOError | EFSMountConnectivityError | EFSMountFailure | EFSMountTimeout | InvalidRuntime | InvalidZipFileException | FunctionError

Timeout

Lambda 在停止函数前允许其运行的时长(以秒为单位)。

类型:整数

有效范围:最小值为 1。

TracingConfig

函数的 Amazon X-Ray 跟踪配置。

类型:TracingConfigResponse 对象

Version

Lambda 函数的版本。

类型:字符串

长度限制:最小长度为 1。长度上限为 1024。

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

VpcConfig

函数的网络配置。

类型:VpcConfigResponse 对象

错误

有关所有操作返回的常见错误的信息,请参阅 常见错误

CodeSigningConfigNotFoundException

指定的代码签名配置不存在。

HTTP 状态代码:404

CodeStorageExceededException

您的 Amazon Web Services 账户 已超出最大总代码大小。有关更多信息,请参阅 Lambda 限额

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

Amazon Lambda 服务遇到了内部错误。

HTTP 状态代码:500

TooManyRequestsException

超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:429

另请参阅

有关在特定语言的 Amazon SDK 中使用此 API 的更多信息,请参阅以下内容: