考虑一段无服务器代码:
functions:
MyFunc:
handler: index.handler
name: "my_name"
runtime: nodejs12.x
memorySize: 512
timeout: 30
inlineCode: |
exports.handler = function(event, context) {
console.log("ok");
};
description: description
这将导致打包源文件夹中的所有内容。我不能禁用它。如果我添加事件:
package:
artifact: dummy.zip
部署失败,因为dummy.zip
是空文件。但是为什么在指定inlineCode
时需要压缩文件?有没有办法仅使用inlineCode
参数来禁用打包和部署nodejs功能?
答案 0 :(得分:0)
inlineCode
支持AWS::Serverless::Function
参数的概念,但serverless-framework
不支持。您粘贴的YAML不是1:1映射到AWS::Serverless::Function
,而是特定于sls本身。
将代码存储在文件/目录中,直到sls团队添加对inlineCode
的支持。我没有看到任何功能要求。我相信他们会很高兴从您这里得到一个。
答案 1 :(得分:0)
解决方法是将lambda函数定义定义为普通的cloudformation资源,如下所示:
resources:
Resources:
MyFunc:
Type: AWS::Lambda::Function
Properties:
FunctionName: "my_name"
Handler: index.handler
Runtime: nodejs10.x
Role: !GetAtt LambdaRole.Arn # do not forget to define role by hand :(
Code:
ZipFile: |
exports.handler = function(event, context, callback) {
console.log(event);
const response = {
statusCode: 200,
body: JSON.stringify('Hello Node')
};
callback(null, response);
};