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