在 API Gateway 中设置 WebSocket API 集成请求
设置集成请求涉及以下内容:
-
选择要集成到后端的路由键。
-
指定要调用的后端终端节点,如 Amazon 服务或 HTTP 终端节点。
-
通过指定一个或多个请求模板,配置如何根据需要将路径请求数据转换为集成请求数据。
使用 API Gateway 控制台设置 WebSocket API 集成请求
使用 API Gateway 控制台向 WebSocket API 中的路由添加集成请求
-
登录到 API Gateway 控制台,选择 API,然后选择路由。
-
在 Routes (路由) 中,选择所需路由。
-
在 Route Overview (路由概述) 窗格中,选择 Integration Request (集成请求)。
-
对于 Integration Type (集成类型),选择下列选项之一:
-
如果您的 API 将与您已在此账户或其他账户中创建的 Amazon Lambda 函数集成,请只选择 Lambda Function (Lambda 函数)。
要在 Amazon Lambda 中创建新的 Lambda 函数,要为 Lambda 函数设置资源权限,或者要执行任何其他 Lambda 服务操作,请改为选择 Amazon Service (亚马逊云科技服务)。
-
如果您的 API 将与现有 HTTP 终端节点集成,请选择 HTTP。有关更多信息,请参阅 在 API Gateway 中设置 HTTP 集成。
-
如果要直接从 API Gateway 生成 API 响应,而无需集成后端,请选择模拟。有关更多信息,请参阅 在 API Gateway 中设置模拟集成。
-
如果您的 API 将与某项Amazon服务集成,则选择 Amazon Service (亚马逊云科技服务)。
-
如果您的 API 将使用
VpcLink
作为私有集成终端节点,请选择 VPC Link (VPC 链接)。有关更多信息,请参阅 设置 API Gateway 私有集成。
-
-
如果选择 Lambda 函数,则执行以下操作:
-
对于 Lambda 区域,选择与您在其中创建 Lambda 函数的区域对应的区域标识符。例如,如果您在美国东部(弗吉尼亚北部)区域创建了 Lambda 函数,请选择
us-east-1
。有关区域名称和标识符的列表,请参阅 Amazon Web Services 一般参考中的 Amazon Lambda。 -
对于使用 Lambda Proxy 集成,如果您打算使用 Lambda 代理集成或跨账户 Lambda 代理集成,请选中此复选框。
-
对于 Lambda 函数,请通过以下方式之一指定函数:
-
如果您的 Lambda 函数在同一账户中,请开始键入函数名称,然后从下拉列表中选择函数。
注意 函数名称可以包含(可选)其别名或版本规范,如在
HelloWorld
、HelloWorld:1
或HelloWorld:alpha
中。 -
如果该函数位于不同账户,请输入该函数的 ARN。
-
-
如果您希望 API Gateway 使用在传入请求中收到的凭证来调用 Lambda 函数,请选择使用调用方凭证进行调用。
-
对于执行角色,输入使 API Gateway 能够调用 Lambda 函数的 Lambda 调用角色的 ARN。
-
要使用默认超时值 29 秒,请选中 Use Default Timeout (使用默认超时) 复选框。要设置自定义超时,请取消选中该框,并输入一个介于
50
和29000
毫秒之间超时值。 -
选择保存。
-
-
如果您选择了 HTTP,请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 4 中的说明。
-
如果您选择了 Mock (模拟),请继续执行 Request Templates (请求模板) 步骤。
-
如果您选择了 Amazon Service (亚马逊云科技服务),请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 6 中的说明。
-
如果您选择了 VPC Link (VPC 链接),请执行以下操作:
-
对于 Use Proxy integration (使用代理集成),如果要将请求通过代理连接到
VPCLink
的终端节点,请选中该复选框。 -
从 VPC Link (VPC 链接) 下拉列表中,选择
[Use Stage Variables]
并在列表下方的文本框中输入${stageVariables.vpcLinkId}
。我们将在将 API 部署到阶段之后定义
vpcLinkId
阶段变量,并将其值设置为VpcLink
的 ID。 -
对于 HTTP method (HTTP 方法),选择与 HTTP 后端中的方法最匹配的 HTTP 方法类型。
-
对于 Endpoint URL (终端节点 URL),请输入您希望此集成使用的 HTTP 后端的 URL。
-
要使用默认超时值 29 秒,请选中 Use Default Timeout (使用默认超时) 选项。要设置自定义超时,请取消选中该框,并输入一个介于
50
和29000
毫秒之间超时值。
-
-
在 Request Templates (请求模板) 下面,执行以下操作:
-
对于 Template Selection Expression (模板选择表达式),请选择铅笔图标,并将
template
一词替换为模板选择表达式。这是 API Gateway 在消息负载中查找的表达式。如果找到,则对其进行评估,结果是模板键值,用于选择要应用于消息负载中的数据的数据映射模板。有关模板选择表达式的信息,请参阅模板选择表达式。
-
使用 Amazon CLI 设置集成请求
您可以使用 Amazon CLI 为 WebSocket API 中的路由设置集成请求,如以下示例所示(这将创建模拟集成):
-
使用以下内容创建名为
integration-params.json
的文件:{"PassthroughBehavior": "WHEN_NO_MATCH", "TimeoutInMillis": 29000, "ConnectionType": "INTERNET", "RequestTemplates": {"application/json": "{\"statusCode\":200}"}, "IntegrationType": "MOCK"}
-
运行
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 为代理集成设置集成请求,如以下示例所示:
-
在 Lambda 控制台中创建 Lambda 函数,并为其提供基本的 Lambda 执行角色。
-
执行
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" }