---
title: "SparkPipe | Connectors | AWS IoT SiteWise"
slug: "sparkpipe-connectors-aws-iot-sitewise"
description: "SparkPipe is a cloud-native service that utilizes the MQTT Sparkplug specification to securely connect to any MQTT 3.1 compatible broker, capturing all the events published by any Sparkplug-enabled edge node, and routing this data to cloud-based services and applications such as Apache Kafka, etc."
updated: 2025-09-30T15:55:37Z
published: 2025-12-19T15:12:25Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.n3uron.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AWS IoT SiteWise

## Overview

The [AWS IoT SiteWise](https://aws.amazon.com/iot-sitewise/) connector provides a no-code integration of Sparkplug OT data with the AWS Cloud ecosystem, automatically creating Asset Models****and Assets to match your edge data model while continuously ingesting real-time data into the SiteWise time-series engine.

![Example architecture with AWS IoT SiteWise](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/AWS-N3-SparkPipe-IoT-Sideways.png)

### **Features**

- **Automatic Asset Model creation:** Asset Models are created automatically in AWS IoT SiteWise using the Sparkplug template definitions****(UDTs) created at the edge.
- **Automatic Asset creation:** Assets are created automatically from the Sparkplug template instances defined at the edge.
- **Real-time data ingestion:**The Sparkplug MQTT metrics are ingested in real-time into AWS IoT SiteWise data streams and the corresponding Measurements inside the Assets are updated.

## How It Works

### Data Model

SparkPipe uses the **Sparkplug template****definitions**(UDT definitions) to create the **Models** in IoT SiteWise and the **Sparkplug template instances** (UDT instances) to create the **Assets**in IoT SiteWise.

See the following example using **N3uron**and the resulting Asset Model and Asset in AWS IoT SiteWise.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(80).png)

SparkPipe creates a new **Model**to match the template definition, including tags, data types, units and description.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(81).png)

A new **Asset**is created for each template **instance**, the name of the asset contains the Sparkplug GroupID, EdgeNodeID and DeviceID as a prefix before the path of the instance.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(82).png)

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(84).png)

### Real-time Data

> [!NOTE]
> Note
> 
> AWS IoT SiteWise rejects any data with a timestamp dated to more than 7 days in the past or more than 10 minutes in the future.

SparkPipe creates a new **data stream**in AWS IoT SiteWise for each Sparkplug metric. A data stream serves as the source of data for an Asset measurement.

MQTT Sparkplug metrics are automatically published to the corresponding data stream and ingested by the AWS IoT SiteWise time-series engine.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(85).png)

### Data Types

AWS IoT SiteWise only supports the following data types, see the [official documentation](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/measurements.html):

- **String:**A string with up to 1024 bytes.
- **Integer:**A signed 32-bit integer with range [-2,147,483,648, 2,147,483,647].
- **Double:**A floating point number with range [-10^100, 10^100] and IEEE 754 double precision.
- **Boolean:**true or false.

To address this limitation, SparkPipe performs type conversions to fit the Sparkplug data types into AWS IoT SiteWise data types:

| Sparkplug data type | AWS IoT SiteWise data type |
| --- | --- |
| Int8 | Integer |
| Int16 | Integer |
| Int32 | Integer |
| Int64 | Double |
| uint8 | Integer |
| uint16 | Integer |
| uint32 | Double |
| uint64 | Double |
| Float | Double |
| Double | Double |
| Boolean | Boolean |
| String | String |
| UUID | String |
| Text | String |

The following Sparkplug data types are **not**supported:

- DateTime
- DataSet
- Bytes
- File
- Arrays

Tags with unsupported data types are created as String measurements with the value “Datatype [datatype] not supported”.

To support the ingestion of **null** values into AWS IoT SiteWise, enable the following option:

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(86).png)

### Quality

AWS IoT SiteWise only supports three types of quality for a measurement.

- GOOD
- BAD
- UNCERTAIN

If the Sparkplug MQTT metric contains a **Quality** **property**, SparkPipe maps the Sparkplug quality to an AWS IoT SiteWise quality.

| Sparkplug quality | AWS IoT SiteWise quality |
| --- | --- |
| 0 | BAD |
| 192 | GOOD |
| 500 | STALE |

