Ingesting data to AWS IoT SiteWise
Last updated
Was this helpful?
Last updated
Was this helpful?
Note
When you send data to AWS IoT SiteWise with the rule action, your data must meet all of the requirements of the BatchPutAssetPropertyValue
operation. For example, your data can't have a timestamp earlier than 7 days from current Unix epoch time. For more information, see .
Important If your timestamp is a string, has a decimal portion, or isn't in seconds, AWS IoT SiteWise rejects the request. You must convert the timestamp to seconds and nanosecond offset. Use features of the AWS IoT rules engine to convert the timestamp. For more information, see the following:
NoteBecause an expression in a substitution template is evaluated separately from the SELECT
statement, you can't use a substitution template to reference an alias created using an AS
clause. You can reference only information present in the original payload, in addition to supported functions and operators.
Note
The time_to_epoch
function supports up to millisecond-precision timestamp strings. To convert strings with microsecond or nanosecond precision, you can configure an AWS Lambda function that your rule calls to convert the timestamp into numerical values. For more information, see .
Note This section contains advanced instructions that assume that you're familiar with how to create the following resources: Lambda functions. For more information, see or in the AWS Lambda Developer Guide. AWS IoT rules with the AWS IoT SiteWise rule action. For more information, see .
Note
This solution invokes the Lambda function twice for each timestamp string. You can create another rule to reduce the number of Lambda function invocations if your rule handles multiple data points that have the same timestamp in each payload.
To do so, create a rule with a republish action that invokes the Lambda and publishes the original payload with the timestamp string converted to timeInSeconds
and offsetInNanos
. Then, create a rule with an AWS IoT SiteWise rule action to consume the converted payload. With this approach, you reduce the number of times that the rule invokes the Lambda but increase the number of AWS IoT rule actions run. Consider the pricing of each service if you apply this solution to your use case.
Note
The above example includes a second slash (//
) because AWS IoT removes the Basic Ingest prefix ($aws/rules/rule-name/
) from the topic that's visible to the rule action. In this example, the rule receives the topic /company/windfarm/3/turbine/7/temperature
.
Note To ingest data from OPC-UA, Modbus TCP, and Ethernet/IP sources, you can configure a gateway that runs on AWS IoT Greengrass. For more information, see .
Important The operation is subject to the following quotas: