Skip to content

Feature request: Event Source Data Classes for API Gateway WebSocket events #6161

@ericbn

Description

@ericbn

Use case

I see Pydantic models were added for API Gateway WebSocket events here:

Model name Description
APIGatewayWebSocketMessageEventModel Lambda Event Source payload for Amazon API Gateway WebSocket API message body
APIGatewayWebSocketConnectEventModel Lambda Event Source payload for Amazon API Gateway WebSocket API $connect message
APIGatewayWebSocketDisconnectEventModel Lambda Event Source payload for Amazon API Gateway WebSocket API $disconnect message

This is request to add the corresponding Event Source Data Classes.

Solution/User Experience

It would be used like below, as an example:

import requests
from aws_lambda_powertools.utilities.data_classes import (
    APIGatewayWebSocketMessageEvent,
    event_source,
)

session = requests.Session()

@event_source(data_class=APIGatewayWebSocketMessageEvent)
def lambda_handler(event: APIGatewayWebSocketMessageEvent, context):
    params = {
        "connection_id": event.request_context.connection_id,
        "data": event.json_body,
    }
    response = session.post("https://mydomain.com/myapi", data=params)
    if 400 <= response.status_code < 600:
        raise RuntimeError(response.text)
    return {"statusCode": 200}

Alternative solutions

I see other requests related to API Gateway WebSocket events, but they seem like different features: #1165, #5905

Acknowledgment

Metadata

Metadata

Assignees

Labels

Projects

Status

Shipped

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions