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?
Menambahkan respons integrasi ke API websocket AWS dengan CloudFormation
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
Terima kasih kali 1000 untuk jawaban ini. Saya terjebak tanpa mengetahui tentang RouteResponseSelectionExpression sepanjang hari hari ini.
- person miyasudokoro; 26.07.2019
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