【问题标题】:CloudFormation send back Lambda response from API GatewayCloudFormation 从 API Gateway 发回 Lambda 响应
【发布时间】:2021-10-13 03:44:44
【问题描述】:

我正在尝试使用 CloudFormation 部署 REST API,但在访问端点时收到 503 错误。我猜这与我设置方法的方式有关。它似乎错过了方法响应(将其与手动设置所有内容进行比较),因为 200 的响应正文为空,而在手动部署中它显示为 application/json

我得到的方法资源如下:

APIGateWayMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      HttpMethod: GET
      ResourceId: !Ref APIGatewayResource
      RestApiId: !Ref APIGatewayRestAPI
      Integration:
        IntegrationHttpMethod: POST
        Type: AWS_PROXY
        Uri: !Sub
          - arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${lambdaArn}/invocations
          - lambdaArn: !GetAtt MyLambda.Arn

如何指定我希望将来自 Lambda 内的 json.dumps() 的数据返回给调用者?

【问题讨论】:

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


    【解决方案1】:

    您正在使用 AWS_PROXY 集成方法,这意味着从 API 返回到客户端的所有内容都来自您的 lambda 函数,而不是您的 API Gateway 配置,因此 lambda 配置比 API 更有用网关集成。

    话虽如此,来自 API Gateway 的 HTTP 503 通常意味着下游服务响应时间过长。 第一种可能性是您的 lambda 在完成运行之前超时。在这种情况下,您可能必须增加超时或分配的内存。 第二种可能性是 API Gateway 配置超时。但是,我认为默认情况下是 29 或 30 秒。

    【讨论】:

    • 是的,API 网关超时为30 seconds,无法更改。 :(
    • 你是对的。从 API Gateway 中运行测试发现命名错误。
    猜你喜欢
    • 2023-03-08
    • 2015-10-21
    • 2018-09-28
    • 2016-09-14
    • 2017-10-04
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多