【问题标题】:Lambda function not working with cloud formation deployLambda 函数不适用于云形成部署
【发布时间】:2022-08-18 22:29:52
【问题描述】:

我正在尝试构建一个带有 api 网关和在 lambda 上运行的节点后端的应用程序。

节点后端是非常基础的 express 和 sequelize。它还没有连接到数据库。我可以在本地运行节点应用程序,导航到一个端点并获得我从该端点发回的标准“hello world”响应。

当我构建和部署堆栈时,它显示代码已部署到 s3 存储桶,并且 api 和 lambda 已更新。但是,尝试访问端点时出现以下错误 -

502 Bad Gateway - \"message\": \"Internal server error\"

同样,后端没有逻辑,只是发回的文本响应。我不知道如何解决这个问题。它似乎不是 API 问题,虽然我不知道如何测试它。如果是 lambda 部署的问题,为什么它在本地工作?

除此之外,cloudformation文件创建的api网关还有“dev”阶段和“Stage”阶段。我不确定这是怎么发生的,或者是否有问题。

下面是yaml文件。

AWSTemplateFormatVersion: \'2010-09-09\'
Transform: AWS::Serverless-2016-10-31
Description: Storygraf backend API
Globals:
  Function:
    Timeout: 3
Resources:
  ExpressApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: dev
  ExpressLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: s3://storygraf-backend/xxxx
      Handler: lambda.handler
      MemorySize: 512
      Runtime: nodejs14.x
      Timeout: 30
      Events:
        ProxyApiRoot:
          Type: Api
          Properties:
            RestApiId:
              Ref: ExpressApi
            Path: /
            Method: ANY
        ProxyApiGreedy:
          Type: Api
          Properties:
            RestApiId:
              Ref: ExpressApi
            Path: /{proxy+}
            Method: ANY
  • 那可能是 lambda 积分错误。你能提供你的 lambda 代码吗?

标签: amazon-web-services aws-lambda amazon-cloudformation


【解决方案1】:

您应该activate logs 能够排除故障:

  ExpressApi:
    Type: AWS::Serverless::Api
    Properties:
      StageName: dev
      MethodSettings:
        - ResourcePath: "/*"
          HttpMethod: "*"
          DataTraceEnabled: true
          LoggingLevel: INFO # Or ERROR
      OpenApiVersion: 3.0.1 # This will remove the stage Stage

关于OpenApiVersion的注意事项:

注意:将此属性设置为任何有效值也将删除 SAM 创建的阶段 Stage。


然后复制您的apiId

将您的请求发送到您的 API 并转到云观察,应该有一个名为API-Gateway-Execution-Logs_{apiId}/dev的日志组(您可以将apiId粘贴到搜​​索框中找到它)。

在那里,您可以看到有关请求和集成的详细日志。


您很可能会遇到如下错误:

由于配置错误,执行失败:格式错误的 Lambda 代理响应

因为 lambda 响应至少应该包含一个 statusCode 字段。


请参阅API Gateway developer guide,特别是:

【讨论】:

    猜你喜欢
    • 2020-09-06
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多