本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將屬性值更新發佈至 Amazon DynamoDB
您可以將數據存儲在Amazon DynamoDB
在本教學課程中,您會在 AWS IoT SiteWise 示範上進行建置,提供一組適用於風力發電廠的資料範例。您會從風力發電廠演示設定屬性值更新,以通過AWS IoT核心規則,添加到您創建的 DynamoDB 表中。當您啟用屬性值更新時,AWS IoT SiteWise 會將資料傳送到 MQTT 訊息中的 AWS IoT Core。然後,您可以定義AWS IoT根據這些訊息的內容,執行動作的核心規則,例如 DynamoDB 動作。如需詳細資訊,請參閱 與其他 AWS 服務互動。
主題
先決條件
為了完成本教學,您需要以下項目:
-
一個 AWS 帳戶。如果您沒有帳戶,請參閱 設定 AWS 帳戶。
-
執行 Windows、macOS、Linux 或 Unix 的開發電腦,用來存取 AWS Management Console。如需詳細資訊,請參閱 AWS Management Console 入門。
-
擁有管理員許可的 IAM 使用者。
-
執行中的 AWS IoT SiteWise 風力發電廠示範。當您設定示範時,它會定義 AWS IoT SiteWise 中的模型和資產,並將資料串流到它們之中以呈現風力發電廠。如需詳細資訊,請參閱 使用 AWS IoT SiteWise 示範。
設定 AWS IoT SiteWise 以發佈屬性值更新
在此程序中,您會在示範渦輪機資產的 Wind Speed (風速) 屬性上啟用屬性值通知。啟用屬性值通知後,AWS IoT SiteWise將 MQTT 訊息中的每個值更新發佈至AWS IoT核心。
啟用資產屬性的屬性值更新通知
-
請參AWS區域哪裡AWS IoT SiteWise支持並切換AWS區域,如果必要的話。切換到您正在執行 AWS IoT SiteWise 示範的區域。
-
在左側導覽窗格中,選擇 Assets (資產)。
-
選擇 Demo Wind Farm Asset 旁的箭號,以展開發力發電廠資產的階層。
-
選擇一個示範渦輪機,然後選擇 Edit (編輯)。
-
將 Wind Speed 屬性的 Notification status (通知狀態) 更新為 ENABLED (啟用)。
-
選擇頁面底部的 Save asset (儲存資產)。
-
針對每個示範渦輪機資產重複步驟 5 到 7。
-
選擇示範渦輪機 (例如 Demo Turbine Asset 1 (示範渦輪機資產))。
-
選擇 Measurements (衡量值)。
-
選擇 Wind Speed 屬性旁的複製圖示,以將通知主題複製到剪貼簿。儲存通知主題,以在本教學的稍後使用。您只需要記錄一台渦輪機的通知主題。
通知主題看起來應該會與以下範例相似。
$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE
/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
在 中建立規則AWS IoT核心
在本程序中,您會在AWS IoT了解屬性值通知訊息並將資料插入 DynamoDB 資料表中。AWS IoT核心規則會針對 MQTT 訊息進行分析,並根據每個訊息的內容和主題執行動作。您可以使用 DynamoDB 動作建立規則,將資料插入到您在本教學課程過程中建立的 DynamoDB 資料表。
使用 DynamoDB 動作建立規則
-
導覽至 AWS IoT 主控台
。如果出現 Get started (開始使用) 按鈕,請選擇此按鈕。 -
在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)。
-
如果 You don’t have any rules yet (您尚未有任何規則) 對話方塊出現,請選擇 Create a rule (建立規則)。否則,請選擇 Create (建立)。
-
輸入規則的名稱和描述。
-
尋找您在本教學中稍早儲存的通知主題。
$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/a1b2c3d4-5678-90ab-cdef-22222EXAMPLE
/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
將主題中的資產 ID (
assets/
之後的 ID) 取代成+
,以選取所有示範風力渦輪機資產的風速屬性。+
主題篩選條件接受主題中單一層級的所有節點。您的主題看起來應該會如以下範例。$aws/sitewise/asset-models/
a1b2c3d4-5678-90ab-cdef-11111EXAMPLE
/assets/+/properties/a1b2c3d4-5678-90ab-cdef-33333EXAMPLE
-
輸入以下規則查詢陳述式。將
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' -
在 Set one or more actions (設定一或多個動作) 下,選擇 Add action (新增動作)。
-
在選擇一個操作頁面上,選擇將消息拆分為 DynamoDB 表的多個列 (動態 ODBv2)。
-
選擇頁面底部的 Configure action (設定動作)。
-
在 Configure action (設定動作) 頁面,選擇 Create a new resource (建立新的資源)。
DynamoDB 主控台會在新的標籤中開啟。在您完成下列程序期間,請將規則動作標籤維持在開啟狀態。
建立 DynamoDB 資料表
在此程序中,您會建立 DynamoDB 表,從規則動作接收風速資料。
建立 DynamoDB 資料表
-
在 DynamoDB 主控台儀表板中,選擇建立資料表。
-
輸入資料表的名稱。
-
針對 Primary key (主索引鍵),執行以下作業:
-
輸入
timestamp
做為分割區索引鍵。 -
選擇 Number (數字) 類型。
-
選取 Add sort key (新增排序索引鍵) 核取方塊。
-
輸入
asset
做為排序索引鍵,並保留預設的 String (字串) 排序索引鍵類型。
-
-
選擇 Create (建立)。
當 Table is being created (正在建立資料表) 通知消失時,您的資料表便已準備就緒。
-
返回包含 Configure action (設定動作) 頁面的標籤。在您完成下列程序期間,請將 DynamoDB 標籤維持在開啟狀態。
設定 DynamoDB 規則動作
在此程序中,您會設定 DynamoDB 規則動作,將來自屬性值更新的資料插入新的 DynamoDB 資料表。
設定 DynamoDB 規則動作
-
在設定動作頁面上,刷新Table name (資料表名稱)列表,然後選擇新的 DynamoDB 表。
-
選擇建立角色來建立 IAM 角色,授與AWS IoT用於執行規則動作的核心訪問權。
-
輸入角色名稱,然後選擇 Create role (建立角色)。
-
選擇 Add action (新增動作)。
-
選擇頁面底部的 Create rule (建立規則) 來完成建立規則。
您的演示資產資料應該會開始出現在 DynamoDB 資料表中。
在 DynamoDB 中探索資料
在此程序中,您會在您新的 DynamoDB 資料表中探索示範資產的風速資料。
在 DynamoDB 中探索資產資料
-
返回 DynamoDB 資料表處於開啟狀態的標籤。
-
在您稍早建立的資料表中,選擇 Items (項目) 標籤,以檢視資料表中的資料。如果您在資料表中沒有看見資料列,請重新整理頁面。如果在幾分鐘之後資料列沒有出現,請參閱規則疑難排解。
-
在資料表的資料列中,選擇編輯圖示以展開資料。
-
選擇 windspeed 結構旁邊的箭頭,展開風速資料點的清單。每個清單都反映了風力發電廠示範傳送到 AWS IoT SiteWise 的風速資料點批次。如果您為自身用途設定了規則動作,建議您使用不同的資料格式。如需詳細資訊,請參閱 查詢資產屬性通知訊息。
現在您已完成教學課程,您可以停用或刪除規則並刪除 DynamoDB 料表,以避免產生額外的費用。請遵循下一個程序來清理您的資源。
在完成教學課程後清除資源
完成本教學課程之後,請清除資源,以避免產生額外的費用。您的示範風力發電廠資產會在經過建立示範時選擇的持續時間後刪除,此外也能手動刪除。如需詳細資訊,請參閱 刪除 AWS IoT SiteWise 示範。
您可以使用以下程序來停用屬性值更新通知 (如果您未刪除示範)、停用或刪除AWS IoT規則,然後刪除您的 DynamoDB 表。
停用資產屬性的屬性值更新通知
-
導覽至 AWS IoT SiteWise 主控台
。 -
在左側導覽窗格中,選擇 Assets (資產)。
-
選擇 Demo Wind Farm Asset 旁的箭號,以展開發力發電廠資產的階層。
-
選擇一個示範渦輪機,然後選擇 Edit (編輯)。
-
將 Wind Speed 屬性的 Notification status (通知狀態) 更新為 DISABLED (停用)。
-
選擇頁面底部的 Save asset (儲存資產)。
-
針對每個示範渦輪機資產重複步驟 4 到 6。
停用或刪除 AWS IoT Core 中的規則
-
導覽至 AWS IoT 主控台
。 -
在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)。
-
選擇您規則上的選單,然後選擇 Disable (停用) 或 Delete (刪除)。
刪除 DynamoDB 資料表
-
導覽至 。DynamoDB 主控台
。 -
在左側導覽窗格中,選擇 Tables (資料表)。
-
選擇您之前建立的資料表 WindSpeedData。
-
選擇 Delete table (刪除資料表)。
-
在 Delete table (刪除資料表) 對話方塊中,選擇 Delete (刪除)。
規則疑難排解
如果示範資產資料並未如預期般出現在 DynamoDB 資料表中,請遵循此程序中的步驟來針對您的規則進行故障診斷。在此程序中,您會設定重新發佈規則動作做為錯誤動作,以檢視 MQTT 測試用戶端中的錯誤訊息。您也可以將日誌記錄設定至CloudWatch進行故障診斷的日誌。如需詳細資訊,請參閱「」使用 進行監控CloudWatch日誌中的AWS IoT開發人員指南。
將重新發佈錯誤動作新增到規則
-
導覽至 AWS IoT 主控台
。 -
在左側導覽窗格中,選擇 Act (動作),然後選擇 Rules (規則)。
-
選擇您稍早建立的規則。
-
在 Error action (錯誤動作) 下方,選擇 Add action (新增動作)。
-
選擇將訊息重新發佈至AWS IoT話題。
-
選擇頁面底部的 Configure action (設定動作)。
-
In主題,輸入
windspeed/error
。AWS IoTCore 會將錯誤訊息重新發佈至本主題。 -
選擇選擇授予AWS IoT核心訪問權限,使用您之前建立的角色執行錯誤動作。
-
選擇您角色旁邊的 Select (選取)。
-
選擇 Update Role (更新角色) 以將其他許可新增到角色。
-
選擇 Add action (新增動作) 來完成新增錯誤動作。
-
選擇主控台左上角的返回箭頭,以返回AWS IoT核心主控台首頁。
在您設定重新發佈錯誤動作後,您可以在AWS IoT核心。
在以下程序中,您會在 MQTT 測試用戶端中訂閱錯誤主題。
訂閱錯誤動作主題
-
在 中AWS IoT核心主控台的左側導覽窗格中,選擇測試。
-
在 Subscription topic (訂閱主題) 欄位中,輸入
windspeed/error
,然後選擇 Subscribe to topic (訂閱主題)。 -
注意出現的錯誤訊息,並探索錯誤訊息中的
failures
陣列,以診斷下列常見問題:-
規則查詢陳述式中的拼字錯誤
-
角色許可不足
如果沒有出現錯誤,請檢查您的規則已啟用,以及您訂閱的主題和您在重新發佈錯誤動作中設定的主題相同。如果仍然沒有出現錯誤,請檢查您的示範風力發電廠資產仍然存在,並且您已在風速屬性上啟用通知。如果您的示範資產已過期並從 AWS IoT SiteWise 中消失,您可以建立新的示範,並更新規則查詢陳述式來反映更新後的資產模型和屬性 ID。
-