If the quality is not specified or contains a value not listed in the table, the quality is set to GOOD.

## Configuration

The default configuration for the AWS IoT SiteWise connector:

```ini
...
# Connectors configuration
[connectors]
  name = "sitewise"

# AWS IoT SiteWise
[connectors.sitewise]
  # AWS IoT SiteWise region, by default uses the same region where SparkPipe is deployed
  aws_sitewise_region = ""

  # AWS IAM credentials, leave empty to use IAM Role authentication
  aws_access_key_id = ""
  aws_secret_access_key = ""
```

### Using IAM Role Authentication (Recommended)

This is the recommended method to configure and authorize SparkPipe to access the IoT SiteWise service within your AWS account. It involves creating an IAM role for SparkPipe, granting it the necessary permissions to access IoT SiteWise, and assigning this role to the SparkPipe EC2 instance.

- **Step 1:** Inside the AWS Console, go to **IAM → Roles → Create role:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(62).png)

- **Step 2:** Select **AWS Service** as trusted entity type and **EC2** as use case:

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(63).png)

- **Step 3:** Search for the **AWSIoTSiteWiseFullAccess**permission:

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(65).png)

- **Step 4:** Set a name to identify this role and optionally a description, then click on **Create role:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(66).png)

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(67).png)

- **Step 5:** Navigate to the EC2 console, select your **SparkPipe**instance and click on **Actions → Security → Modify IAM role:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(69).png)

- **Step 6:** Select the previously created role and click on **Update IAM role**:

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(70).png)

- **Step 7:**Configure the connector using the following configuration in the **config.toml**file, SparkPipe will automatically use the EC2 IAM role assigned to the instance:

```ini
...
# Connectors configuration
[connectors]
  name = "sitewise"

# AWS IoT SiteWise
[connectors.sitewise]
  # AWS IoT SiteWise region, by default uses the same region where SparkPipe is deployed
  aws_sitewise_region = ""

  # AWS IAM credentials, leave empty to use IAM Role authentication
  aws_access_key_id = ""
  aws_secret_access_key = ""
```

### Using IAM API Credentials

In this configuration you’ll need to create a new IAM user with the **AWSIoTSiteWiseFullAccess**policy attached, then generate an access key pair.

- **Step 1:** Inside the AWS Console, go to **IAM → Users → Create user:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(71).png)

- **Step 2:** Inside the AWS Console, go to **IAM → Users → Create user:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(72).png)

- **Step 3:** Select **Attach policies directly**, search for the **AWSIoTSiteWiseFullAccess**policy and click on **Next:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(73).png)

- **Step 4:** Review and click on **Create user:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(74).png)

- **Step 5:** Select the previously created user:

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(75).png)

- **Step 6:** Click on **Create access key:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(76).png)

- **Step 7:** Select **Application running on an AWS compute service**as use case, confirm and click on **Next:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(77).png)

- **Step 8:** Set a description (optional) and click on **Create access key:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(78).png)

- **Step 9:** Copy the **Access key** and the **Secret access key**, then click **Done:**

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(79).png)

- **Step 10:**Configure the connector using the following configuration in the **config.toml** file:

```ini
...
# Connectors configuration
[connectors]
  name = "sitewise"

# AWS IoT SiteWise
[connectors.sitewise]
  # AWS IoT SiteWise region, by default uses the same region where SparkPipe is deployed
  aws_sitewise_region = "us-east-1"

  # AWS IAM credentials, leave empty to use IAM Role authentication
  aws_access_key_id = "AKIAIOSFODNN7EXAMPLE"
  aws_secret_access_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
```

### Edge Nodes

The Sparkplug Edge Nodes in your network must be configured to publish the tag templates (UDTs) defined at the edge.

For N3uron nodes, ensure the **Children UDTs** option is enabled at the Device level in the [SparkplugClient](/v122/docs/sparkplug-client)module.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(87).png)

For Ignition nodes, ensure the **Publish UDT Definitions** option is enabled in the MQTT Transmission configuration.

![](https://cdn.document360.io/54093ab5-6b22-4542-a265-04377931f11a/Images/Documentation/image(88).png)
