L2 CDK construct to provision AWS IoT Fleetwise
Project description
cdk-aws-iotfleetwise
L2 CDK construct to provision AWS IoT Fleetwise
Install
Typescript
npm install cdk-aws-iotfleetwise
Python
pip install cdk-aws-iotfleetwise
Sample
const database = new ts.CfnDatabase(this, 'Database', {
databaseName: 'FleetWise',
});
const table = new ts.CfnTable(this, 'Table', {
databaseName: 'FleetWise',
tableName: 'FleetWise',
});
const role = new aim.Role(this, 'Role', {
assumedBy: new aim.ServicePrincipal('iotfleetwise.amazonaws.com'),
managedPolicies: [
aim.ManagedPolicy.fromAwsManagedPolicyName('AdministratorAccess'),
],
});
const signalCatalog = new ifw.SignalCatalog(this, 'SignalCatalog', {
database,
table,
role,
nodes: [
new ifw.SignalCatalogBranch('Vehicle', 'Vehicle'),
new ifw.SignalCatalogSensor('EngineTorque', 'Vehicle.EngineTorque', 'DOUBLE'),
],
});
const model_a = new ifw.VehicleModel(this, 'ModelA', {
signalCatalog,
name: 'modelA',
description: 'Model A vehicle',
networkInterfaces: [new ifw.CanVehicleInterface('1', 'vcan0')],
signals: [
new ifw.CanVehicleSignal('EngineTorque', 'Vehicle.EngineTorque', '1',
401, // messageId
1.0, // factor
true, // isBigEndian
false, // isSigned
8, // lenght
0.0, // offset
9), // startBit
],
});
const vin100 = new ifw.Vehicle(this, 'vin100', {
vehicleId: 'vin100',
vehicleModel: model_a,
createIotThing: true
});
new ifw.Campaign(this, 'Campaign', {
name: 'TimeBasedCampaign',
target: vin100,
collectionScheme: new ifw.TimeBasedCollectionScheme(cdk.Duration.seconds(10)),
signals: [
new ifw.CampaignSignal('Vehicle.EngineTorque'),
],
});
Getting started
To deploy a simple end-to-end example you can use the following commands
yarn install
projen && projen build
npx cdk -a lib/integ.full.js deploy
The deploy takes about 15 mins mostly due to compilation of the IoT FleetWise agent in the EC2 instance that simulate the vehicle. Once deploy is finshed, approve the campaign with the command:
aws iotfleetwise update-campaign --campaign-name FwTimeBasedCampaign --action APPROVE
and data will start to show up in the Timestream table.
TODO
Warning: this construct should be considered at alpha stage and is not feature complete.
- Reduce Lambda log retention to 1d
- Apply the least priviledge principle to roles
- Implement updates for all the custom resources
- Conditional campaigns
Security
See CONTRIBUTING for more information.
License
This code is licensed under the MIT-0 License. See the LICENSE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cdk-aws-iotfleetwise-0.0.11.tar.gz
.
File metadata
- Download URL: cdk-aws-iotfleetwise-0.0.11.tar.gz
- Upload date:
- Size: 16.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89d265028be12ff3ffc085b6c9340a37e218819b8cbfacb6b74ba8d9957edbe4 |
|
MD5 | 771e85ca1888f5dcf6f02de1dec2a320 |
|
BLAKE2b-256 | abfbe6904458453bffbdcb31ce357c0f5b3eabf6795c7af51f38505123fd24c7 |
File details
Details for the file cdk_aws_iotfleetwise-0.0.11-py3-none-any.whl
.
File metadata
- Download URL: cdk_aws_iotfleetwise-0.0.11-py3-none-any.whl
- Upload date:
- Size: 16.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fbe4b88f515ed036764ecf21967e81b5a4bf2d3767dbf13f1d1e83425a65c08 |
|
MD5 | 77029df254fa8eb299a9d694869a1ee0 |
|
BLAKE2b-256 | 15cb9f015a1bd800790450c0a3ed1879632c268ba4db07cd87763197e4d6a54f |