繁体   English   中英

AWS Lambda Endpoint 上的 NestJs 请求超时

[英]NestJs on AWS Lambda Endpoint request timed out

我有一个使用无服务器 cli 托管在 AWS Lambda 上的 Nest.js 应用程序。

当我尝试访问端点时,我收到 {"message": "Endpoint request timed out"}。 我试图增加时间,但错误仍然存​​在。

我该如何解决这个问题?

无服务器.yml

  name: aws
  runtime: nodejs12.x
  stage: prod
  profile: default # Config your AWS Profile
  timeout: 120
  environment: # Service wide environment variables
    NODE_ENV: production

plugins:
  - serverless-offline
  - serverless-plugin-warmup

custom:
  # Enable warmup on all functions (only for production and staging)
  warmup:
    enabled: true

package:
  exclude:
    - .git/**
    - src/**
    - test/**
    - nodemon.json
    - README.md
  excludeDevDependencies: true

functions:
  index:
    handler: dist/serverless.handler
    events:
      - http:
          cors: true
          path: '/graphql'
          method: any

它对您不起作用的原因是,即使 lambda 支持最多 15 分钟的时间输出,API 网关也有 29 秒的限制。 这意味着 API 网关不能等待 lambda 返回超过 29 秒。

如果您需要超过 29 秒,您应该考虑通过其他一些不涉及 API 网关的机制(例如 express 框架)来开发 API。

我建议您首先尝试找出代码的哪一部分执行时间更长。 在寻找替代方案之前,您可以尝试优化代码。

希望这可以帮助。

参考:

https://docs.aws.amazon.com/apigateway/latest/developerguide/limits.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM