在 API Gateway 中设置 WebSocket API 集成请求 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 API Gateway 中设置 WebSocket API 集成请求

设置集成请求涉及以下内容:

  • 选择要集成到后端的路由键。

  • 指定要调用的后端端点。WebSocket API 支持以下集成类型:

    • AWS_PROXY

    • AWS

    • HTTP_PROXY

    • HTTP

    • MOCK

    有关集成类型的更多信息,请参阅《API Gateway V2 REST API》中的 IntegrationType

  • 通过指定一个或多个请求模板,配置如何根据需要将路径请求数据转换为集成请求数据。

使用 API Gateway 控制台设置 WebSocket API 集成请求

使用 API Gateway 控制台向 WebSocket API 中的路由添加集成请求
  1. 登录到 API Gateway 控制台,选择 API,然后选择路由

  2. Routes (路由) 中,选择所需路由。

  3. 选择集成请求选项卡,然后在集成请求设置部分中,选择编辑

  4. 对于集成类型,选择下列选项之一:

    • 仅当您的 API 将与您已在此账户或其它账户中创建的 Amazon Lambda 函数集成时,才选择 Lambda 函数

      要在 Amazon Lambda 中创建新的 Lambda 函数,要为 Lambda 函数设置资源权限,或者要执行任何其他 Lambda 服务操作,请改为选择 Amazon Service (亚马逊云科技服务)

    • 如果您的 API 将与现有 HTTP 终端节点集成,请选择 HTTP。有关更多信息,请参阅 在 API Gateway 中设置 HTTP 集成

    • 如果要直接从 API Gateway 生成 API 响应,而无需集成后端,请选择模拟。有关更多信息,请参阅 在 API Gateway 中设置模拟集成

    • 如果您的 API 将与某项 Amazon 服务集成,则选择 Amazon 服务

    • 如果您的 API 将使用 VpcLink 作为私有集成端点,请选择 VPC 链接。有关更多信息,请参阅 设置 API Gateway 私有集成

  5. 如果您选择 Lambda 函数,请执行以下操作:

    1. 对于使用 Lambda 代理集成,如果您打算使用 Lambda 代理集成跨账户 Lambda 代理集成,请选中此复选框。

    2. 对于 Lambda 函数,请通过以下方式之一指定函数:

      • 如果您的 Lambda 函数在同一账户中,请输入函数名称,然后从下拉列表中选择函数。

        注意

        函数名称可以包含(可选)其别名或版本规范,如在 HelloWorldHelloWorld:1HelloWorld:alpha 中。

      • 如果该函数位于不同账户,请输入该函数的 ARN。

    3. 要使用默认超时值 29 秒,请保持默认超时处于开启状态。要设置自定义超时,请选择默认超时,然后输入一个介于 5029000 毫秒之间的超时值。

  6. 如果您选择了 HTTP,请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 4 中的说明。

  7. 如果您选择了 Mock (模拟),请继续执行 Request Templates (请求模板) 步骤。

  8. 如果您选择了 Amazon 服务,请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 6 中的说明操作。

  9. 如果您选择了 VPC 链接,请执行以下操作:

    1. 对于 VPC 代理集成,如果要将请求通过代理连接到 VPCLink 的端点,请选中该复选框。

    2. 对于 HTTP method (HTTP 方法),选择与 HTTP 后端中的方法最匹配的 HTTP 方法类型。

    3. VPC 链接下拉列表中,选择一个 VPC 链接。您可以选择 [Use Stage Variables] 并在列表下方的文本框中输入 ${stageVariables.vpcLinkId}

      您可以在将 API 部署到阶段之后定义 vpcLinkId 阶段变量,并将其值设置为 VpcLink 的 ID。

    4. 对于 Endpoint URL (终端节点 URL),请输入您希望此集成使用的 HTTP 后端的 URL。

    5. 要使用默认超时值 29 秒,请保持默认超时处于开启状态。要设置自定义超时,请选择默认超时,然后输入一个介于 5029000 毫秒之间的超时值。

  10. 选择保存更改

  11. 请求模板下方,执行以下操作:

    1. 要输入模板选择表达式,请在请求模板下选择编辑

    2. 输入模板选择表达式。使用 API Gateway 在消息负载中查找的表达式。如果找到,则对其进行评估,结果是模板键值,用于选择要应用于消息负载中的数据的数据映射模板。您将在下一步中创建数据映射模板。选择编辑以保存所做更改。

    3. 选择创建模板以创建数据映射模板。对于模板密钥,输入一个模板密钥值,用于选择要应用于消息负载中的数据的数据映射模板。然后,输入映射模板。选择创建模板

      有关模板选择表达式的信息,请参阅模板选择表达式

使用 Amazon CLI 设置集成请求

您可以使用 Amazon CLI 为 WebSocket API 中的路由设置集成请求,如以下示例所示(这将创建模拟集成):

  1. 使用以下内容创建名为 integration-params.json 的文件:

    {"PassthroughBehavior": "WHEN_NO_MATCH", "TimeoutInMillis": 29000, "ConnectionType": "INTERNET", "RequestTemplates": {"application/json": "{\"statusCode\":200}"}, "IntegrationType": "MOCK"}
  2. 运行 create-integration 命令,如以下示例所示:

    aws apigatewayv2 --region us-east-1 create-integration --api-id aabbccddee --cli-input-json file://integration-params.json

以下是此示例的示例输出:

{ "PassthroughBehavior": "WHEN_NO_MATCH", "TimeoutInMillis": 29000, "ConnectionType": "INTERNET", "IntegrationResponseSelectionExpression": "${response.statuscode}", "RequestTemplates": { "application/json": "{\"statusCode\":200}" }, "IntegrationId": "0abcdef", "IntegrationType": "MOCK" }

或者,您可以使用 Amazon CLI 为代理集成设置集成请求,如以下示例所示:

  1. 在 Lambda 控制台中创建 Lambda 函数,并为其提供基本的 Lambda 执行角色。

  2. 执行 create-integration 命令,如以下示例所示:

    aws apigatewayv2 create-integration --api-id aabbccddee --integration-type AWS_PROXY --integration-method POST --integration-uri arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123412341234:function:simpleproxy-echo-e2e/invocations

以下是此示例的示例输出:

{ "PassthroughBehavior": "WHEN_NO_MATCH", "IntegrationMethod": "POST", "TimeoutInMillis": 29000, "ConnectionType": "INTERNET", "IntegrationUri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123412341234:function:simpleproxy-echo-e2e/invocations", "IntegrationId": "abcdefg", "IntegrationType": "AWS_PROXY" }