

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon IoT SiteWise
<a name="iotsitewise-rule-action"></a>

 Amazon IoT SiteWise (`iotSiteWise`) 操作将数据从 MQTT 消息发送到中的资产属性。 Amazon IoT SiteWise

你可以遵循一个教程，向你展示如何从 Amazon IoT 事物中提取数据。*有关更多信息，请参阅《用户指南》[中的 “ Amazon IoT SiteWise 从 Amazon IoT 事物中提取数据](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/ingest-data-from-iot-things.html)[” 教程或 “使用 Amazon IoT 核心规则提取数据](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/iot-rules.html)” 部分。Amazon IoT SiteWise *

## 要求
<a name="iotsitewise-rule-action-requirements"></a>

此规则操作具有以下要求：
+  Amazon IoT 可以代入执行`iotsitewise:BatchPutAssetPropertyValue`操作的 IAM 角色。有关更多信息，请参阅 [授予 Amazon IoT 规则所需的访问权限](iot-create-role.md)。

  您可以将下列示例信任策略附加到要代入的角色。  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "iotsitewise:BatchPutAssetPropertyValue",
              "Resource": "*"
          }
      ]
  }
  ```

  为了提高安全性，您可以在`Condition`属性中指定 Amazon IoT SiteWise 资产层次结构路径。以下示例是指定资产层次结构路径的信任策略。  
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "iotsitewise:BatchPutAssetPropertyValue",
              "Resource": "*",
              "Condition": {
                  "StringLike": {
                      "iotsitewise:assetHierarchyPath": [
                          "/root node asset ID",
                          "/root node asset ID/*"
                      ]
              }
          }
          }
      ]
  }
  ```
+ 当您通过此操作向发送数据时，您的数据必须满足`BatchPutAssetPropertyValue`操作的要求。 Amazon IoT SiteWise 有关更多信息，请参阅《Amazon IoT SiteWise API Reference》**中的 [BatchPutAssetPropertyValue](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)。

## 参数
<a name="iotsitewise-rule-action-parameters"></a>

使用此操作创建 Amazon IoT 规则时，必须指定以下信息：

