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

CreateFunction

创建 Lambda 函数。要创建函数,需要部署程序包执行角色。部署包是包含函数代码的 .zip 文件存档或容器映像。执行角色授予该函数使用 Amazon Web Services 的权限,例如用于日志流的 Amazon CloudWatch Logs 和用于请求跟踪的 Amazon X-Ray。

如果部署包是容器映像,则可将部署包类型设置为 Image。对于容器映像,代码属性必须在 Amazon ECR 注册表中包含容器映像的 URI。您无需指定处理程序和运行时属性。

如果部署包是 .zip 文件存档,则可将部署包类型设置为 Zip。对于 .zip 文件存档,代码属性会指定 .zip 文件的位置。您还必须指定处理程序和运行时属性。部署包中的代码必须与函数的目标指令集架构兼容(x86-64arm64)。如果未指定架构,则默认值为 x86-64

创建函数时,Lambda 会预置该函数及其支持资源的实例。如果您的函数连接到 VPC,此过程可能需要一分钟左右。在此期间,您无法调用或修改函数。来自 GetFunctionConfiguration 的响应中的 StateStateReasonStateReasonCode 字段指示函数何时可进行调用。有关更多信息,请参阅 Lambda 函数状态

函数具有未发布的版本,并且可以具有已发布的版本和别名。更新函数的代码和配置时,未发布的版本将会更改。已发布版本是函数代码和配置的快照,无法更改。别名是映射到版本的命名资源,并且可以更改为映射到其他版本。使用 Publish 参数,以通过其初始配置创建函数的版本 1

其他参数允许您配置特定于版本和函数级别的设置。稍后可以使用 UpdateFunctionConfiguration 修改特定于版本的设置。函数级别设置同时应用于函数的未发布版本和已发布版本,并且包含标签 (TagResource) 和每函数并发限制 (PutFunctionConcurrency)。

如果部署包是 .zip 文件存档,则可以使用 代码签名 。要为此函数启用代码签名,请指定代码签名配置的 ARN。当用户尝试使用 UpdateFunctionCode部署代码包时,Lambda 会检查代码包是否具有可信发布者的有效签名。代码签名配置包括一组签名配置文件,这些配置文件定义了此函数的可信发布者。

如果另一个 Amazon Web Services 账户 或 Amazon Web Service 调用您的函数,请使用 AddPermission 通过创建基于资源的 Amazon Identity and Access Management(IAM)policy 授予权限。您可以在函数级别授予版本或别名的权限。

要直接调用函数,请使用 Invoke。要调用您的函数以响应其他 Amazon Web Services,请创建事件源映射(CreateEventSourceMapping),或者在其他服务中配置函数触发器。有关更多信息,请参阅调用 Lambda 函数

请求语法

POST /2015-03-31/functions HTTP/1.1 Content-type: application/json { "Architectures": [ "string" ], "Code": { "ImageUri": "string", "S3Bucket": "string", "S3Key": "string", "S3ObjectVersion": "string", "ZipFile": blob }, "CodeSigningConfigArn": "string", "DeadLetterConfig": { "TargetArn": "string" }, "Description": "string", "Environment": { "Variables": { "string" : "string" } }, "EphemeralStorage": { "Size": number }, "FileSystemConfigs": [ { "Arn": "string", "LocalMountPath": "string" } ], "FunctionName": "string", "Handler": "string", "ImageConfig": { "Command": [ "string" ], "EntryPoint": [ "string" ], "WorkingDirectory": "string" }, "KMSKeyArn": "string", "Layers": [ "string" ], "LoggingConfig": { "ApplicationLogLevel": "string", "LogFormat": "string", "LogGroup": "string", "SystemLogLevel": "string" }, "MemorySize": number, "PackageType": "string", "Publish": boolean, "Role": "string", "Runtime": "string", "SnapStart": { "ApplyOn": "string" }, "Tags": { "string" : "string" }, "Timeout": number, "TracingConfig": { "Mode": "string" }, "VpcConfig": { "Ipv6AllowedForDualStack": boolean, "SecurityGroupIds": [ "string" ], "SubnetIds": [ "string" ] } }

URI 请求参数

该请求不使用任何 URI 参数。

请求体

请求接受采用 JSON 格式的以下数据。

Architectures

该函数支持的指令集架构。输入具有其中一个有效值(arm64 或 x86_64)的字符串数组。默认值为 x86_64

类型:字符串数组

数组成员:固定数量为 1 项。

有效值:x86_64 | arm64

必需:否

Code

