在 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 中的路由添加集成请求
- 
                    登录到 API Gateway 控制台,选择 API,然后选择路由。 
- 
                    在路由中,选择所需路由。 
- 
                    选择集成请求选项卡,然后在集成请求设置部分中,选择编辑。 
- 
                    对于集成类型,选择下列选项之一: - 
                            仅当您的 API 将与您已在此账户或其它账户中创建的 AWS Lambda 函数集成时,才选择 Lambda 函数。 要在 AWS Lambda 中创建新的 Lambda 函数,要为 Lambda 函数设置资源权限,或者要执行任何其他 Lambda 服务操作,请改为选择 AWS 服务。 
- 
                            如果您的 API 将与现有 HTTP 端点集成,请选择 HTTP。有关更多信息,请参阅 针对 API Gateway 中的 REST API 的 HTTP 集成。 
- 
                            如果要直接从 API Gateway 生成 API 响应,而无需集成后端,请选择模拟。有关更多信息,请参阅 针对 API Gateway 中的 REST API 的模拟集成。 
- 
                            如果您的 API 将与某项 AWS 服务集成,则选择 AWS 服务。 
- 
                            如果您的 API 将使用 VpcLink作为私有集成端点,请选择 VPC 链接。有关更多信息,请参阅 针对 API Gateway 中的 REST API 的私有集成。
 
- 
                            
- 
                    如果您选择 Lambda 函数,请执行以下操作: - 
                        对于使用 Lambda 代理集成,如果您打算使用 Lambda 代理集成或跨账户 Lambda 代理集成,请选中此复选框。 
- 
                            对于 Lambda 函数,请通过以下方式之一指定函数: - 
                                    如果您的 Lambda 函数在同一账户中,请输入函数名称,然后从下拉列表中选择函数。 注意函数名称可以包含(可选)其别名或版本规范,如在 HelloWorld、HelloWorld:1或HelloWorld:alpha中。
- 
                                    如果该函数位于不同账户,请输入该函数的 ARN。 
 
- 
                                    
- 
                            
要使用默认超时值 29 秒,请保持默认超时处于开启状态。要设置自定义超时,请选择默认超时,然后输入一个介于 50到29000毫秒之间的超时值。
 
- 
                        
- 
                    如果您选择了 HTTP,请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 4 中的说明。 
- 
                    如果您选择了模拟,请继续执行请求模板步骤。 
- 
                    如果您选择了 AWS 服务,请遵循使用 API Gateway 控制台设置 API 集成请求的步骤 6 中的说明操作。 
- 
                    如果您选择了 VPC 链接,请执行以下操作: - 
                            对于 VPC 代理集成,如果要将请求通过代理连接到 VPCLink的端点,请选中该复选框。
- 
                        对于 HTTP 方法,选择与 HTTP 后端中的方法最匹配的 HTTP 方法类型。 
- 
                            从 VPC 链接下拉列表中,选择一个 VPC 链接。您可以选择 [Use Stage Variables]并在列表下方的文本框中输入${stageVariables.vpcLinkId}。您可以在将 API 部署到阶段之后定义 vpcLinkId阶段变量,并将其值设置为VpcLink的 ID。
- 
                            对于端点 URL,请输入您希望此集成使用的 HTTP 后端的 URL。 
- 
                        
要使用默认超时值 29 秒,请保持默认超时处于开启状态。要设置自定义超时,请选择默认超时,然后输入一个介于 50到29000毫秒之间的超时值。
 
- 
                            
- 
                  选择 Save changes(保存更改)。 
- 
                    在请求模板下方,执行以下操作: - 要输入模板选择表达式,请在请求模板下选择编辑。 
- 输入模板选择表达式。使用 API Gateway 在消息负载中查找的表达式。如果找到,则对其进行评估,结果是模板键值,用于选择要应用于消息负载中的数据的数据映射模板。您将在下一步中创建数据映射模板。选择编辑以保存所做更改。 
- 选择创建模板以创建数据映射模板。对于模板密钥,输入一个模板密钥值,用于选择要应用于消息负载中的数据的数据映射模板。然后,输入映射模板。选择创建模板。 - 有关模板选择表达式的信息,请参阅模板选择表达式。 
 
使用 AWS CLI 设置集成请求
您可以使用 AWS 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" }
或者,您可以使用 AWS CLI 为代理集成设置集成请求。
- 
                    在 Lambda 控制台中创建 Lambda 函数,并为其提供基本的 Lambda 执行角色。 
- 
                  使用以下 create-integration 命令创建集成。 aws apigatewayv2 create-integration --api-idaabbccddee--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" }
适用于 WebSocket API 的代理集成的 Lambda 函数的输入格式
使用 Lambda 代理集成,API Gateway 可以将整个客户端请求映射到后端 Lambda 函数的输入 event 参数:以下示例显示了 API Gateway 发送到 Lambda 代理集成的 $connect 路由中输入事件和 $disconnect 路由中输入事件的结构。