This Guidance helps you implement SimpleIOT, an intuitive system for creating cloud-connected Internet of Things (IoT) devices from the ground up. SimpleIOT helps you rapidly set up a fully functional serverless Internet of Things (IoT) framework in an AWS account. It supports rapid creation of complete, secure, connected devices that send and receive data to the cloud in near real-time.
Architecture Diagram
Step 1
SimpleIOT initializes data models in an Amazon Relational Database Service (Amazon RDS) PostgreSQL instance by using an Amazon Elastic Compute Cloud (Amazon EC2) bastion.
Step 2
Set up and configure SimpleIOT teams, projects, data models, and devices by using the SimpleIOT CLI. The CLI makes REST calls to Amazon API Gateway, using Amazon Cognito for authentication.
Step 3
Connect IoT devices directly to AWS IoT Core, or through an IoT gateway with AWS IoT Greengrass.
Step 4
All MQ Telemetry Transport (MQTT) messages and REST calls are validated and processed by AWS Lambda before being sent to Amazon RDS, Amazon DynamoDB, and Amazon Timestream.
Step 5
(Optional) Store and query geospatial data in Amazon Location Service.
Step 6
(Optional) Establish a data lake by sending raw data to Amazon Simple Storage Service (Amazon S3) either directly through IoT Core rules or batched through Amazon Kinesis Data Firehose.
Step 7
(Optional) Access data visualizations in a web browser from Amazon Managed Grafana, secured by AWS IAM Identity Center.
Step 8
(Optional) Set up a secure, custom dashboard to fit your needs. Dashboard code can be deployed to Amazon S3, distributed via Amazon CloudFront, and secured via AWS WAF.
Well-Architected Pillars
The AWS Well-Architected Framework helps you understand the pros and cons of the decisions you make when building systems in the cloud. The six pillars of the Framework allow you to learn architectural best practices for designing and operating reliable, secure, efficient, cost-effective, and sustainable systems. Using the AWS Well-Architected Tool, available at no charge in the AWS Management Console, you can review your workloads against these best practices by answering a set of questions for each pillar.
The architecture diagram above is an example of a Solution created with Well-Architected best practices in mind. To be fully Well-Architected, you should follow as many Well-Architected best practices as possible.
-
Operational Excellence
The majority of SimpleIOT services are serverless, lowering the operational overhead of maintaining the solution. SimpleIOT is also designed to abstract away common IoT management tasks.
-
Security
SimpleIOT manages your IoT device security X.509 certificates and renewals and user logins by using JWT tokens in Amazon Cognito. By default, SimpleIOT encrypts all data end-to-end in transit and at rest.
-
Reliability
SimpleIOT uses many AWS managed services. Availability and reliability are managed on your behalf by AWS service teams (for example, Amazon RDS, API Gateway, Lambda, CloudFront).
-
Performance Efficiency
The majority of SimpleIOT services are serverless, meaning you only use the compute necessary to handle the demand for your service.
-
Cost Optimization
To save on costs, SimpleIOT doesn't log data in your Amazon S3 data lake unless programmed to do so.
-
Sustainability
The majority of SimpleIOT functionalities are implemented by using a serverless architecture (Lambda, API Gateway). Your resources are available only when needed and don't run constantly.
Implementation Resources
A detailed guide is provided to experiment and use within your AWS account. Each stage of building the Guidance, including deployment, usage, and cleanup, is examined to prepare it for deployment.
The sample code is a starting point. It is industry validated, prescriptive but not definitive, and a peek under the hood to help you begin.
Related Content
SimpleIOT Command-Line-Interface (CLI)
SimpleIOT Arduino SDK
Disclaimer
The sample code; software libraries; command line tools; proofs of concept; templates; or other related technology (including any of the foregoing that are provided by our personnel) is provided to you as AWS Content under the AWS Customer Agreement, or the relevant written agreement between you and AWS (whichever applies). You should not use this AWS Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the AWS Content, such as sample code, as appropriate for production grade use based on your specific quality control practices and standards. Deploying AWS Content may incur AWS charges for creating or using AWS chargeable resources, such as running Amazon EC2 instances or using Amazon S3 storage.