SAM创建的API网关在本地运行,但部署到API网关时超时

问题描述 投票:0回答:2

正如标题所说。我有一个带有 HTTP POST 请求的 API。当我使用本地运行的 API(使用

sam local start-api
)运行 POST 请求时,它工作得很好。但是,当我将其部署到 API Gateway 并在其中运行时,即使我将最大超时设置为 300 秒,我也会在 30 秒后收到超时错误。我的 SAM 文件如下:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  python3.8

  Sample SAM Template for manipulation-api

Globals:
  Function:
    Timeout: 300

Resources:

  rManipulationAPI:
    Type: AWS::Serverless::Api
    Properties:
      Cors:
        AllowMethods: "'GET, POST'"
        AllowOrigin: "'*'"
      Name: manipulation-api
      StageName: dev

  rManipulationFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: Manipulate
      MemorySize: 10000
      PackageType: Image
      ImageUri: <My Docker Repo>
      Events:
        Paraphrase:
          Type: Api 
          Properties:
            Path: /manipulate
            Method: POST
            RestApiId: !Ref rManipulationAPI
    Metadata:
      Dockerfile: Dockerfile
      DockerContext: ./src/manipulate
      DockerTag: python3.8-v1

  rHealthCheckFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: HealthCheck
      PackageType: Image
      ImageUri: <My Docker Repo>
      Events:
        HealthCheck:
          Type: Api
          Properties:
            Path: /health
            Method: GET
            RestApiId: !Ref rManipulationAPI
    Metadata:
      Dockerfile: Dockerfile
      DockerContext: ./src/health_check
      DockerTag: python3.8-v1

Outputs:
  ManipulationApi:
    Value: !Sub "https://${rManipulationAPI}.execute-api.${AWS::Region}.amazonaws.com/dev/manipulate"
amazon-web-services aws-lambda aws-api-gateway
2个回答
1
投票

这是 API Gateway 服务的限制,无论您的 Lambda 超时设置为多少,API Gateway 都会在 30 秒后超时。

如果您预计 Lambda 执行时间始终接近或超过 30 秒,则需要转向更多的异步模式。

一些常见的模式:

  1. 客户端轮询:您提供两个端点:一个用于提交带有请求 ID 的立即返回的请求(即
    /submitRequest
    );另一个用于提交带有请求 ID 的请求。另一个允许客户获取请求的状态并确定请求是否已完成并获得最终结果(即
    /getResult
    )。
  2. 回调:提供一个端点,允许用户提交请求,但也允许他们提供在请求完成并返回结果时服务调用的 URL。 或者只是提供一个 SNS 主题,用户可以订阅该主题来获取其请求的结果。

无论如何,API Gateway 无法支持 30 秒以上的响应。 一般来说,设计具有如此长时间等待的 API 并不是一个好的做法,因为连接可能会发生很多事情。最好为客户端提供异步解决方案,这样更不容易出错。


0
投票

Amazon API Gateway 集成超时限制增加至超过 29 秒

发布于:2024 年 6 月 4 日

Amazon API Gateway 现在使客户能够提高集成度 超时超出先前的 29 秒限制。该设置代表 API Gateway 等待响应的最长时间 整合完成。您可以将集成超时提高到 区域 REST API 和私有 REST API 超过 29 秒, 但这可能需要减少您的帐户级别的限制 配额限制。通过此次发布,工作负载需要的客户 更长的超时,例如使用大语言的生成式 AI 用例 模型(法学硕士),可以利用 API 网关。

https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-api-gateway-integration-timeout-limit-29-seconds/

© www.soinside.com 2019 - 2024. All rights reserved.