aws api gateway 设置WebSocket API集成请求

设置一个集成请求包括以下内容。
选择一个路由密钥来集成到后端。
指定要调用的后端端点,如AWS服务或HTTP端点。
通过指定一个或多个请求模板,配置如何将路由请求数据(如有必要)转换为集成请求数据。

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

要使用API Gateway控制台向WebSocket API中的路由添加集成请求
1.登录到API Gateway控制台,选择API,然后选择路由。
2.在路由下,选择路由
3.在路由概述窗格中,选择集成请求。
4.对于集成类型,选择下列之一。
a.只有当您的API将与您在此账户或其他账户中已经创建的AWS Lambda函数集成时,才选择Lambda Function。
b.要在AWS Lambda中创建一个新的Lambda函数,在Lambda函数上设置资源权限,或执行任何其他Lambda服务操作,请选择AWS服务。
c.如果你的API将与现有的HTTP端点集成,请选择HTTP。欲了解更多信息,请参阅在API Gateway中设置HTTP集成。
d.如果你想直接从API Gateway生成API响应,而不需要集成后端,则选择Mock。欲了解更多信息,请参阅在API Gateway中设置模拟集成。
e.如果你的API将与AWS服务集成,请选择AWS服务。
f.如果你的API将使用VpcLink作为私有集成端点,请选择VPC Link。更多信息,请参见设置API Gateway的私有集成。
5.如果你选择了Lambda Function,请执行以下操作。
a.对于Lambda Region,选择与您创建Lambda函数的地区相对应的地区标识符。例如,如果你在美国东部(弗吉尼亚州北部)地区创建了Lambda函数,请选择us-east-1。有关区域名称和标识符的列表,请参阅《亚马逊网络服务通用参考》中的AWS Lambda。
b.对于使用Lambda代理集成,如果你打算使用Lambda代理集成或跨账户Lambda代理集成,请选择复选框。
c.对于Lambda函数,以下列方式之一指定该函数
如果你的Lambda函数在同一个账户中,开始输入函数名称,然后从下拉列表中选择函数。
注意
函数名可以选择包括其别名或版本说明,如HelloWorld、HelloWorld:1或HelloWorld:alpha。
如果该功能是在一个不同的账户中,请输入该功能的ARN。
d.如果你想让API Gateway使用传入请求中收到的凭证来调用你的Lambda函数,请选择用调用者凭证进行调用。
e.对于执行角色,输入Lambda调用角色的ARN,使API Gateway能够调用你的Lambda函数。
f.要使用默认的超时值29秒,请保留使用默认超时复选框。要设置自定义超时,请清除该复选框,并输入50至29000毫秒的超时值。
g.选择保存。
6.如果你选择了HTTP,请按照 "使用API网关控制台设置API集成请求 "中的第4步进行操作。
7.如果你选择了Mock,请继续进行Request Templates步骤。
8.如果你选择了AWS服务,请按照 "使用API网关控制台设置API集成请求 "第6步中的说明进行操作。
9.如果你选择了VPC链接,请执行以下操作。
a.对于使用代理集成,如果您希望请求被代理到您的VPCLink的端点,请选择复选框。
b.从VPC链接的下拉列表中,选择[使用阶段变量],并在列表下面的文本框中输入${阶段变量.vpcLinkId}。
c.我们将在将API部署到一个阶段后定义vpcLinkId阶段变量,并将其值设置为VpcLink的ID。
d.对于HTTP方法,选择与HTTP后端中的方法最接近的HTTP方法类型。
e.对于端点URL,输入你希望该集成使用的HTTP后端URL。
f.要使用默认超时值29秒,请勾选使用默认超时选择。要设置自定义超时,请取消勾选,并输入50至29000毫秒之间的超时值。
10.在请求模板下,做以下工作:
a.对于模板选择表达式,选择铅笔图标,用模板选择表达式替换模板这个词。这是一个API Gateway在消息有效载荷中寻找的表达式。如果找到了,就会对其进行评估,结果是一个模板键值,用于选择应用于消息有效载荷中数据的数据映射模板。

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

使用AWS CLI设置一个集成请求

你可以通过使用AWS 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"
}

另外,你可以通过使用AWS 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"
}

整合反应概述

API Gateway的集成响应是对后端服务的响应进行建模和操作的一种方式。REST API与WebSocket API集成响应的设置存在一些差异,但从概念上讲,其行为是相同的。
WebSocket路由可以被配置为双向或单向通信。如果一个路由有一个路由响应,它就被配置为双向通信。否则,它将被配置为单向通信。
1.当路由被配置为双向通信时,集成响应允许您在返回的消息有效载荷上配置转换,类似于REST API的集成响应。
2.如果路由被配置为单向通信,那么无论任何集成响应配置如何,在消息被处理后都不会通过WebSocket通道返回响应。
本文的其余部分假设你已经选择了配置一个双向通信的路由。
集成可以分为代理集成和非代理集成。
重要的是
对于代理集成,API Gateway自动将后端输出作为完整的有效载荷传递给调用者。没有集成响应。
对于非代理集成,你必须至少设置一个集成响应。
理想情况下,当无法做出明确的选择时,你的集成响应之一应该充当一个万能的角色。这种默认情况通过设置default的集成响应键来表示。
在所有其他情况下,集成响应键作为一个正则表达式发挥作用。它应该遵循”/expression/"的格式。
对于非代理的HTTP集成:
1.API Gateway将尝试匹配后端响应的HTTP状态代码。在这种情况下,集成响应键将作为正则表达式发挥作用。如果找不到匹配,那么就选择$default作为集成响应。
2.如上所述,模板选择表达式的功能是相同的。例如。
/2\d\d/。接收并转换成功的响应
/4\d\d/。接收并转换坏的请求错误
$default。接收并转换所有意外的响应
关于当前模板选择表达式的限制,请参见模板选择表达式。

使用API网关控制台设置一个集成响应

要使用API Gateway控制台为WebSocket API设置路由集成响应。
1.登录到API网关控制台,选择API,然后选择路由。
2.选择路由。
3.选择集成响应。
4.在集成响应下,在响应选择表达式文本框中输入一个值。
5.在响应键下,选择添加响应。
a.要定义一个集成响应键,在新响应键文本框中输入一个键的名称,并选择复选标记图标。
b.选择模板选择表达式旁边的铅笔图标,并为API Gateway输入一个表达式,以便在发出的消息中寻找。该表达式应评估为一个集成响应密钥值,该值映射到您的一个响应模板。
有关模板选择表达式的信息,请参阅模板选择表达式。

使用AWS CLI设置一个集成响应

要使用 AWS CLI 为 WebSocket API 设置集成响应,请调用 creat-integration-response 命令。下面的CLI命令显示了一个创建$default集成响应的例子。

aws apigatewayv2 create-integration-response \
    --api-id vaz7da96z6 \
    --integration-id a1b2c3 \
    --integration-response-key '$default'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值