AWS Lambda setupRequestListerners RequestEntityTooLargeException claudia.js

时间:2017-06-22 08:35:58

标签: node.js amazon-web-services aws-lambda claudiajs

creating Lambda lambda.setupRequestListeners
      { RequestEntityTooLargeException: Request must be smaller than 69905067 bytes for the CreateFunction operation
    message: 'Request must be smaller than 69905067 bytes for the CreateFunction operation',
      code: 'RequestEntityTooLargeException',
      time: 2017-06-22T08:30:52.260Z,
      requestId: 'xxx',
      statusCode: 413,
      retryable: false,
      retryDelay: 89.31111557639109 
      }

我的项目太大或者这里发生了什么?我可以通过S3上传它还是与我项目中的路线数量有关?

相同的部署技术适用于只有几条路线的小型项目。

我正在使用claudia.js这些命令:

"scripts": {
    "deploy": "claudia create --handler lambda.handler --name authService --deploy-proxy-api --region eu-central-1",
    "update": "claudia update",
    "generate-proxy": "claudia generate-serverless-express-proxy --express-module server",
    "test": "./node_modules/.bin/mocha --reporter spec"
  },

2 个答案:

答案 0 :(得分:1)

您可以使用以下两种方法来测试: 1)AWS CLI 与直接上传到Lambda相比,从S3部署功能代码允许更大的部署包。

将Lambda函数的代码放入AWS Lambda有两种方法:直接上传函数的部署包,或让Lambda从S3中提取它。

https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3

2)ClaudiaJS CLI

在这里阅读: https://claudiajs.com/news/2016/09/21/claudia-1.9.0.html

claudia create --handler lambda.handler --deploy-proxy-api --region us-south-1 --use-s3-bucket bucket-name

谢谢@Gojko的贡献。

答案 1 :(得分:0)

有两种好方法可以解决这个问题。一种是使用中间S3存储桶来部署代码。 Claudia可以将zip文件上传到S3,然后向Lambda发出一个较小的请求,只需从S3获取代码即可。将--use-s3-bucket <bucket name>claudia update一起使用。

第二种选择是将你不需要的东西放在某处(例如s3)并在lambda启动时下载到/tmp目录。我们将它用于大字体文件或第三方二进制文件。