

# 在 API Gateway 中设置带有效载荷响应流式传输的 HTTP 代理集成
<a name="response-streaming-http"></a>

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

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

## 创建带有效载荷响应流的 HTTP 代理集成
<a name="response-streaming-http-create"></a>

以下步骤展示了如何导入一个 `responseTransferMode` 设置为 `STREAM` 的新 API。如果您有现有的集成 API 并想要修改 `responseTransferMode`，请参阅[更新 HTTP 代理集成的响应传输模式](#response-streaming-http-update)。

------
#### [ Amazon Web Services 管理控制台 ]

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

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.amazonaws.cn/apigateway)。

1. 选择一个 REST API。

1. 选择**创建资源**。

1. 对于**资源名称**，输入 **streaming**。

1. 选择**创建资源**。

1. 选中 **/streaming** 资源后，选择**创建方法**。

1. 对于**方法类型**，请选择 **ANY**。

1. 对于**集成类型**，选择 **HTTP**。

1. 选择 **HTTP 代理集成**。

1. 对于**响应传输模式**，请选择**流式传输**。

1. 对于 **HTTP 方法**，请选择一种方法。

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

1. 选择**创建方法**。

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

**部署 API**

1. 选择**部署 API**。

1. 对于**阶段**，选择**新建阶段**。

1. 对于**阶段名称**，输入 **prod**。

1. （可选）对于**描述**，输入描述。

1. 选择**部署**。

------
#### [ Amazon 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"
   ```

1. 使用以下 `import-rest-api` 命令导入您的 OpenAPI 定义：

   ```
   aws apigateway import-rest-api \
     --body 'fileb://~/ResponseStreamDemoSwagger.yaml' \
     --parameters endpointConfigurationTypes=REGIONAL \
     --region us-west-1
   ```

1. 使用以下 `create-deployment` 命令将新 API 部署到某个阶段：

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

------

## 更新 HTTP 代理集成的响应传输模式
<a name="response-streaming-http-update"></a>

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

------
#### [ Amazon Web Services 管理控制台 ]

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

1. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.amazonaws.cn/apigateway)。

1. 选择一个 REST API。

1. 选择方法。

1. 在**集成请求**选项卡的**集成请求设置**下，选择**编辑**。

1. 对于**响应传输模式**，请选择**流式传输**。

1. 选择**保存**。

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

**部署 API**

1. 选择**部署 API**。

1. 对于**阶段**，选择**新建阶段**。

1. 对于**阶段名称**，输入 **prod**。

1. （可选）对于**描述**，输入描述。

1. 选择**部署**。

------
#### [ Amazon 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 才能使更改生效。

------