使用 CloudFormation 向 AWS websocket API 添加集成响应
Posted
技术标签:
【中文标题】使用 CloudFormation 向 AWS websocket API 添加集成响应【英文标题】:Adding integration response to AWS websocket API with CloudFormation 【发布时间】:2019-07-05 17:29:22 【问题描述】:AWS recently released Cloudformation support for templating websocket API gateways。我部署了一个工作示例,但我不知道如何打开代理集成响应(有关如何在控制台中完成此操作,请参见屏幕截图)。有谁知道可以使用什么 cloudFormation 设置来打开 lambda 代理集成的默认集成响应?
【问题讨论】:
【参考方案1】:请尝试以下步骤
1- 在 Route 中添加 RouteResponseSelectionExpression 作为 $default(目前仅支持一个)
2- 为所有路由创建 RouteResponse(双向) 注意:- RouteResponseKey: $default // 它应该只是默认的
3- 添加 ConnectIntegResponse(可选)
下面是一个经过测试的CFN sn-p,请随意使用
##########Socket API###############
webSocket:
Type: AWS::ApiGatewayV2::Api
Properties:
Name: WebSocket
ProtocolType: WEBSOCKET
RouteSelectionExpression: "$request.body.action"
ConnectRoute:
Type: AWS::ApiGatewayV2::Route
Properties:
ApiId: !Ref webSocket
RouteKey: $connect
AuthorizationType: NONE
OperationName: ConnectRoute
RouteResponseSelectionExpression: $default # add this
Target: !Join
- '/'
- - 'integrations'
- !Ref ConnectInteg
ConnectInteg:
Type: AWS::ApiGatewayV2::Integration
Properties:
ApiId: !Ref webSocket
Description: Connect Integration
IntegrationType: AWS_PROXY
IntegrationUri:
Fn::Sub:
arn:aws:apigateway:$AWS::Region:lambda:path/2015-03-31/functions/$restAndSocketLambda.Arn/invocations
ConnectRouteResponse: # Add this
Type: 'AWS::ApiGatewayV2::RouteResponse'
Properties:
RouteId: !Ref ConnectRoute
ApiId: !Ref webSocket
RouteResponseKey: $default
ConnectIntegResponse: # Add this(if required)
Type: 'AWS::ApiGatewayV2::IntegrationResponse'
Properties:
IntegrationId: !Ref ConnectInteg
IntegrationResponseKey: /201/
ApiId: !Ref webSocket
【讨论】:
感谢您的回答 1000 次。我今天一整天都不知道“RouteResponseSelectionExpression”。 将其添加到sendmessage
路由时我可以看到响应,但是将其添加到$connect
时我看不到任何响应返回到websocket 客户端。此外,IntegrationResponse 似乎不需要,至少对于 HTTP_PROXY 集成类型以上是关于使用 CloudFormation 向 AWS websocket API 添加集成响应的主要内容,如果未能解决你的问题,请参考以下文章
AWS CloudFormation 脚本失败 - 不允许 Cognito 使用您的电子邮件身份
使用带反斜杠的sed命令时出现AWS CloudFormation模板验证错误
从 Lambda 函数内部访问 AWS CloudFormation ARN
AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用