AWS CloudFormation
User Guide (API Version 2010-05-15)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

AWS::Lambda::Function

AWS::Lambda::Function 资源将创建一个 AWS Lambda (Lambda) 函数,此函数可运行代码以响应事件。有关更多信息,请参阅 CreateFunctionAWS Lambda Developer Guide 中的

语法

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

JSON

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

YAML

Type: "AWS::Lambda::Function" Properties: Code: Code DeadLetterConfig: DeadLetterConfig Description: String Environment: Environment FunctionName: String Handler: String KmsKeyArn: String MemorySize: Integer Role: String Runtime: String Timeout: Integer TracingConfig: TracingConfig VpcConfig: VPCConfig Tags: Resource Tag

属性

Code

您的 Lambda 函数的源代码。您可以指向 Amazon Simple Storage Service (Amazon S3) 存储桶中的文件,或将您的源代码指定为内联文本。

Required: Yes

类型AWS Lambda 函数代码

更新要求无需中断

DeadLetterConfig

配置 Lambda 如何处理其无法处理的事件。如果未指定死信队列 (DLQ) 配置,Lambda 在达到最大重试次数后将丢弃事件。有关更多信息,请参阅 AWS Lambda Developer Guide 中的死信队列

Required: No

Type: AWS Lambda Function DeadLetterConfig

更新要求无需中断

Description

该函数的描述。

Required: No

Type: String

更新要求无需中断

Environment

Lambda 缓存并提供给您的 Lambda 函数的键值对。使用环境变量应用配置更改 (如测试和生产环境配置),而无需更改您的 Lambda 函数源代码。

Required: No

Type: AWS Lambda 函数环境

更新要求无需中断

FunctionName

函数的名称。如果不指定名称,则 AWS CloudFormation 生成一个唯一的物理 ID 并将该 ID 用作函数名称。有关更多信息,请参阅 名称类型

重要

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

必需:否

Type: String

更新要求替换

Handler

(源代码中的)函数的名称,Lambda 可调用此函数来开始运行您的代码。有关更多信息,请参阅 HandlerAWS Lambda Developer Guide 中的 属性。

注意

如果通过指定 Code 属性中的 ZipFile 属性将源代码指定为内联文本,请指定 index.function_name 为处理程序。

Required: Yes

Type: String

更新要求无需中断

KmsKeyArn

Lambda 用来加密和解密环境变量值的 AWS Key Management Service (AWS KMS) 密钥的 Amazon 资源名称 (ARN)。

Type: String

必需:否

更新要求无需中断

MemorySize

分配给您的 Lambda 函数的内存量(以 MB 为单位)。Lambda 使用此值按比例分配 CPU 的处理能力。有关更多信息,请参阅 AWS Lambda Developer Guide 中的资源模型

您的函数使用案例确定您的 CPU 和内存要求。例如,数据库操作需要的内存可能少于图像处理功能需要的内存。您必须指定大于或等于 128 的值,且它必须为 64 的倍数。指定的大小不得超过 1536。默认值为 128 MB。

Required: No

Type: Integer

更新要求无需中断

Role

Lambda 在运行您的代码来访问 AWS 服务时所担任的 AWS Identity and Access Management (IAM) 执行角色的 Amazon 资源名称 (ARN)。

Required: Yes

Type: String

更新要求无需中断

Runtime

您正在上传的 Lambda 函数的运行时环境。有关有效值的信息,请参阅 AWS Lambda Developer Guide 中的 Runtime 属性。

Required: Yes

Type: String

更新要求无需中断

注意

由于 Node.js 0.10.32 已弃用,您不能再使用 Node.js 0.10.32 的模板。如果将堆栈更新为 Node.js 0.10.32 并且更新失败,AWS CloudFormation 不会回滚堆栈。

Timeout

Lambda 终止函数之前的函数执行时间(以秒为单位)。由于执行时间会影响费用,请根据函数的预计执行时间来设置此值。默认情况下,Timeout 将设置为 3 秒。有关更多信息,请参阅 常见问题

Required: No

Type: Integer

更新要求无需中断

TracingConfig

包含 Lambda 函数跟踪设置的父对象。默认情况下,Mode 属性设置为 PassThrough。有关有效值的信息,请参阅 AWS Lambda Developer Guide 中的 TracingConfig 数据类型。

Required: No

Type: AWS Lambda Function TracingConfig

更新要求无需中断

VpcConfig

如果 Lambda 函数需要访问 VPC 中的资源,请指定 Lambda 用于设置弹性网络接口 (ENI) 的 VPC 配置。ENI 使得您的函数可以连接到 VPC 中的其他资源,但不提供公共 Internet 访问。如果您的函数需要访问 Internet(例如,访问没有 VPC 终端节点的 AWS 服务),您可以在 VPC 中配置网络地址转换 (NAT) 实例,或者使用 Amazon Virtual Private Cloud (Amazon VPC) NAT 网关。有关更多信息,请参阅 Amazon VPC 用户指南 中的 NAT 网关

注意

指定该属性后,如果模板中的其他资源 (如安全组) 要求先删除附加的 ENI 然后才能删除自身,则 AWS CloudFormation 可能无法删除堆栈。建议您使用 ec2:DescribeNetworkInterfaces 权限运行 AWS CloudFormation,这会使 AWS CloudFormation 监视 ENI 的状态并等待 Lambda 删除 ENI (最长等待 40 分钟)。

Required: No

Type: AWS Lambda Function VpcConfig

更新要求无需中断

Tags

该 Lambda 函数的任意标签组 (键/值对)。

Required: No

Type: AWS CloudFormation 资源标签

更新要求无需中断

返回值

Ref

当该资源的逻辑 ID 提供给 Ref内部函数时,Ref 将返回资源名称。

在以下示例中,Ref 函数将返回 AMILookUp 函数的名称,例如 MyStack-AMILookUp-NT5EUXTNTXXD

{ "Ref": "AMILookUp" }

有关使用 Ref 功能的更多信息,请参阅参考

Fn::GetAtt

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

Arn

Lambda 函数的 ARN,例如 arn:aws:lambda:us-west-2:123456789012:MyStack-AMILookUp-NT5EUXTNTXXD

有关使用 Fn::GetAtt 的更多信息,请参见 Fn::GetAtt

示例

以下示例使用 S3 存储桶中的打包文件来创建 Lambda 函数。

JSON

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

YAML

AMIIDLookup: Type: "AWS::Lambda::Function" Properties: Handler: "index.handler" Role: Fn::GetAtt: - "LambdaExecutionRole" - "Arn" Code: S3Bucket: "lambda-functions" S3Key: "amilookup.zip" Runtime: "nodejs4.3" Timeout: "25" TracingConfig: Mode: "Active"

相关资源

有关如何结合使用 Lambda 函数和 AWS CloudFormation 自定义资源的更多信息,请参阅 AWS Lambda 支持的自定义资源

有关示例模板,请参阅 AWS Lambda 模板