View a markdown version of this page

Telemetry ingestion - Guidance for Connected Mobility on AWS

Telemetry ingestion

The telemetry ingestion layer connects IoT Core to the MSK cluster.

IoT Rules

Rules route telemetry messages to MSK topics.

Telemetry rule:

SELECT * FROM 'cms/telemetry/+'

Action: Send to MSK topic cms-telemetry

FleetWise telemetry rule:

SELECT encode(*, 'base64') AS data, topic(4) AS thingName, timestamp() AS ts FROM 'cms/fleetwise/vehicles/+/signals'

Action: Send to MSK topic fw-telemetry-raw and S3 backup bucket

FleetWise checkin rule:

SELECT encode(*, 'base64') AS data, topic(4) AS thingName, timestamp() AS ts FROM 'cms/fleetwise/vehicles/+/checkins'

Action: Send to MSK topic fw-checkin

The FleetWise IoT rules use topic(4) to extract the vehicle VIN from the MQTT topic path and encode(*, 'base64') to preserve the binary protobuf payload for downstream Flink processing.

Command response rule (JSON):

SELECT * FROM 'cms/commands/+/response'

Action: Invoke Command Response Handler Lambda. Processes JSON command responses from MQTT Direct simulators.

Command response rule (FWE protobuf):

SELECT encode(*, 'base64') AS b64_payload, topic(3) AS vehicleId FROM 'cms/commands/things/+/executions/+/response/protobuf'

Action: Invoke Command Response Handler Lambda. The rule base64-encodes the binary protobuf payload and extracts the VIN from topic(3). The Lambda decodes the CommandResponse protobuf and maps the FWE status enum to a string status (SUCCEEDED, FAILED, TIMEOUT).

VPC destination:

  • VPC: InfrastructureStack VPC

  • Subnets: Private subnets

  • Security group: Allows traffic to MSK

Message transformation

IoT Rules can transform messages before sending to MSK:

SELECT vin, timestamp() as serverTimestamp, * as payload FROM 'cms/telemetry/+'