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

AWS::Lambda::Function Code

Lambda 函数的部署程序包。对于所有运行时,您可以指定对象在 Amazon S3 中的位置。对于 Node.js 和 Python 函数,您可以在模板中指定内联函数代码。

在堆栈更新期间,不会自动检测 Amazon S3 中部署程序包发生的变化。要更新函数代码,请在模板中更改对象键或版本。

语法

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

JSON

{ "S3Bucket" : String, "S3Key" : String, "S3ObjectVersion" : String, "ZipFile" : String }

YAML

S3Bucket: String S3Key: String S3ObjectVersion: String ZipFile: String

属性

S3Bucket

与您的函数处于同一 AWS 区域的 Amazon S3 存储桶。该存储桶可以在不同的 AWS 账户下。

必需:条件

类型:字符串

最低3

最高63

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

Update requires: No interruption

S3Key

部署程序包的 Amazon S3 密钥。

必需:条件

类型:字符串

最低1

最高1024

Update requires: No interruption

S3ObjectVersion

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

必需:条件

类型:字符串

最低1

最高1024

Update requires: No interruption

ZipFile

(Node.js 和 Python)您的 Lambda 函数的源代码。如果您在函数源内联中包含此参数,则 AWS CloudFormation 会将其放在一个名为 index 的文件中,然后压缩它,以创建一个部署程序包。对于 Handler 属性,处理程序标识符的第一部分必须是 index。例如:index.handler

您的源代码最多可包含 4096 个字符。对于 JSON,必须使用反斜杠来转义引号和特殊字符,如换行符 (\n)。

如果您指定了与 AWS CloudFormation 自定义资源交互的函数,就无需编写自己的函数来发送响应到调用函数的自定义资源。AWS CloudFormation 提供了简化发送响应的响应模块 (cfn-response)。有关详细信息,请参阅结合使用 AWS Lambda 和 AWS CloudFormation

必需:条件

类型:字符串

Update requires: No interruption

示例

内联函数

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

YAML

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) }) }