AWS IoT Core is a managed cloud service that lets connected devices interact with cloud applications and other devices. It can support a large volume of messages and can process and route those messages to AWS endpoints and other devices reliably and securely.
AWS IoT Core makes it possible to build applications that act on the data generated by connected devices. These applications can be hosted in the cloud, which enables web-based access to these services, thus enhancing the scalability, accessibility, and maintenance of IoT systems.
AWS IoT Core is particularly useful in IoT use cases where devices need to communicate with each other and the cloud, but do not have the ability to directly interact with backend services. It acts as the communication hub between these devices and the backend services, handling all the complexities of concurrent communication, message routing, security, authorization, and error handling.
6 Key Features of AWS IoT Core
#1: Device Communication: MQTT, HTTP, and WebSocket Protocols
One of the critical aspects of any IoT service is the communication protocol. AWS IoT Core supports three main protocols: MQTT, HTTP, and WebSocket.
MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol designed for constrained devices and low-bandwidth, high-latency, or unreliable networks. HTTP and WebSockets are standard web protocols that devices can use to send and receive data from AWS IoT Core.
The support for these protocols ensures that your devices can communicate with AWS IoT Core, irrespective of their capabilities or network conditions. This feature is crucial in creating versatile, resilient IoT systems that can function seamlessly under varying conditions.
#2: Security and Identity Service: Authentication and Encryption
Robust security and identity services ensure that all device data is transmitted securely and that unauthorized devices or applications cannot connect to your devices. AWS IoT Core uses mutual authentication and encryption at all points of connection, ensuring data is never exchanged between devices and AWS IoT Core without proven identity.
Moreover, AWS provides fine-grained access control to your IoT resources using AWS Identity and Access Management (IAM). This ensures your resources are accessible only to authenticated users or devices with the necessary permissions.
#3: Device Shadow, Storing and Retrieving Device State
The Device Shadow feature in AWS IoT Core is a JSON document used to store and retrieve the current state of a device. This document enables applications to read from and write to the fields of the device shadow, providing a reliable way to track the device’s state over time.
This means even if your device is offline, you can set a desired future state, and the device will synchronize when it reconnects.
#4: Rules Engine: Processing and Routing of IoT Data
The Rules Engine is a service within AWS IoT Core that enables data processing and routing from IoT devices. The engine evaluates inbound messages published into AWS IoT Core and transforms and delivers them to another device or a cloud service, based on business rules you define.
With the Rules Engine, you can filter, transform, and act upon device data on the fly, based on business rules you define. You can route the data to AWS services like AWS Lambda, Amazon DynamoDB, Amazon S3, Amazon Kinesis, Amazon SNS, and many others.
#5: Registry: Organize and Index Devices
The Registry in AWS IoT Core allows you to categorize devices into a hierarchical structure based on function, security requirements, or any other category that fits your needs. The Registry also enables you to track metadata such as device attributes and capabilities.
#6: Device Defender: IoT Device Security
Finally, the Device Defender is a security feature in AWS IoT Core that continuously monitors your fleet of devices for abnormal behavior. It lets you maintain and enforce IoT configurations such as device identity, authentication, and access control, ensuring your devices remain compliant with security policies.
Main Use Cases of AWS IoT Core
Industrial Automation
AWS IoT Core allows businesses to connect their machinery and equipment to the cloud, enabling remote monitoring and real-time data analysis. This data-driven approach reduces downtime by predicting equipment failures and scheduling preventative maintenance.
Additionally, AWS IoT Core enhances operational efficiency by automating processes and reducing human error.
Home Automation
AWS IoT Core offers powerful tools for creating smart home devices. It enables the connection of various devices such as smart thermostats, lighting systems, security systems, and appliances to the Internet, allowing homeowners to control them remotely.
Wearables
Wearables like fitness trackers, smartwatches, and health monitors have become increasingly popular in recent years. AWS IoT Core plays a significant role in the functionality of these devices.
It facilitates the exchange of data between the wearable device and the cloud, allowing for real-time health monitoring, fitness tracking, and personalized insights. Secure data transmission ensures the user’s personal information is protected.
Smart Cities
AWS IoT Core can be instrumental in building smart cities. It enables the connection of various city services and infrastructure to the Internet, facilitating real-time monitoring and data analysis.
This interconnectedness can lead to improved public services, enhanced public safety, reduced environmental impact, and overall improved quality of life for city residents.
Asset Tracking
In the logistics and supply chain industry, AWS IoT Core is used for asset tracking. It enables real-time tracking of goods, providing businesses with valuable insights into their inventory and supply chain operations.
This visibility helps businesses improve their operations, reduce costs, and provide better customer service.
AWS IoT Core Pricing
Here is a breakdown of IoT core pricing, within the AWS Free Tier and once you exceed the free limits.
Free Tier
The AWS Free Tier is designed to give you hands-on experience with a range of AWS services at no charge. For AWS IoT Core, the free tier offers 250,000 free messages (published or delivered) per month for 12 months.
This allows businesses to experiment with connecting devices to the AWS cloud, sending data, and building IoT applications without any upfront cost.
However, it’s important to note that once you exceed the free tier limit, you’ll be charged according to the standard AWS IoT Core pricing. The free tier is a great way to get started with AWS IoT Core and understand its capabilities before committing financially.
Connectivity
Connectivity charges apply when you use AWS IoT Core to connect your devices to AWS. The pricing for connectivity is primarily based on the amount of data transferred to and from AWS IoT Core.
In the U.S. East (Northern Virginia) region, for example, prices start at $0.08 per million minutes of connection (equivalent to about $0.000000133 per minute of connection). The cost decreases as you use more connection minutes.
Messaging
Messaging forms a significant part of AWS IoT Core pricing. AWS charges for messages published to AWS IoT Core, delivered from AWS IoT Core to a device or application, or delivered to a rules engine.
The charges depend on the size of the message and the region. For instance, in the U.S. East (Northern Virginia) region, the price is $1 per million messages.
Device Shadow and Registry
The Device Shadow and Registry component of AWS IoT Core allows you to store and retrieve the last known state of a device, which can be useful for applications that need to check device status or control a device.
The pricing for this component is based on the number of operations (reads, writes, deletes) performed. In the U.S. East (Northern Virginia) region, the price is $1.25 per million operations.
Rules Engine
The Rules Engine is a crucial part of AWS IoT Core that allows you to build IoT applications that gather, process, analyze, and act on data generated by connected devices.
The cost of using the Rules Engine is based on the number of rules evaluations. In the U.S. East (Northern Virginia) region, for example, the price is $0.15 per million evaluations.
Device Location
The Device Location feature in AWS IoT Core enables you to retrieve the last known location of your devices. The pricing for this component is based on the number of location queries made. In the US East (Northern Virginia) region, for instance, the price is $0.40 per thousand queries.
AWS IoT Core Quick Tutorial
AWS IoT provides a built-in tutorial that shows you how to create your first thing object, connect a device to it, and watch it send MQTT messages. This section is abbreviated from the Amazon documentation.
To start the tutorial, sign into the AWS IoT console, and from Learning resources on the right, choose Start tutorial, and then click View connection options.
Create a Thing Object
The tutorial begins in the Connect > Connect one device section of the AWS IoT console. In the right-hand pane you will see step 1 of the process: Prepare your device.
Follow the on-screen instructions to prepare your device for connecting to AWS IoT and click Next.
In the Register and Secure your Device section:
- Choose Create a new thing or choose an existing thing.
- In the Thing name field, enter a name for the thing.
- In the Additional Configurations section, customize your thing resource further.
Then click Next.
In the Choose Platform and SDK section, choose the platform and the language of the AWS IoT Device SDK that you want to use. In the tutorial, a sample thing is created that uses the Linux/OSX platform and Python SDK. Make sure that you have python3 and pip3 installed on the target device before you continue to the next step.
Click Next.
Download Files to the IoT Device
After AWS IoT has created the connection kit, a page appears that includes the following files and resources your device requires:
- The thing’s certificate files used to authenticate the device.
- A policy resource to authorize your thing object to interact with AWS IoT.
- The script to download the AWS Device SDK and run the sample program on your device.
When you’re ready to continue, choose the Download connection kit button, this will download a connection kit for the platform you selected earlier.
Note that you can run this part of the process directly from the device. In this case, save the connection kit file to a directory from which you can run command line commands. Otherwise, save it to a local directory and then transfer the file to your device.
Unzip the connection kit on your device – you can do this via the Unzip connection kit on your device section in the console, or the terminal on your device. After you have the connection kit file on the device, continue by choosing Next.
Run the Sample
You do this procedure in a terminal or command window on your device while you follow the directions displayed in the console. The commands you see in the console are for the operating system you chose earlier (in this case, the Linux/OSX operating systems).
In a terminal or command window on your device, in the directory with the connection kit file, perform the steps shown in the AWS IoT console.
After you enter the command from Step 2 in the console, you should see an output in the device’s terminal or command window that indicates the program is sending messages to AWS IoT Core and then receiving messages back.
From the Test page of the AWS IoT console, open the MQTT test client. If you chose Python SDK, then in the MQTT test client, in the Topic filter, enter a topic to subscribe to messages from the device. For example, you can use the topic sdk/test/python. The topic filters are case-sensitive.
After you subscribe to the test topic, run ./start.sh on your device. Immediately afterward, messages should appear in the MQTT client, similar to this:
{ "message": "Hello World!" [1] }
Click Continue to finish the tutorial and see a summary of the activity.