An open API service indexing awesome lists of open source software.

https://github.com/softchef/cdk-iot-device-management


https://github.com/softchef/cdk-iot-device-management

Last synced: 12 months ago
JSON representation

Awesome Lists containing this project

README

          

[![npm version](https://badge.fury.io/js/%40softchef%2Fcdk-iot-device-management.svg)](https://badge.fury.io/js/%40softchef%2Fcdk-iot-device-management)
![Release](https://github.com/SoftChef/cdk-iot-device-management/workflows/Release/badge.svg)
![npm](https://img.shields.io/npm/dt/@softchef/cdk-iot-device-management?label=NPM%20Downloads&color=orange)

# CDK Construct - IoT Device Management

IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.

![Architecture](docs/cdk-iot-device-management.png)

## Installation

```sh
npm install @softchef/cdk-iot-device-management

or

yarn add @softchef/cdk-iot-device-management

```

## Why

- Integrate RestAPI and AWS IoT core to implement access control.
- Manage device firmware information.
- Manage device, such as create an OTA jobs.

This construct library provides five constructs:

- **Thing Type API construct** - Create and modify thing types' information.
- **Thing API construct** - Create and modify things' information.
- **Thing Group construct** - Create and modify thing groups' information.
- **Job API construct** - Create and modify thing's jobs.
- **File API construct** - Integrate API Gateway and DynamoDB to store device firmware information.

## Constructs

### Thing Type API construct

Use thing type API to manage thing types.

```typescript
import { ThingTypeApi } from '@softchef/cdk-iot-device-management'

const thingTypeApi = new ThingTypeApi(scope, id, {
authorizationType?: apigateway.AuthorizationType;
authorizer?: apigateway.IAuthorizer
})
```

[Thing Type API Docs](./docs/thing-type-api.md)

### Thing API construct

Use thing API to manage things' information.

```typescript
import { ThingApi } from '@softchef/cdk-iot-device-management'

const thingApi = new ThingApi(scope, id, {
authorizationType?: apigateway.AuthorizationType;
authorizer?: apigateway.IAuthorizer
})
```

[Thing API Docs](./docs/thing-api.md)

### Thing Group API construct

Use thing API to manage thing groups' information.

```typescript
import { ThingGroupApi } from '@softchef/cdk-iot-device-management'

const thingGroupApi = new ThingGroupApi(scope, id, {
authorizationType?: apigateway.AuthorizationType;
authorizer?: apigateway.IAuthorizer
})
```

[Thing Group API Docs](./docs/thing-group-api.md)

### Job API construct

Use job API to manage jobs' information.

```typescript
import { JobApi } from '@softchef/cdk-iot-device-management'

const jobApi = new JobApi(scope, id, {
authorizationType?: apigateway.AuthorizationType;
authorizer?: apigateway.IAuthorizer;
scheduleFunction: ScheduleFunction
})
```

> The [ScheduleFunction](https://www.npmjs.com/package/@softchef/cdk-schedule-function/v/0.0.15) is support to custom create job by schedule time.

[Job API Docs](./docs/job-api.md)

### File API construct

Use File API to manage IoT devices firmware. File API contains category and file.

```typescript
import { fileApi } from '@softchef/cdk-iot-device-management'

const FileApi = new FileApi(scope, id, {
authorizationType?: apigateway.AuthorizationType;
authorizer?: apigateway.IAuthorizer;
})
```

[File API Docs](./docs/file-api.md)

### Category Table Schema

| Name | Schema | Primary Index | GSI(Query By ParentId) |
| ----------- | ------ | ------------- | ---------------------- |
| categoryId | String | Partition Key | |
| parentId | String | | Partition Key |
| name | String | | |
| description | String | | |

### File Table Schema

| Name | Schema | Primary Index | GSI(Query By CategoryId And Locale) | GSI(Get File By Checksum And Version) |
| ------------ | ------ | ------------- | ----------------------------------- | ------------------------------------- |
| fileId | String | Partition Key | | |
| categoryId | String | | Partition Key | |
| checksum | String | | | Partition Key |
| version | String | | | Sort Key |
| checksumType | String | | | |
| location | String | | | |
| locale | String | | Sort Key | |
| summary | String | | | |
| description | String | | | |
| updatedAt | Number | | | |
| createdAt | Number | | | |

## License

This code is licensed under the Apache License 2.0. See the [LICENSE](https://github.com/SoftChef/cdk-iot-device-management/blob/main/LICENSE) file.