`putAssetPropertyValueEntries`  
包含以下信息的资产属性值条目的列表：    
`propertyAlias`  
（可选）与您的资产属性关联的属性别名。指定 `propertyAlias` 或同时指定 `assetId` 和 `propertyId`。有关更多信息，请参阅 *《Amazon IoT SiteWise 用户指南》*中的[将工业数据流映射到资产属性](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/connect-data-streams.html)。  
支持[替换模板](iot-substitution-templates.md)：是  
`assetId`  
（可选） Amazon IoT SiteWise 资产的 ID。指定 `propertyAlias` 或同时指定 `assetId` 和 `propertyId`。  
支持[替换模板](iot-substitution-templates.md)：是  
`propertyId`  
（可选）资产属性的 ID。指定 `propertyAlias` 或同时指定 `assetId` 和 `propertyId`。  
支持[替换模板](iot-substitution-templates.md)：是  
`entryId`  
（可选）此条目的唯一标识符。定义 `entryId`，以便在出现故障时更好地跟踪哪条消息导致了错误。默认为新 UUID。  
支持[替换模板](iot-substitution-templates.md)：是  
`propertyValues`  
要插入的属性值的列表，均包含以下格式的时间戳、质量和值（TQV）：    
`timestamp`  
包含以下信息的时间戳结构：    
`timeInSeconds`  
包含用 Unix 纪元时间表示的时间（以秒为单位）的字符串。如果您的消息负载没有时间戳，则可使用 [timestamp()](iot-sql-functions.md#iot-function-timestamp)，它将返回当前时间（以毫秒为单位）。要将该时间转换为秒，可以使用以下替换模板：**\$1\$1floor(timestamp() / 1E3)\$1**。  
支持[替换模板](iot-substitution-templates.md)：是  
`offsetInNanos`  
（可选）包含与以秒为单位的时间的纳秒时间偏移量的字符串。如果您的消息负载没有时间戳，则可使用 [timestamp()](iot-sql-functions.md#iot-function-timestamp)，它将返回当前时间（以毫秒为单位）。要计算与该时间的纳秒偏移量，可以使用以下替换模板：**\$1\$1(timestamp() % 1E3) \$1 1E6\$1**。  
支持[替换模板](iot-substitution-templates.md)：是
关于 Unix 纪元时间，仅 Amazon IoT SiteWise 接受时间戳最长为过去 7 天、将来最多 5 分钟的条目。  
`quality`  
（可选）描述值的质量的字符串。有效值：`GOOD`、`BAD`、`UNCERTAIN`。  
支持[替换模板](iot-substitution-templates.md)：是  
`value`  
包含以下值字段之一的值结构，具体取决于资产属性的数据类型：    
`booleanValue`  
（可选）包含值条目布尔值的字符串。  
支持[替换模板](iot-substitution-templates.md)：是  
`doubleValue`  
（可选）包含值条目的双值的字符串。  
支持[替换模板](iot-substitution-templates.md)：是  
`integerValue`  
（可选）包含值条目整数值的字符串。  
支持[替换模板](iot-substitution-templates.md)：是  
`stringValue`  
（可选）值条目的字符串值。  
支持[替换模板](iot-substitution-templates.md)：是

`roleArn`  
授予向发送资产属性值的 Amazon IoT 权限的 IAM 角色的 ARN。 Amazon IoT SiteWise有关更多信息，请参阅 [要求](#iotsitewise-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

## 示例
<a name="iotsitewise-rule-action-examples"></a>

以下 JSON 示例在 Amazon IoT 规则中定义了基本的 IoT SiteWise 操作。

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM 'some/topic'",
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "iotSiteWise": {
                    "putAssetPropertyValueEntries": [
                        {
                            "propertyAlias": "/some/property/alias",
                            "propertyValues": [
                                {
                                    "timestamp": {
                                        "timeInSeconds": "${my.payload.timeInSeconds}"
                                    },
                                    "value": {
                                        "integerValue": "${my.payload.value}"
                                    }
                                }
                            ]
                        }
                    ],
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise"
                }
            }
        ]
    }
}
```

以下 JSON 示例在 Amazon IoT 规则中定义了物联网 SiteWise 操作。此示例将主题用作属性别名和 `timestamp()` 函数。例如，如果您将数据发布到 `/company/windfarm/3/turbine/7/rpm`，则此操作会将数据发送到具有与您指定的主题相同的属性别名的资产属性。

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM '/company/windfarm/+/turbine/+/+'",
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "iotSiteWise": {
                    "putAssetPropertyValueEntries": [
                        {
                            "propertyAlias": "${topic()}",
                            "propertyValues": [
                                {
                                    "timestamp": {
                                        "timeInSeconds": "${floor(timestamp() / 1E3)}",
                                        "offsetInNanos": "${(timestamp() % 1E3) * 1E6}"
                                    },
                                    "value": {
                                        "doubleValue": "${my.payload.value}"
                                    }
                                }
                            ]
                        }
                    ],
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_sitewise"
                }
            }
        ]
    }
}
```

## 另请参阅
<a name="iotsitewise-rule-action-see-also"></a>
+ *Amazon IoT SiteWise 用户指南* 中的[什么是 Amazon IoT SiteWise？](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/what-is-sitewise.html)
+ [https://docs.amazonaws.cn/iot-sitewise/latest/userguide/iot-rules.html](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/iot-rules.html)
+ [Amazon IoT SiteWise*从《用户指南》中的 Amazon IoT 事物中Amazon IoT SiteWise 提取数据*](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/ingest-data-from-iot-things.html)
+ *Amazon IoT SiteWise 用户指南*[中的 Amazon IoT SiteWise 规则操作疑难解答](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/troubleshoot-rule.html)