AWS::Lambda::Function - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::Lambda::Function

AWS::Lambda::Function 资源创建 Lambda 函数。要创建函数,需要部署程序包执行角色。部署程序包中包含您的函数代码。执行角色授予该函数使用 AWS 服务的权限,例如用于日志流式传输的 Amazon CloudWatch Logs 和用于请求跟踪的 AWS X-Ray。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::Lambda::Function", "Properties" : { "Code" : Code, "DeadLetterConfig" : DeadLetterConfig, "Description" : String, "Environment" : Environment, "FileSystemConfigs" : [ FileSystemConfig, ... ], "FunctionName" : String, "Handler" : String, "KmsKeyArn" : String, "Layers" : [ String, ... ], "MemorySize" : Integer, "ReservedConcurrentExecutions" : Integer, "Role" : String, "Runtime" : String, "Tags" : [ Tag, ... ], "Timeout" : Integer, "TracingConfig" : TracingConfig, "VpcConfig" : VpcConfig } }

YAML

Type: AWS::Lambda::Function Properties: Code: Code DeadLetterConfig: DeadLetterConfig Description: String Environment: Environment FileSystemConfigs: - FileSystemConfig FunctionName: String Handler: String KmsKeyArn: String Layers: - String MemorySize: Integer ReservedConcurrentExecutions: Integer Role: String Runtime: String Tags: - Tag Timeout: Integer TracingConfig: TracingConfig VpcConfig: VpcConfig

属性

Code

函数的代码。

必需:是

类型代码

Update requires: No interruption

DeadLetterConfig

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

必需:否

类型DeadLetterConfig

Update requires: No interruption

Description

该函数的描述。

必需:否

类型:字符串

最低0

最高256

Update requires: No interruption

Environment

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

必需:否

类型Environment

Update requires: No interruption

FileSystemConfigs

Amazon EFS 文件系统的连接设置。要将函数连接到文件系统,您的函数连接到的每个可用区中都必须有一个挂载目标。如果模板包含 AWS::EFS::MountTarget 资源,您还必须指定一个 DependsOn 属性,以确保在函数之前创建或更新装载目标。

有关使用 DependsOn 属性的详细信息,请参阅 DependsOn 属性

必需:否

类型FileSystemConfig 的列表

最高1

Update requires: No interruption

FunctionName

Lambda 函数的名称,长度最多为 64 个字符。如果您没有指定名称,AWS CloudFormation 会生成一个名称。

如果指定一个名称,您将无法执行需要替换该资源的更新。您可以执行不需要或者只需要部分中断的更新。如果必须替换资源,请指定新名称。

必需:否

类型:字符串

Update requires: Replacement

Handler

代码中方法的名称,Lambda 可调用该方法来执行您的函数。该格式包括文件名,也可以包括命名空间和其他限定符,具体取决于运行时。有关更多信息,请参阅编程模型

必需:是

类型:字符串

最高128

模式[^\s]+

Update requires: No interruption

KmsKeyArn

AWS Key Management Service (AWS KMS) 密钥的 ARN,用于加密函数的环境变量。如果未提供它,AWS Lambda 将使用默认服务密钥。

必需:否

类型:字符串

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

Update requires: No interruption

Layers

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

必需:否

类型:字符串列表

Update requires: No interruption

MemorySize

您的函数可以访问的内存量。提高该函数的内存也会增加它的 CPU 分配。默认值为 128 MB。该值必须是 64 MB 的倍数。

必需:否

类型:整数

最低128

最高3008

Update requires: No interruption

ReservedConcurrentExecutions

为函数保留的同时执行次数。

必需:否

类型:整数

最低0

Update requires: No interruption

Role

函数的执行角色的 Amazon 资源名称 (ARN)。

必需:是

类型:字符串

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

Update requires: No interruption

Runtime

函数的运行时的标识符。

必需:是

类型:字符串

允许的值dotnetcore2.1 | dotnetcore3.1 | go1.x | java11 | java8 | java8.al2 | nodejs10.x | nodejs12.x | provided | provided.al2 | python2.7 | python3.6 | python3.7 | python3.8 | ruby2.5 | ruby2.7

Update requires: No interruption

Tags

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

必需:否

类型Tag 的列表

Update requires: No interruption

Timeout

Lambda 在停止函数前允许其运行的时长。默认值为 3 秒。允许的最大值为 900 秒。

必需:否

类型:整数

最低1

Update requires: No interruption

TracingConfig

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

必需:否

类型TracingConfig

Update requires: No interruption

VpcConfig

对于与 VPC 中的 AWS 资源的网络连接,指定 VPC 中的安全组和子网列表。

必需:否

类型VpcConfig

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回 资源名称。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

函数的 Amazon 资源名称 (ARN)。

示例

Function

创建 Node.js 函数。

JSON

"AMIIDLookup": { "Type": "AWS::Lambda::Function", "Properties": { "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "LambdaExecutionRole", "Arn" ] }, "Code": { "S3Bucket": "lambda-functions", "S3Key": "amilookup.zip" }, "Runtime": "nodejs12.x", "Timeout": 25, "TracingConfig": { "Mode": "Active" } } }

内联函数

使用 cfn-response 库的内联 Node.js 函数。

YAML

AWSTemplateFormatVersion: '2010-09-09' Description: Lambda function with cfn-response. Resources: primer: Type: AWS::Lambda::Function Properties: Runtime: nodejs12.x Role: arn:aws:iam::123456789012:role/lambda-role Handler: index.handler Code: ZipFile: | var aws = require('aws-sdk') var response = require('cfn-response') exports.handler = function(event, context) { console.log("REQUEST RECEIVED:\n" + JSON.stringify(event)) // For Delete requests, immediately send a SUCCESS response. if (event.RequestType == "Delete") { response.send(event, context, "SUCCESS") return } var responseStatus = "FAILED" var responseData = {} var functionName = event.ResourceProperties.FunctionName var lambda = new aws.Lambda() lambda.invoke({ FunctionName: functionName }, function(err, invokeResult) { if (err) { responseData = {Error: "Invoke call failed"} console.log(responseData.Error + ":\n", err) } else responseStatus = "SUCCESS" response.send(event, context, responseStatus, responseData) }) } Description: Invoke a function during stack creation. TracingConfig: Mode: Active

VPC 函数

连接到 VPC 的函数。

YAML

AWSTemplateFormatVersion: '2010-09-09' Description: VPC function. Resources: Function: Type: AWS::Lambda::Function Properties: Handler: index.handler Role: arn:aws:iam::123456789012:role/lambda-role Code: S3Bucket: my-bucket S3Key: function.zip Runtime: nodejs12.x Timeout: 5 TracingConfig: Mode: Active VpcConfig: SecurityGroupIds: - sg-085912345678492fb SubnetIds: - subnet-071f712345678e7c8 - subnet-07fd123456788a036