

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

# 將屬性值更新發佈至 Amazon DynamoDB
<a name="publish-to-amazon-dynamodb"></a>

本教學課程介紹使用 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 存放資料的便利方式，讓您更輕鬆地存取歷史資產資料，而無需重複查詢 AWS IoT SiteWise API。完成本教學課程後，您可以建立使用資產資料的自訂軟體，例如整個風力發電廠的風速和方向即時地圖。如果您想要在不實作自訂軟體解決方案的情況下監控和視覺化資料，請參閱 [使用 監控資料 AWS IoT SiteWise Monitor](monitor-data.md)。

在本教學課程中，您會建置在提供風力發電廠資料集範例的 AWS IoT SiteWise 示範上。您可以從風力發電廠示範設定屬性值更新，透過 AWS IoT Core 規則將資料傳送至您建立的 DynamoDB 資料表。當您啟用屬性值更新時， AWS IoT SiteWise 會在 MQTT 訊息 AWS IoT Core 中傳送您的資料至 。然後，根據這些訊息的內容，定義執行動作 AWS IoT 的核心規則，例如 DynamoDB 動作。如需詳細資訊，請參閱[與其他 AWS 服務互動](interact-with-other-services.md)。

**Topics**
+ [先決條件](#dynamodb-tutorial-prerequisites)
+ [步驟 1：設定 AWS IoT SiteWise 以發佈屬性值更新](#dynamodb-tutorial-enable-value-notifications)
+ [步驟 2：在 AWS IoT Core 中建立規則](#dynamodb-tutorial-create-iot-rule)
+ [步驟 3：設定 DynamoDB 規則動作](#dynamodb-tutorial-configure-rule-action)
+ [步驟 4：探索 DynamoDB 中的資料](#dynamodb-tutorial-explore-dynamodb-data)
+ [清除資源](#dynamodb-tutorial-clean-up-resources)
+ [其他資源](#dynamodb-tutorial-additional-resources)

## 先決條件
<a name="dynamodb-tutorial-prerequisites"></a>

為了完成本教學，您需要以下項目：
+  AWS 帳戶。如果您沒有帳戶，請參閱 [設定 AWS 帳戶](getting-started.md#set-up-aws-account)。
+ 執行 Windows、macOS、Linux 或 Unix 以存取 的開發電腦 AWS 管理主控台。如需詳細資訊，請參閱[什麼是 AWS 管理主控台？](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/what-is.html)
+ 具有管理員許可的 AWS Identity and Access Management (IAM) 使用者。如需詳細說明，請參閱 [AWS IoT SiteWise 如何使用 IAM](security_iam_service-with-iam.md)。
+ 執行中的 AWS IoT SiteWise 示範。如需詳細資訊，請參閱[使用 AWS IoT SiteWise 示範](getting-started-demo.md)。

**注意**  
本教學課程需要使用在 中建立的資源[使用 AWS IoT SiteWise 示範](getting-started-demo.md)。您必須先完成，才能繼續本教學課程。

**重要**  
保留所有示範資源，直到您完成本教學課程為止。刪除任何元件可能會中斷示範的功能，並影響您完成教學課程的能力。

## 步驟 1：設定 AWS IoT SiteWise 以發佈屬性值更新
<a name="dynamodb-tutorial-enable-value-notifications"></a>

在此程序中，您會在示範渦輪機資產的 **Wind Speed (風速)** 屬性上啟用屬性值通知。啟用屬性值通知後， 會將 MQTT 訊息中的每個值更新 AWS IoT SiteWise 發佈至 AWS IoT 核心。

**啟用資產屬性的屬性值更新通知**

1. 登入 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 檢閱 AWS IoT SiteWise 支援的[AWS IoT SiteWise 端點和配額](https://docs.aws.amazon.com/general/latest/gr/iot-sitewise.html)，並視需要切換 AWS 區域。切換到您正在執行 AWS IoT SiteWise 示範的區域。

1. 在左側導覽窗格中，選擇 **Assets (資產)**。

1. 選擇 **Demo Wind Farm Asset** 旁的箭號，以展開發力發電廠資產的階層。

1. 選擇一個示範渦輪機，然後選擇 **Edit (編輯)**。

1. 選擇 **Measurements (衡量值)**。

1. 將**Wind Speed**屬性的 **MQTT 通知狀態**更新為 **ACTIVE**。

1. 選擇頁面底部的 **Save** (儲存)。

1. 針對每個示範渦輪機資產重複步驟 5 到 7。

1. 選擇示範渦輪機 (例如 **Demo Turbine Asset 1 (示範渦輪機資產)**)。

1. 選擇 **Measurements (衡量值)**。

1. 選擇 **Wind Speed** 屬性旁的複製圖示，以將通知主題複製到剪貼簿。儲存通知主題，以在本教學的稍後使用。您只需要記錄一台渦輪機的通知主題。

   通知主題看起來應該會與以下範例相似。

   ```
   $aws/sitewise/asset-models/{{a1b2c3d4-5678-90ab-cdef-11111EXAMPLE}}/assets/{{a1b2c3d4-5678-90ab-cdef-22222EXAMPLE}}/properties/{{a1b2c3d4-5678-90ab-cdef-33333EXAMPLE}}
   ```

## 步驟 2：在 AWS IoT Core 中建立規則
<a name="dynamodb-tutorial-create-iot-rule"></a>

在此步驟中，在 AWS IoT Core 中建立規則，以剖析屬性值通知訊息，並將資料插入 Amazon DynamoDB 資料表。 AWS IoT Core 規則會剖析 MQTT 訊息，並根據每則訊息的內容和主題執行動作。然後，您可以使用 DynamoDB 動作建立規則，將資料插入您在本教學課程中建立的 DynamoDB 資料表。

**使用 DynamoDB 動作建立規則**

1. 導覽至 [AWS IoT 主控台](https://console.aws.amazon.com/iot/)。

1. 在左側導覽窗格中，選擇**訊息路由**，然後選擇**規則**。

1. 選擇**建立規則**。

1. 在**指定規則屬性**下，輸入規則的名稱和描述。

1. 尋找您在本教學中稍早儲存的通知主題。

   ```
   $aws/sitewise/asset-models/{{a1b2c3d4-5678-90ab-cdef-11111EXAMPLE}}/assets/{{a1b2c3d4-5678-90ab-cdef-22222EXAMPLE}}/properties/{{a1b2c3d4-5678-90ab-cdef-33333EXAMPLE}}
   ```

   將主題中的資產 ID ( 之後的 ID`assets/`) 取代為 `+`。這會選取所有示範風力發電機資產的風速屬性。`+` 主題篩選條件接受主題中單一層級的所有節點。您的主題看起來應該如下範例所示。

   ```
   $aws/sitewise/asset-models/{{a1b2c3d4-5678-90ab-cdef-11111EXAMPLE}}/assets/+/properties/{{a1b2c3d4-5678-90ab-cdef-33333EXAMPLE}}
   ```

1. 輸入以下規則查詢陳述式。將 `FROM` 區段中的主題取代成您的通知主題。

   ```
   SELECT
     payload.assetId AS asset,
     (SELECT VALUE (value.doubleValue) FROM payload.values) AS windspeed,
     timestamp() AS timestamp
   FROM
     '$aws/sitewise/asset-models/{{a1b2c3d4-5678-90ab-cdef-11111EXAMPLE}}/assets/+/properties/{{a1b2c3d4-5678-90ab-cdef-33333EXAMPLE}}' 
   WHERE
     type = 'PropertyValueUpdate'
   ```

1. 在**規則動作**下，導覽至**動作 1**。

1. 在**選取動作**頁面上，選擇 **DynamoDBv2**。這會將訊息分割成 DynamoDB 資料表的多個資料欄

1. 在**資料表名稱**下，選擇**建立新資料表**。您可以建立 Amazon DynamoDB 資料表，從規則動作接收風速資料。

1. 在 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb/)的**資料表名稱**下，輸入資料表的名稱。

1. 對於**分割區索引鍵**，請執行下列動作：

   1. 輸入 **timestamp** 做為分割區索引鍵。

   1. 選擇 **Number (數字)** 類型。

   1. 選取 **Add sort key (新增排序索引鍵)** 核取方塊。

   1. 輸入 **asset** 做為排序索引鍵，並保留預設的 **String (字串)** 排序索引鍵類型。

1. 選擇 **Create Table** (建立資料表)。

1. 返回包含 **Configure action (設定動作)** 頁面的標籤。

1. 在**連接規則動作**頁面上，重新整理**資料表名稱**清單，然後選擇您在上一個步驟中建立的新 DynamoDB 資料表。

## 步驟 3：設定 DynamoDB 規則動作
<a name="dynamodb-tutorial-configure-rule-action"></a>

在此步驟中，設定 Amazon DynamoDB 規則動作，將資料從屬性值更新插入至新的 DynamoDB 資料表。

**設定 DynamoDB 規則動作**

1. 選擇**建立角色**以建立授予 AWS IoT 核心存取權以執行規則動作的 IAM 角色。

1. 輸入角色名稱，例如 `WindSpeedDataRole`。選擇建**立角色**。

1. 選擇**下一步**。

1. 選擇頁面底部的**建立**以完成建立規則。

   您的示範資產資料應該會開始出現在 DynamoDB 資料表中。

## 步驟 4：探索 DynamoDB 中的資料
<a name="dynamodb-tutorial-explore-dynamodb-data"></a>

在此步驟中，在新的 Amazon DynamoDB 資料表中探索示範資產的風速資料。

**探索 DynamoDB 中的資產資料**

1. 返回索引標籤，並開啟 DynamoDB 資料表。

1. 在您先前建立的資料表中，選擇**探索資料表項目**索引標籤以檢視資料表中的資料。如果您在資料表中沒有看見資料列，請重新整理頁面。如果在幾分鐘之後資料列沒有出現，請參閱[對規則進行故障診斷 (DynamoDB)](troubleshoot-rule.md#dynamodb-tutorial-troubleshoot-rule)。

1. 在資料表的資料列中，選擇編輯圖示以展開資料。

1. 選擇 **windspeed** 結構旁邊的箭頭，展開風速資料點的清單。每個清單都會反映風力發電廠示範傳送給 的一批 AWS IoT SiteWise 風速資料點。如果您為自身用途設定了規則動作，建議您使用不同的資料格式。如需詳細資訊，請參閱[在 中查詢資產屬性通知 AWS IoT SiteWise](query-notification-messages.md)。

現在您已完成教學課程，您可以停用或刪除規則，並刪除 DynamoDB 資料表，以避免產生額外費用。若要清除您的資源，請參閱 [清除資源](#dynamodb-tutorial-clean-up-resources)。

您也可以了解如何建立自訂應用程式，以取用和視覺化此資料。如需視覺化 AWS IoT SiteWise 資料的引導教學課程，請參閱 [在 Grafana 中視覺化和共用資料](visualize-with-grafana.md)。

## 清除資源
<a name="dynamodb-tutorial-clean-up-resources"></a>

完成本教學課程之後，請清除資源，以避免產生額外的費用。

**刪除 AWS IoT SiteWise 示範**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 在頁面的右上角，選擇**刪除示範**。

1. 在確認對話方塊中輸入 **DELETE**，然後選擇 **Delete (刪除)**。

如需詳細資訊，請參閱[刪除 AWS IoT SiteWise 示範](getting-started-demo.md#delete-getting-started-demo)。

使用下列程序來停用屬性值更新通知 （如果您未刪除示範）、停用或刪除 AWS IoT 規則，以及刪除 DynamoDB 資料表。

**停用資產屬性的屬性值更新通知**

1. 導覽至 [AWS IoT SiteWise 主控台](https://console.aws.amazon.com/iotsitewise/)。

1. 在左側導覽窗格中，選擇 **Assets (資產)**。

1. 選擇 **Demo Wind Farm Asset** 旁的箭號，以展開發力發電廠資產的階層。

1. 選擇一個示範渦輪機，然後選擇 **Edit (編輯)**。

1. 將**Wind Speed**屬性的**通知狀態**更新為**非作用中**。

1. 選擇頁面底部的 **Save asset (儲存資產)**。

1. 針對每個示範渦輪機資產重複步驟 4 到 6。

**在 中停用或刪除規則 AWS IoT Core**

1. 導覽至 [AWS IoT 主控台](https://console.aws.amazon.com/iot/)。

1. 在左側導覽窗格中，選擇**訊息路由**，然後選擇**規則**。

1. 選取您的規則，然後選擇**刪除**。

1. 在確認對話方塊中，輸入規則的名稱，然後選擇刪除。

**刪除 DynamoDB 資料表**

1. 導覽至 [DynamoDB 主控台](https://console.aws.amazon.com/dynamodb/)。

1. 在左側導覽窗格中，選擇 **Tables (資料表)**。

1. 選擇您先前建立的資料表，例如 `WindSpeedData`。

1. 選擇 **刪除**。

1. 在確認對話方塊中，輸入 **confirm** 以刪除資料表。

## 其他資源
<a name="dynamodb-tutorial-additional-resources"></a>

如需使用 DynamoDB 和監控資料的詳細資訊，請參閱下列資源：
+ 《*DynamoDB 開發人員指南*》中的[使用 CloudWatch 監控 中的指標 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Monitoring-metrics-with-Amazon-CloudWatch.html) 
+ 《*DynamoDB 開發人員指南*》[中的有效設計和使用分割區索引鍵的最佳實務 ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html) 
+ 《 *AWS IoT 開發人員指南*》中的 [規則 AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) 
+ [在 Grafana 中視覺化和共用資料](visualize-with-grafana.md)