Proxylity Listeners can be configured to direct traffic to multiple Destinations, in which case the destinations are collectively referred to as a "composite destination". Each destination is individually configured, may integrate with different AWS services, and behaves the same as one configured alone.
graph TD
listener[Listener] -->destinationA["Destination A (e.g. Lambda)"]
listener[Listener] -->destinationB["Destination B (e.g. Firehose)"]
listener[Listener] -->destinationC["Destination C (e.g. CloudWatch Logs)"]
classDef default fill:silver,stroke:#9999,stroke-width:1px;
A common use case for composite destinations is multiplexing for archival. For example, a listener may be configured to deliver packets to both a Firehose stream and a Lambda function, where the Lambda function processes the packets and produces replies, and the Firehose stream archives the packets for later analysis. CloudWatch Logs is another common destination for archival.
Another valuable use case is debugging external integrations. When using API Gateway to call external services, adding a CloudWatch Logs destination captures the original UDP payload alongside API Gateway's execution logs, providing complete visibility into the request flow. See Integrating Outside AWS for detailed debugging patterns.
With FilterExpression, composite destinations go beyond simple multiplexing. Each
destination can include a BREX filter
so it receives only the packets it cares about. A single listener can accept a heterogeneous stream --
for example, MAVLink telemetry -- and route GPS position packets to one destination, heartbeat packets
to another, and archive everything to a third.
graph TD
listener[Listener] -->|FilterExpression: GPS| destinationA["Destination A (Location Service)"]
listener[Listener] -->|FilterExpression: heartbeat| destinationB["Destination B (DynamoDB)"]
listener[Listener] -->|no filter| destinationC["Destination C (Firehose archive)"]
classDef default fill:silver,stroke:#9999,stroke-width:1px;
Filtered packets are not billed, so a destination that filters out most of the stream only pays for the packets it actually processes.
To make use of composite destinations, simply add multiple destinations to the listener configuration.
Please note that for billing purposes each delivery of a packet to a destination is counted, so configuring multiple destinations involves extra cost. See the Features page for more information.