Understanding AWS IoT Core: Features, Use Cases & Quick Tutorial
Tags: aws, mqtt, iot
Published: 2023-08-16 14:49:02

## What Is AWS IoT Core?

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 to 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. AWS IoT Core 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)**](https://www.emqx.com/en/blog/the-easiest-guide-to-getting-started-with-mqtt) 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 the 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.

**Learn more in our detailed guide to** **AWS IoT devices** **(coming soon)**

## 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.

**Related content: Read our guide to** [**google cloud for IoT**](https://www.emqx.com/en/blog/why-emqx-is-your-best-google-cloud-iot-core-alternative)

## 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 US 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 US 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 US 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 US 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**](https://docs.aws.amazon.com/iot/latest/developerguide/iot-quick-start.html#iot-quick-start-install-run).

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**.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/me1g89rldofyd6oii9i2.png)



Source: AWS

### 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 via 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.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9xtsskh1lvhdzbobggii.png)
lished


Source: AWS

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 afterwards, 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.

## AWS IoT Core + EMQX: A Better Choice for IoT Communication

Working with AWS IoT Core can raise some challenges related to management of large-scale MQTT communications. [**EMQX Cloud**](https://www.emqx.com/en/cloud) can help, with a comprehensive MQTT service that is fully managed and customizable to the needs of users. This includes flexible pricing models, customizable connection specifications, and the freedom to select a cloud provider and integrate with other cloud resources.

Compared to the AWS IoT, EMQX Cloud, can provide a complete solution to match the AWS IoT ecosystem.

### EMQX Cloud Products

* [**BYOC (Bring Your Own Cloud)**](https://www.emqx.com/en/cloud/byoc)**:** Seamlessly integrates the EMQX MQTT server with Amazon Web Services or other existing cloud services. Keep your data secure in your own cloud and manage it with EMQ's expertise.
* [**Serverless**](https://www.emqx.com/en/cloud/serverless-mqtt)**:** Provides MQTT services on a secure and scalable cluster with usage-based pricing. The service is completely free within the free quota and supports up to 1000 concurrent connections.
* [**Dedicated Plan**](https://www.emqx.com/en/cloud/dedicated)**:** Provides MQTT services on a dedicated EMQX cluster with high performance, reliability, and data integration, without managing your own cluster. Perfect for businesses of all sizes.

### Tight Integration with AWS Services

EMQX integrates smoothly with Amazon Web Services:

* EMQX Cloud Dedicated cluster can be deployed in 10 regions in AWS, seamlessly integrating with existing resources in AWS.
* EMQX Cloud provides data integration with 40+ services (connectors), including databases, message queues, and AWS services like DynamoDB.
* You can subscribe to EMQX Cloud from the AWS marketplace, and manage all service bills in AWS Billing.

### Benefits of Using EMQX Cloud

* **Hassle-Free Management:** EMQX Cloud fully manages setup, maintenance, and updates.
* **Cost-Effective:** EMQX Cloud offers a variety of pricing models, such as by consumption or by time, which reduce the total cost of ownership.
* **100% MQTT:** 100% compliant with MQTT 3.1, 3.1.1, and 5.0 standards with all 3 QoS level. Seamless integration with all MQTT clients.
* **Seamless Scalability:** Scale up or down on demand without any worries about server capacity or performance.
* **Up to 99.99% SLA:** EMQX Cloud Ensure maximum uptime and availability with our highly available, fault-tolerant architecture.
* **24 x 7 Technical Support:** A dedicated team of experts is always available to assist you with any issues at any time.

_Originally published at [www.emqx.com](https://www.emqx.com/en/blog/understanding-aws-iot-core)_