

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

 AWS IoT SiteWise (`iotSiteWise`) 動作會將資料從 MQTT 訊息傳送至其中的資產屬性 AWS IoT SiteWise。

您可以遵循教學課程，示範如何從 AWS IoT 物件擷取資料。如需詳細資訊，請參閱 *AWS IoT SiteWise 使用者指南*中的[從 AWS IoT 實物擷取資料 AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ingest-data-from-iot-things.html)教學課程或使用[AWS IoT 核心規則擷取資料](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/iot-rules.html)一節。

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

此規則動作具有下列需求：
+  AWS IoT 可以擔任以執行`iotsitewise:BatchPutAssetPropertyValue`操作的 IAM 角色。如需詳細資訊，請參閱[授予 AWS IoT 規則所需的存取權](iot-create-role.md)。

  您可連接下列範例信任政策至該角色。  
****  

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

  若要改善安全性，您可以在 `Condition` 屬性中指定 AWS 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}}/*"
                      ]
              }
          }
          }
      ]
  }
  ```
+ 當您 AWS IoT SiteWise 使用此動作將資料傳送至 時，您的資料必須符合 `BatchPutAssetPropertyValue`操作的要求。如需詳細資訊，請參閱《AWS IoT SiteWise API 參考》**中的 [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)。

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

當您使用此動作建立 AWS IoT 規則時，您必須指定下列資訊：

`putAssetPropertyValueEntries`  
資產屬性值項目的清單，其中每個項目都包含下列資訊：    
`propertyAlias`  
(選用) 與資產屬性相關聯的屬性別名。指定 `propertyAlias` 或同時指定 `assetId` 和 `propertyId`。如需詳細資訊，請參閱《AWS IoT SiteWise 使用者指南》**中的[將工業資料串流映射至資產屬性](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/connect-data-streams.html)。  
支援[替代範本](iot-substitution-templates.md)：是  
`assetId`  
（選用） AWS 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 epoch 時間中時間 (以秒為單位) 的字串。如果您的消息承載沒有時間戳記，可以使用 [timestamp()](iot-sql-functions.md#iot-function-timestamp)，返回目前時間 (以毫秒為單位)。若要將該時間轉換為以秒為單位，您可以使用下列替代範本：**${floor(timestamp() / 1E3)}**。  
支援[替代範本](iot-substitution-templates.md)：是  
`offsetInNanos`  
(選用) 包含從該時間 (以秒為單位) 開始的奈秒時間位移的字串。如果您的消息承載沒有時間戳記，可以使用 [timestamp()](iot-sql-functions.md#iot-function-timestamp)，返回目前時間 (以毫秒為單位)。若要計算從該時間開始的奈秒位移，可以使用下列替代範本：**${(timestamp() % 1E3) \* 1E6}**。  
支援[替代範本](iot-substitution-templates.md)：是
關於 Unix epoch 時間， 僅 AWS 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`  
授予 AWS IoT 許可的 IAM 角色 ARN，可將資產屬性值傳送至該角色 AWS IoT SiteWise。如需詳細資訊，請參閱[要求](#iotsitewise-rule-action-requirements)。  
支援[替代範本](iot-substitution-templates.md)：否

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

下面的 JSON 範例定義 AWS 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 範例定義 AWS IoT 規則中的 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>
+ 《AWS IoT SiteWise 使用者指南》**中的[什麼是 AWS IoT SiteWise？](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)
+ *AWS IoT SiteWise 《 使用者指南*》中的[使用 AWS IoT Core 規則擷取資料](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/iot-rules.html) 
+ *AWS IoT SiteWise 《 使用者指南*》中的[AWS IoT SiteWise 從 AWS IoT 實物擷取資料至](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/ingest-data-from-iot-things.html) 
+ *AWS IoT SiteWise 《 使用者指南*》中的[AWS IoT SiteWise 規則動作疑難排解](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/troubleshoot-rule.html) 