在 API Gateway 中设置带有效载荷响应流式传输的 HTTP 代理集成 - Amazon API Gateway

在 API Gateway 中设置带有效载荷响应流式传输的 HTTP 代理集成

设置响应有效载荷流式传输时,您需要在方法的集成请求中指定响应传输模式。通过在集成请求中配置这些设置,可以控制 API Gateway 在集成响应之前和期间的行为。使用响应流式传输时,您可以将集成超时配置为最长 15 分钟。

当对 HTTP_PROXY 集成使用有效载荷响应流式传输时,API Gateway 必须完全接收所有标头后,才会发送 HTTP 响应状态码或任何 HTTP 响应标头。

创建带有效载荷响应流的 HTTP 代理集成

以下步骤展示了如何导入一个 responseTransferMode 设置为 STREAM 的新 API。如果您有现有的集成 API 并想要修改 responseTransferMode,请参阅更新 HTTP 代理集成的响应传输模式

AWS 管理控制台
创建带有效载荷响应流的 HTTP 代理集成
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择一个 REST API。

  3. 选择创建资源

  4. 对于资源名称,输入 streaming

  5. 选择创建资源

  6. 选中 /streaming 资源后,选择创建方法

  7. 对于方法类型,请选择 ANY

  8. 对于集成类型,选择 HTTP

  9. 选择 HTTP 代理集成

  10. 对于响应传输模式,请选择流式传输

  11. 对于 HTTP 方法,请选择一种方法。

  12. 对于端点 URL,请输入集成端点。确保选择能够产生大量有效载荷并流式返回给您的端点。

  13. 选择创建方法

创建方法后,部署您的 API。

部署 API
  1. 选择部署 API

  2. 对于阶段,选择新建阶段

  3. 对于阶段名称,输入 prod

  4. (可选)对于描述,输入描述。

  5. 选择部署

AWS CLI
创建带有效载荷响应流式传输的新 API
  1. 复制以下 Open API 文件,并将其保存为 ResponseStreamDemoSwagger.yaml。在此文件中,responseTransferMode 设置为 STREAM。集成端点设置为 https://example.com,但建议您将其修改为能生成大型有效载荷并流式返回给您的端点。

    openapi: "3.0.1" info: title: "ResponseStreamingDemo" version: "2025-04-28T17:28:25Z" servers: - url: "{basePath}" variables: basePath: default: "prod" paths: /streaming: get: x-amazon-apigateway-integration: httpMethod: "GET" uri: "https://example.com" type: "http_proxy" timeoutInMillis: 900000 responseTransferMode: "STREAM"
  2. 使用以下 import-rest-api 命令导入您的 OpenAPI 定义:

    aws apigateway import-rest-api \ --body 'fileb://~/ResponseStreamDemoSwagger.yaml' \ --parameters endpointConfigurationTypes=REGIONAL \ --region us-west-1
  3. 使用以下 create-deployment 命令将新 API 部署到某个阶段:

    aws apigateway create-deployment \ --rest-api-id a1b2c3 \ --stage-name prod \ --region us-west-1

更新 HTTP 代理集成的响应传输模式

以下步骤展示了如何更新 HTTP 代理集成的响应传输模式。

AWS 管理控制台
更新 HTTP 代理集成的响应传输模式
  1. 通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway

  2. 选择一个 REST API。

  3. 选择方法。

  4. 集成请求选项卡的集成请求设置下,选择编辑

  5. 对于响应传输模式,请选择流式传输

  6. 选择保存

更新方法后,部署您的 API。

部署 API
  1. 选择部署 API

  2. 对于阶段,选择新建阶段

  3. 对于阶段名称,输入 prod

  4. (可选)对于描述,输入描述。

  5. 选择部署

AWS CLI

以下 update-integration 命令将集成的传输模式从 BUFFERED 更新为 STREAM。对于所有现有 API,所有集成的响应传输模式均设置为 BUFFERED

aws apigateway update-integration \ --rest-api-id a1b2c3 \ --resource-id aaa111 \ --http-method GET \ --patch-operations "op='replace',path='/responseTransferMode',value=STREAM" \ --region us-west-1

您需要重新部署 API 才能使更改生效。如果您自定义了集成超时,该超时值将被移除,因为 API Gateway 将流式传输您的响应,最长持续时间为 5 分钟。

以下 update-integration 命令将集成的传输模式从 STREAM 更新为 BUFFERED

aws apigateway update-integration \ --rest-api-id a1b2c3 \ --resource-id aaa111 \ --http-method GET \ --patch-operations "op='replace',path='/responseTransferMode',value=BUFFERED" \ --region us-west-1

您需要重新部署 API 才能使更改生效。