CreateFunction
创建 Lambda 函数。要创建函数,需要部署程序包和执行角色。部署包是包含函数代码的 .zip 文件存档或容器映像。执行角色授予该函数使用 AWS 服务 的权限,例如用于日志流的 Amazon CloudWatch Logs 和用于请求跟踪的 AWS X-Ray。
如果部署包是容器映像,则可将部署包类型设置为 Image
。对于容器映像,代码属性必须在 Amazon ECR 注册表中包含容器映像的 URI。您无需指定处理程序和运行时属性。
如果部署包是 .zip 文件存档,则可将部署包类型设置为 Zip
。对于 .zip 文件存档,代码属性会指定 .zip 文件的位置。您还必须指定处理程序和运行时属性。部署包中的代码必须与函数的目标指令集架构兼容(x86-64
或 arm64
)。如果未指定架构,则默认值为 x86-64
。
创建函数时,Lambda 会预置该函数及其支持资源的实例。如果您的函数连接到 VPC,此过程可能需要一分钟左右。在此期间,您无法调用或修改函数。来自 GetFunctionConfiguration 的响应中的 State
、StateReason
和 StateReasonCode
字段指示函数何时可进行调用。有关更多信息,请参阅 Lambda 函数状态。
函数具有未发布的版本,并且可以具有已发布的版本和别名。更新函数的代码和配置时,未发布的版本将会更改。已发布版本是函数代码和配置的快照,无法更改。别名是映射到版本的命名资源,并且可以更改为映射到其他版本。使用 Publish
参数,以通过其初始配置创建函数的版本 1
。
其他参数允许您配置特定于版本和函数级别的设置。稍后可以使用 UpdateFunctionConfiguration 修改特定于版本的设置。函数级别设置同时应用于函数的未发布版本和已发布版本,并且包含标签 (TagResource) 和每函数并发限制 (PutFunctionConcurrency)。
如果部署包是 .zip 文件存档,则可以使用 代码签名 。要为此函数启用代码签名,请指定代码签名配置的 ARN。当用户尝试使用 UpdateFunctionCode部署代码包时,Lambda 会检查代码包是否具有可信发布者的有效签名。代码签名配置包括一组签名配置文件,这些配置文件定义了此函数的可信发布者。
如果另一个 AWS 账户 或 AWS 服务 调用您的函数,请使用 AddPermission 通过创建基于资源的 AWS Identity and Access Management(IAM)policy 授予权限。您可以在函数级别授予版本或别名的权限。
要直接调用函数,请使用 Invoke。要调用您的函数以响应其他 AWS 服务,请创建事件源映射(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
。 -
函数 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-_]+))?
必需:是
-
- Handler
-
代码中方法的名称,Lambda 可调用该方法来运行您的函数。如果部署包是 .zip 文件归档,则需要使用处理程序。该格式包括文件名,也可以包括命名空间和其他限定符,具体取决于运行时。有关更多信息,请参阅 Lambda 编程模型。
类型:字符串
长度限制:最大长度为 128。
模式:
[^\s]+
必需:否
- ImageConfig
-
覆盖容器镜像 Dockerfile 中的值的容器镜像配置值。
类型:ImageConfig 对象
必需:否
- KMSKeyArn
-
AWS Key Management Service (AWS 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 中的AWS资源的网络连接,指定 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
-
函数环境变量。在 AWS 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
-
用于加密函数的环境变量的 AWS 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
-
函数的 AWS X-Ray 跟踪配置。
类型:TracingConfigResponse 对象
- Version
-
Lambda 函数的版本。
类型:字符串
长度限制:最小长度为 1。长度上限为 1024。
模式:
(\$LATEST|[0-9]+)
- VpcConfig
-
函数的网络配置。
类型:VpcConfigResponse 对象
错误
有关所有操作返回的常见错误的信息,请参阅 常见错误。
- CodeSigningConfigNotFoundException
-
指定的代码签名配置不存在。
HTTP 状态代码:404
- CodeStorageExceededException
-
您的 AWS 账户 已超出最大总代码大小。有关更多信息,请参阅 Lambda 限额。
HTTP 状态代码:400
- CodeVerificationFailedException
-
代码签名失败,一个或多个签名验证检查不匹配或过期,并且代码签名策略设置为“ENFORCE”。Lambda 阻止部署。
HTTP 状态代码:400
- InvalidCodeSignatureException
-
代码签名未通过完整性检查。如果完整性检查失败,Lambda 会阻止部署,即使代码签名策略设置为 WARN 也是如此。
HTTP 状态代码:400
- InvalidParameterValueException
-
请求中的参数之一无效。
HTTP 状态代码:400
- ResourceConflictException
-
资源已存在,或者其他操作正在进行中。
HTTP 状态代码:409
- ResourceNotFoundException
-
请求中指定的资源不存在。
HTTP 状态代码:404
- ServiceException
-
AWS Lambda 服务遇到了内部错误。
HTTP 状态代码:500
- TooManyRequestsException
-
超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额。
HTTP 状态代码:429
另请参阅
有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: