AWS недавно выпустила поддержку Cloudformation для создания шаблонов шлюзов API веб-сокетов. У меня развернут рабочий пример, но я не могу понять, как включить ответ интеграции прокси (см. Снимок экрана, чтобы узнать, как это делается в консоли). Кто-нибудь знает, какой параметр cloudFormation можно использовать для включения ответа интеграции по умолчанию для интеграции лямбда-прокси?
Добавление интеграционного ответа к AWS websocket API с помощью CloudFormation
Ответы (1)
Пожалуйста, попробуйте следующие шаги
1- Добавить RouteResponseSelectionExpression в Route как $ default (на данный момент поддерживается только один)
2- Создать RouteResponse для всех маршрутов (двунаправленный) Примечание: - RouteResponseKey: $ default // он должен быть только по умолчанию
3- Добавить ConnectIntegResponse (необязательно)
Ниже приведен протестированный фрагмент CFN, не стесняйтесь его использовать.
##########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
person
ifti
schedule
09.06.2019
1000 раз спасибо за этот ответ. Сегодня я застрял, не зная о RouteResponseSelectionExpression.
- person miyasudokoro; 26.07.2019
Я могу видеть ответы, когда добавляю это в маршрут
sendmessage
, но когда добавляю его в $connect
, я не вижу никакого ответа, возвращающегося клиенту websocket. Также IntegrationResponse не кажется необходимым, по крайней мере, для типа интеграции HTTP_PROXY.
- person diegosasw; 19.05.2021