函数的代码。

类型:FunctionCode 对象

必需:是

CodeSigningConfigArn

要为此函数启用代码签名,请指定代码签名配置的 ARN。代码签名配置包括一组签名配置文件,这些配置文件定义了此函数的可信发布者。

类型:字符串

长度约束:最大长度为 200。

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\d{1}:\d{12}:code-signing-config:csc-[a-z0-9]{17}

必需:否

DeadLetterConfig

死信队列配置,用于指定 Lambda 在处理失败时发送异步事件的队列或主题。有关更多信息,请参阅死信队列

类型:DeadLetterConfig 对象

必需:否

Description

该函数的描述。

类型:字符串

长度约束:最小长度为 0。长度上限为 256。

必需:否

Environment

执行期间可从函数代码访问的环境变量。

类型:Environment 对象

必需:否

EphemeralStorage

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

类型:EphemeralStorage 对象

必需:否

FileSystemConfigs

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

类型:FileSystemConfig 对象数组

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

必需:否

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-_]+))?

必需:是

Handler

代码中方法的名称,Lambda 可调用该方法来运行您的函数。如果部署包是 .zip 文件归档,则需要使用处理程序。该格式包括文件名,也可以包括命名空间和其他限定符,具体取决于运行时。有关更多信息,请参阅 Lambda 编程模型

类型:字符串

长度限制:最大长度为 128。

模式:[^\s]+

必需:否

ImageConfig

覆盖容器镜像 Dockerfile 中的值的容器镜像配置值

类型:ImageConfig 对象

必需:否

KMSKeyArn

Amazon Key Management Service (Amazon KMS) 客户托管密钥的 ARN,用于加密函数的环境变量。激活 Lambda SnapStart 后,Lambda 还使用此密钥对函数的快照进行加密。如果您使用容器映像部署函数,Lambda 还会在部署函数后使用此密钥对其进行加密。请注意,此密钥与在 Amazon Elastic Container Registry(Amazon ECR)中用于保护容器映像的密钥不同。如果您未提供客户托管密钥,Lambda 将使用默认服务密钥。

类型:字符串

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

必需:否

Layers

要添加到函数执行环境中的函数层列表。通过 ARN 指定每一层,包括版本。

类型:字符串数组

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

模式:arn:[a-zA-Z0-9-]+:lambda:[a-zA-Z0-9-]+:\d{12}:layer:[a-zA-Z0-9-_]+:[0-9]+

必需:否

LoggingConfig

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

类型:LoggingConfig 对象

必需:否

MemorySize

在运行时 可用于函数的内存 量。提高该函数的内存也会增加它的 CPU 分配。默认值为 128 MB。该值可以是 1 MB 的任意倍数。

类型:整数

有效范围:最小值为 128。最大值为 10240。

必需:否

PackageType

部署程序包的类型。将容器映像设置为 Image,然后将 .zip 文件归档设置为 Zip

类型:字符串

有效值:Zip | Image

必需:否

Publish

设置为 true 以在创建期间发布函数的第一个版本。

类型:布尔值

必需:否

Role

函数的执行角色的 Amazon Resource Name (ARN)。

类型:字符串

模式: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

必需:否

SnapStart

函数的 SnapStart 设置。

类型:SnapStart 对象

必需:否

Tags

要应用于函数的标签列表。

类型:字符串到字符串映射

必需:否

Timeout

Lambda 在停止函数前允许其运行的时长(以秒为单位)。默认值为 3 秒。允许的最大值为 900 秒。有关更多信息,请参阅 Lambda 执行环境

类型:整数

有效范围:最小值为 1。

必需:否

TracingConfig

Mode 设置为 Active,以使用 X-Ray 对传入请求的子集进行采样和跟踪。

类型:TracingConfig 对象

必需:否

VpcConfig

对于与 VPC 中的Amazon资源的网络连接,指定 VPC 中的安全组和子网列表。当您将函数连接到 VPC 时,它只能通过该 VPC 访问资源和互联网。有关更多信息,请参阅配置 Lambda 函数以访问 VPC 中的资源

类型:VpcConfig 对象

必需:否

响应语法

HTTP/1.1 201 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 201 响应。

服务以 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

ResourceConflictException

资源已存在,或者其他操作正在进行中。

HTTP 状态代码:409

ResourceNotFoundException

请求中指定的资源不存在。

HTTP 状态代码:404

ServiceException

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

HTTP 状态代码:500

TooManyRequestsException

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

HTTP 状态代码:429

另请参阅

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