Menambahkan respons integrasi ke API websocket AWS dengan CloudFormation

AWSdukungan Cloudformation baru-baru ini dirilis untuk membuat template gateway API websocket. Saya memiliki contoh yang berfungsi, tetapi saya tidak tahu cara mengaktifkan respons integrasi proxy (lihat tangkapan layar untuk mengetahui cara melakukannya di konsol). Adakah yang tahu pengaturan cloudFormation apa yang dapat digunakan untuk mengaktifkan respons integrasi default untuk integrasi proksi lambda? masukkan deskripsi gambar di sini


person Matthew de Nobrega    schedule 12.02.2019    source sumber


Jawaban (1)


Silakan coba langkah-langkah di bawah ini

1- Tambahkan RouteResponseSelectionExpression di Route sebagai $default (ini hanya satu yang didukung sampai sekarang)

2- Buat RouteResponse untuk semua rute (dua arah) Catatan: - RouteResponseKey: $default // seharusnya hanya default

3- Tambahkan ConnectIntegResponse (Opsional)

Di bawah ini adalah cuplikan CFN yang telah diuji, silakan menggunakannya

##########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
comment
Terima kasih kali 1000 untuk jawaban ini. Saya terjebak tanpa mengetahui tentang RouteResponseSelectionExpression sepanjang hari hari ini. - person miyasudokoro; 26.07.2019
comment
Saya dapat melihat respons saat menambahkan ini ke rute sendmessage, tetapi saat menambahkannya ke $connect saya tidak melihat respons apa pun kembali ke klien websocket. IntegrationResponse juga tampaknya tidak diperlukan, setidaknya untuk jenis integrasi HTTP_PROXY - person diegosasw; 19.05.2021