Amazon web services AWS:对于查看器事件,Lambda函数的最大压缩大小不能超过1 MB
我用SAM创建了一个lambda函数。非常小。它实际上并没有做任何事情,我部署它只是为了测试 这是处理程序(Nodejs): 然后,我有了这个模板。yaml:Amazon web services AWS:对于查看器事件,Lambda函数的最大压缩大小不能超过1 MB,amazon-web-services,aws-lambda,aws-sam,Amazon Web Services,Aws Lambda,Aws Sam,我用SAM创建了一个lambda函数。非常小。它实际上并没有做任何事情,我部署它只是为了测试 这是处理程序(Nodejs): 然后,我有了这个模板。yaml: AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > simple lamdga test Globals: Function: Timeout: 3 Resources:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
simple lamdga test
Globals:
Function:
Timeout: 3
Resources:
LambdaEdgeFunctionRole:
Type: "AWS::IAM::Role"
Properties:
Path: '/'
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
-
Sid: "AllowLambdaServiceToAssumeRole"
Effect: "Allow"
Action:
- "sts:AssumeRole"
Principal:
Service:
- "lambda.amazonaws.com"
- "edgelambda.amazonaws.com"
TestLambda:
Type: AWS::Serverless::Function
Properties:
CodeUri: lambdaTest/
Description: 'test func'
Handler: app.lambdaHandler
Runtime: nodejs12.x
MemorySize: 128
Timeout: 1
Role: !GetAtt LambdaEdgeFunctionRole.Arn
AutoPublishAlias: live
正在使用SAM本地调用测试函数。。。效果很好
我部署了它,可以看到S3存储桶的大小是1.2MB。当我转到AWS中的lambda控制台时,我尝试添加所需的CloudFront触发器,但是,我得到以下错误:
我怎样才能克服这个错误?我认为这样一个最小的函数应该很容易被允许部署为lambda边缘函数
我怎样才能克服这个错误
这就是我现在学到的:
我进入S3,在SAM上传的包中添加了一个.zip
扩展名,以便能够解压缩它,它显示了以下内容:
因此,看起来单是节点_模块就有2.8MB。我试图找出如何告诉SAM不要包含节点单元模块和任何不必要的内容
因此,如果我进入并从package.json文件中删除依赖项,并让它们保持如下状态:
...
"devDependencies": {
},
"optionalDependencies": {
}
...
它起作用了。
我能够创建包并部署到lambda@edge. 这个包裹大约1K,超小。该功能在连接到cloudfront触发器后即可工作
如果不手动删除这些依赖项,如何确保这些依赖项不会包含在包中?您可能正在打包AWS-SDK和/或其他节点模块。使用npm i-D aws SDK安装SDK将解决此问题。Lambda@edge最大只能为1MB。你必须精简你的功能。也可以尝试使用python,也许它会比使用nodejs更小?我尝试了npm I-D aws sdk,但没有帮助。仍然是1.3MB。然后我编辑了package.json依赖项,使其不包含任何内容。仍然超过1MB。
...
"devDependencies": {
},
"optionalDependencies": {
}
...