View a markdown version of this page

Data storage - Guidance for Connected Mobility on AWS

Data storage

The data storage layer deploys all storage resources including DynamoDB tables and S3 buckets.

DynamoDB tables

Seven tables store different types of data with optimized access patterns.

Vehicles table

Stores vehicle profiles and current status.

Schema:

Attribute Type Description

vin

String (PK)

Vehicle Identification Number

make

String

Vehicle manufacturer

model

String

Vehicle model

year

Number

Model year

status

String

active, inactive, maintenance

lastSeen

String

ISO 8601 timestamp

location

Map

Current GPS coordinates

odometer

Number

Current mileage

batteryLevel

Number

Battery percentage (EV)

fuelLevel

Number

Fuel percentage (ICE)

Indexes:

  • GSI1: status-lastSeen-index (query by status)

  • GSI2: make-model-index (query by vehicle type)

Trips table

Stores trip history with start/end locations and metrics.

Schema:

Attribute Type Description

tripId

String (PK)

UUID for trip

vin

String (SK)

Vehicle Identification Number

startTime

String

ISO 8601 timestamp

endTime

String

ISO 8601 timestamp

startLocation

Map

GPS coordinates

endLocation

Map

GPS coordinates

distance

Number

Miles traveled

duration

Number

Seconds

avgSpeed

Number

Average speed (mph)

maxSpeed

Number

Maximum speed (mph)

fuelConsumed

Number

Gallons or kWh

safetyEvents

List

Speeding, harsh braking, etc.

Indexes:

  • GSI1: vin-startTime-index (query trips by vehicle)

  • GSI2: startTime-index (query trips by date range)

Alerts table

Stores maintenance and safety alerts.

Schema:

Attribute Type Description

alertId

String (PK)

UUID for alert

vin

String

Vehicle Identification Number

type

String

maintenance, safety, diagnostic

severity

String

low, medium, high, critical

message

String

Alert description

timestamp

String

ISO 8601 timestamp

acknowledged

Boolean

Alert acknowledgment status

resolvedAt

String

Resolution timestamp

metadata

Map

Additional alert data

Indexes:

  • GSI1: vin-timestamp-index (query alerts by vehicle)

  • GSI2: type-severity-index (query by alert type)

Drivers table

Stores driver profiles and behavior metrics.

Schema:

Attribute Type Description

driverId

String (PK)

UUID for driver

name

String

Driver name

email

String

Contact email

phone

String

Contact phone

licenseNumber

String

Driver’s license number

assignedVehicles

List

VINs of assigned vehicles

safetyScore

Number

0-100 safety rating

totalTrips

Number

Lifetime trip count

totalMiles

Number

Lifetime miles driven

safetyEvents

Map

Count by event type

Commands table

Stores remote command history with status tracking and latency measurement.

Schema:

Attribute Type Description

commandId

String (PK)

Unique command identifier

vehicleId

String

Target vehicle ID

commandName

String

Command name from catalog

value

String

Command value

status

String

SENT, IN_PROGRESS, SUCCEEDED, FAILED, TIMEOUT

issuedAt

String

ISO 8601 timestamp

timestamp

Number

Issued time in epoch milliseconds

respondedAt

String

Response timestamp

latencyMs

Number

Round-trip latency in milliseconds

reason

String

Failure reason

topic

String

MQTT topic the command was published to

ttl

Number

DynamoDB TTL (7 days)

Indexes:

  • GSI1: vehicleId-index (query commands by vehicle)

Geofences table

Stores geofence definitions for real-time boundary evaluation.

Schema:

Attribute Type Description

geofenceId

String (PK)

Unique geofence identifier

vehicleId

String

Target vehicle ID or ALL for global

name

String

Human-readable name

centerLat

Number

Center latitude

centerLng

Number

Center longitude

radiusKm

Number

Radius in kilometers

type

String

Geofence shape (CIRCLE)

action

String

Action on violation (ALERT)

active

Boolean

Whether geofence is active

createdAt

String

ISO 8601 creation timestamp

ttl

Number

DynamoDB TTL (90 days)

Indexes:

  • GSI1: vehicleId-index (query geofences by vehicle)

Signal catalog table

Stores the standardized signal definitions used throughout the guidance.

Schema:

Attribute Type Description

json_field

String (PK)

JSON field name (for example, speed)

signal_name

String

Human-readable signal name

vss_path

String

COVESA VSS path (for example, Vehicle.Speed)

signal_group

String

Signal group (engine, tire, safety, etc.)

data_type

String

float, int, boolean, string

unit

String

Unit of measurement

min

Number

Minimum valid value

max

Number

Maximum valid value

actuator

Map

Actuator definition (if signal is commandable)

S3 buckets

Two buckets store telemetry archives and web application assets.

Telemetry archive bucket

Stores raw telemetry data for long-term analysis.

Configuration:

  • Versioning: Enabled

  • Encryption: AES-256

  • Lifecycle policy: Transition to Glacier after 90 days

  • Intelligent-Tiering: Enabled for cost optimization

Data structure:

s3://cms-telemetry-archive/ ├── year=2024/ │ ├── month=10/ │ │ ├── day=13/ │ │ │ ├── hour=12/ │ │ │ │ └── telemetry-{timestamp}.json.gz

UI assets bucket

Hosts the Fleet Manager React application.

Configuration:

  • Versioning: Enabled

  • Encryption: AES-256

  • CloudFront origin access identity

  • Block public access: Enabled