在 API Gateway 中设置带有效载荷响应流式传输的 HTTP 代理集成
设置响应有效载荷流式传输时,您需要在方法的集成请求中指定响应传输模式。通过在集成请求中配置这些设置,可以控制 API Gateway 在集成响应之前和期间的行为。使用响应流式传输时,您可以将集成超时配置为最长 15 分钟。
当对 HTTP_PROXY 集成使用有效载荷响应流式传输时,API Gateway 必须完全接收所有标头后,才会发送 HTTP 响应状态码或任何 HTTP 响应标头。
创建带有效载荷响应流的 HTTP 代理集成
以下步骤展示了如何导入一个 responseTransferMode 设置为 STREAM 的新 API。如果您有现有的集成 API 并想要修改 responseTransferMode,请参阅更新 HTTP 代理集成的响应传输模式。
- AWS 管理控制台
-
创建带有效载荷响应流的 HTTP 代理集成
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway。
选择一个 REST API。
选择创建资源。
对于资源名称,输入 streaming。
选择创建资源。
选中 /streaming 资源后,选择创建方法。
对于方法类型,请选择 ANY。
对于集成类型,选择 HTTP。
选择 HTTP 代理集成。
对于响应传输模式,请选择流式传输。
对于 HTTP 方法,请选择一种方法。
-
对于端点 URL,请输入集成端点。确保选择能够产生大量有效载荷并流式返回给您的端点。
选择创建方法。
创建方法后,部署您的 API。
部署 API
选择部署 API。
对于阶段,选择新建阶段。
对于阶段名称,输入 prod。
(可选)对于描述,输入描述。
选择部署。
- AWS CLI
-
创建带有效载荷响应流式传输的新 API
-
复制以下 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"
使用以下 import-rest-api 命令导入您的 OpenAPI 定义:
aws apigateway import-rest-api \
--body 'fileb://~/ResponseStreamDemoSwagger.yaml' \
--parameters endpointConfigurationTypes=REGIONAL \
--region us-west-1
使用以下 create-deployment 命令将新 API 部署到某个阶段:
aws apigateway create-deployment \
--rest-api-id a1b2c3 \
--stage-name prod \
--region us-west-1
更新 HTTP 代理集成的响应传输模式
以下步骤展示了如何更新 HTTP 代理集成的响应传输模式。
- AWS 管理控制台
-
更新方法后,部署您的 API。
部署 API
选择部署 API。
对于阶段,选择新建阶段。
对于阶段名称,输入 prod。
(可选)对于描述,输入描述。
选择部署。
- 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 才能使更改生效。