AWS IoT Things Graph
User Guide

What Is AWS IoT Things Graph?

AWS IoT Things Graph is an orchestration service that simplifies development of IoT applications. These applications can use different devices and web services from different manufacturers that otherwise can't speak with each other because they use different protocols, data formats, and message syntaxes.

For example, a home security application can contain cameras, door and window sensors, and motion sensors from a variety of manufacturers that might not conform to the same IoT standards. As a result, these cameras and sensors aren't necessarily designed to communicate with each other. The application builder has to expend significant development effort to translate messages and actions from one device to another. This drives up software development costs and increases the time to market.

Additionally, the device vendor used might be different for each installation. Each time the device vendor changes, the development effort needs to be repeated. Customers prefer to have a large catalog of supported devices so that they can pick the most cost-effective alternative.

Lastly, in many sites, the flow may use web services and run in the cloud. In other sites, the automation flows need to be deployed on the edge gateways (such as AWS IoT Greengrass). Designing flows that can run either in the cloud or on edge gateways is difficult. AWS IoT Things Graph manages the interactions between the devices, ensuring that the necessary transformations take place.

Communicating through Models

AWS IoT Things Graph can communicate with the different devices and web services and orchestrate interactions between them through the use of reusable abstractions known as models. Models define the supported actions and events generated by the devices. They also describe how to invoke those actions and read the generated events. With AWS IoT Things Graph, application builders need to specify only the sequence of interactions in their application using models and the corresponding devices and web services. AWS IoT Things Graph uses the models to identify the protocols, addressing schemes, and data formats that the different devices use. It does all the necessary translating of messages between the devices and web services. This enables the flow to execute in the expected order.

Flow Design Interface

AWS IoT Things Graph offers a visual drag-and-drop flow design interface that drastically reduces the application development time. Application builders can define interactions graphically, and build their applications using just a few actions. The visual interface includes models that implement conditional operations such as if-then-else and logical operators such as AND/OR. This enables you to easily create multistep automation flows. Also, AWS IoT Things Graph enables you to replace devices in the system with newer versions as they become available, without doing additional work to integrate them into your application.

Prebuilt Models

The AWS IoT Things Graph console contains prebuilt models for commonly used devices, such as cameras and motion sensors, and web services, such as Amazon Rekognition and AWS Lambda. Application builders can also use AWS IoT Things Graph to create their own models for their devices. After you build an application, you can deploy your it to the AWS Cloud to orchestrate interactions between web services and devices connected to the AWS IoT cloud. You can also deploy it to an AWS IoT Greengrass-enabled device to orchestrate interactions between locally connected devices and web services.

Model, Flow, and Mapping

There are three key concepts in AWS IoT Things Graph: model, mapping, and flow.

Device and Service Model

Device and service models are representations of the agents that interact in a flow. Device and service models generically define the attributes, inputs, and outputs of the devices and services that interact with each other in flows. AWS IoT Things Graph enables you to define device and service interactions without considering the low-level implementations of devices produced by different manufacturers.

Flow

A flow (or workflow) consists of device models and services. Flows define how the devices and services interact with each other after a triggering event occurs. A flow lists these interactions as a sequence of steps. Each step contains an action on a device or web service and the related inputs to and outputs from that action. The flow defines the logical interactions and orders of execution between the devices and services.

For more information, see How a Flow Works.

Mapping

A mapping provides information that enables AWS IoT Things Graph to convert the output message of one device into the expected format for the next device in the flow. Mappings bridge differences between the devices and enable them to work together. Mappings enable you to build IoT applications that use a variety of devices from different manufacturers.

How AWS IoT Things Graph Works

Follow these steps to create and deploy an AWS IoT Things Graph flow.


        Published flows are configured for deployment and then deployed.

Step 1: Build a Flow

Build your flow by dragging device and web service models from the model library into a flow designer. (You can also find this page by choosing the menu icon at the upper left of the page, and then choosing Flows.)

The model library contains models that AWS IoT Things Graph has made publicly available (public models), and the models that you created (private models). Private models are visible only to you. Define interactions by connecting the model outputs with appropriate inputs of other models. Choose Publish to save your flow and publish it to the list of flows that can be deployed.

Step 2: Create the Flow Configuration

On the following pages that appear, you'll configure the deployment target (cloud or Greengrass) and map things in your registry to the devices in your flow.

Configure the Target

When you create your flow configuration, do the following:

  • For cloud deployments, specify the flow action ARN. This is the ARN of the IAM role that AWS IoT Things Graph will use when the flow executes in the cloud.

  • For AWS IoT Greengrass deployments, specify the AWS IoT Greengrass group where the application will run. Also specify the Amazon Simple Storage Service (Amazon S3) bucket to store the application configuration so that AWS IoT Greengrass can retrieve it when it starts.

Cloud

AWS IoT Greengrass

Map Things

When you create your flow configuration, select things from your registry that correspond with each device model in your flow.

Step 3: Deploy

After you configure your deployment, deploy the application to the cloud or to AWS IoT Greengrass-enabled devices.

AWS IoT Things Graph packages up the flow and its dependencies and pushes them either to the cloud or to the AWS IoT Greengrass-enabled device. AWS IoT Things Graph then manages interactions between locally connected devices.

How Do I Get Started?

Explore existing devices and device models in the AWS IoT Things Graph console to see if the ones you want to use in your flows are available. If the ones you want aren't available, you can build your own models by using the built-in model editor in the AWS IoT Things Graph console.

You define flows by chaining together models and web services. Then you deploy the flow.

For more information about how a flow works, see How a Flow Works. For examples that demonstrate how this works, see Getting Started with AWS IoT Things Graph.