我尝试在AWS ApiGateway中设置一个非常简单的WebSocket模拟。但是,每次尝试都出现错误:
13:36:52 (X33uOGUfIAMFq7w=) Extended Request Id: X33uOGUfIAMFq7w=
13:36:52 (X33uOGUfIAMFq7w=) Verifying Usage Plan for request: X33uOGUfIAMFq7w=. API Key: API Stage: redacted/prod
13:36:52 (X33uOGUfIAMFq7w=) API Key authorized because route '$connect' does not require API Key. Request will not contribute to throttle or quota limits
13:36:52 (X33uOGUfIAMFq7w=) Usage Plan check succeeded for API Key and API Stage redacted/prod
13:36:52 (X33uOGUfIAMFq7w=) Starting execution for request: X33uOGUfIAMFq7w=
13:36:52 (X33uOGUfIAMFq7w=) WebSocket Request Route: [$connect]
13:36:52 (X33uOGUfIAMFq7w=) Client [UserAgent: null, SourceIp: redacted] attempts to connect to WebSocket API [redacted].
13:36:52 (X33uOGUfIAMFq7w=) Execution failed due to configuration error: statusCode should be an integer which defined in request template
13:36:52 (X33uOGUfIAMFq7w=) Client [UserAgent: null, SourceIp: redacted] failed to connect to API [redacted].
就我所知,我已经遵循了最基本的配置。我不需要任何响应或模板,只需要一个简单的WebSocket连接,允许我连接到它,什么也不做,或者可能用一个pong
响应ping
请求。
所有的授权和API密钥都被禁用。没有设置请求模板或集成响应,因为我不需要它们。同样,目标是只能够有一个可以连接的哑WebSocket。
然而,每当我试图连接到它,我得到一个500错误与错误日志从上面关于一个状态代码。
WebSocket connection to 'wss://redacted.execute-api.us-east-1.amazonaws.com/prod' failed: Error during WebSocket handshake: Unexpected response code: 500
2条答案
按热度按时间p4tfgftt1#
使用下面的源代码,我能够得到一个快速而松散的示例AWS API网关连接工作使用MOCK端点与web套接字.我相信这可以冲洗出来更多,以提供一个更好的理解不同的请求/响应主体消息和代码..
1.首先,转到API网关,单击创建API
1.对于选择协议,请选择WebSocket
1.给予API命名,并使用
$request.body.message
示例路由选择表达式1.单击创建API按钮
1.从侧窗格中选择新的API,然后单击路由
1.选择**
$connect
路线1.在Route overview下,为端点选择Mock单选按钮
1.对于请求模板**,输入表达式(例如使用200)。
1.对于模板密钥,输入密钥(例如使用200)
1.对于直通行为的弹出窗口,请选择否,使用当前设置
1.单击模板关键字
200
,然后输入模板:{"statusCode" : 200}
,然后单击“保存”按钮。x1c 0d1x1.选择路线概览返回**
$connect
概览页,然后选择添加集成响应按钮1.创建响应密钥$default**,该密钥将引用Routes
下的**
$default
密钥1.对于
$disconnect
路线,请为此特定路线重复步骤7 - 13**。1.完成**
$disconnect
路由的设置后,请在路由窗格下选择$default
**路由。1.以与**
$connect
和$disconnect
相同的方式创建集成请求**(步骤7 - 11)1.对于**
$default
下的集成响应**,我们将设置与**$connect
和$disconnect
略有不同的路由响应,因为这两个路由的响应实际上引用了其各自集成响应中的$default
响应。1.创建$default的响应密钥
1.输入模板选择表达式**(本例使用200)
1.然后创建一个模板密钥(本例使用200)
1.单击模板关键字
200
,然后输入模板:{"statusCode" : 200, "connectionId" : "$context.connectionId"}
,然后单击“保存”按钮。x1c4d 1x{"connectionId" : "$context.connectionId"}
被添加到响应有效负载以显示如何在响应中使用变量来表示连接的实际值。1.最后,在操作下拉列表下,选择部署API,然后输入部署阶段名称。这将生成一个现在可以连接到的WebSocket URL,例如(
wss://#######.execute-api.us-east-1.amazonaws.com/Test
)1.通过cli使用
wscat
,我现在能够连接到我的WebSocket URL(安装wscat请参见下面的源代码):wscat -c wss://#######.execute-api.us-east-1.amazonaws.com/Test
x1c5天1x来源:
m0rkklqb2#
我已经使用CloudFormation自动化了Woodrow所描述的步骤,所以现在任何人都可以更容易地复制它。模板可以在这里找到:https://gist.github.com/maatthc/9d2dfe0448733f0ee1624d658fbac80f。要使用它创建新堆栈,您应该:
1.将模板下载到您的计算机。
1.进入AWS控制台中的Cloudformation(https://ap-southeast-2.console.aws.amazon.com/cloudformation/)-更改您的AWS区域。
1.单击“创建堆栈”
1.选取“上传模板文件”并使用您下载的模板。
1.单击“下一步”,给予堆栈命名,然后再次单击“下一步”。
1.单击“下一步”和“创建堆栈”。
希望能帮上忙。
干杯