AWS IoT Analytics 疑難排解 - AWS IoT Analytics

如需類似的功能 AWS IoT Analytics,請探索 Amazon Kinesis、Amazon S3 和 Amazon Athena。這些服務提供額外的可擴充性和彈性,以滿足您不斷發展的分析需 了解如何在這裡

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

AWS IoT Analytics 疑難排解

請參閱下一節以疑難排解錯誤,並尋找與解決問題的可能解決方案AWS IoT Analytics。

如何知道可以在訊息增加AWS IoT Analytics?

檢查透過規則引擎將資料插入通道的規則是否設定正確。

aws iot get-topic-rule --rule-name your-rule-name

回應應應如下所示。

{ "ruleArn": "arn:aws:iot:us-west-2:your-account-id:rule/your-rule-name", "rule": { "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/your-rule-name'", "ruleDisabled": false, "actions": [ { "iotAnalytics": { "channelArn": "arn:aws:iotanalytics:region:your_account_id:channel/your-channel-name" } } ], "ruleName": "your-rule-name" } }

確認用於規則的區域和頻道名稱是否正確。為了確保您的資料到達規則引擎並且規則正確執行,您可能需要新增一個新目標,以暫時將內送訊息存放在 Amazon S3 儲存貯體中。

為什麼我的管道丟失消息? 我該如何修正這個問題?

  • 活動收到無效的 JSON 輸入:

    除 Lambda 活動外,所有活動都特別需要有效的 JSON 字串作為輸入。如果活動收到的 JSON 無效,則訊息會被捨棄,無法進入資料存放區。請確定您擷取有效的 JSON 訊息至服務。若是二進位輸入,請確保您管道中的第一個活動是 Lambda 活動,它可將二進位資料轉換為有效的 JSON,然後再傳遞給下一個活動或儲存到資料存放區。如需詳細資訊,請參閱 Lambda Function 2

  • Lambda 活動叫用的 Lambda 函數沒有足夠的許可:

    請確定 Lambda 活動中的每個 Lambda 函數都具有從AWS IoT Analytics服務叫用的權限。可以使用下列AWS CLI命令授與許可。

    aws lambda add-permission --function-name <name> --region <region> --statement-id <id> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction
  • 篩選條件或 removeAttribute 活動的定義不正確:

    確保定義是否有任何filterremoveAttribute活動正確。如果您篩選掉訊息或移除訊息的所有屬性,該訊息不會新增到資料存放區。

為什麼我的資料存放區中沒有資料?

  • 資料擷取和資料可供使用之間存在延遲:

    資料擷取至頻道後可能需要幾分鐘的時間,資料才能在資料存放區提供使用。所需時間不一,取決於管道活動數量和管道中的任何自訂 Lambda 活動的定義。

  • 訊息在您的管道中被篩選掉:

    確定您未刪除管道中的訊息。(請參閱上一個問題和回覆。)

  • 您的資料集查詢不正確:

    請確定從資料存放區產生資料集的查詢正確無誤。從查詢移除任何不必要的篩選條件,以確保您的資料可以到達您的資料存放區。

為什麼我的資料集只會顯示__dt

  • 此欄由服務自動新增,並包含資料的大約擷取時間。它可用來最佳化您的查詢。如果您的資料集只包含此內容,請參閱上一個問題和回覆。

如何編寫由數據集完成驅動的事件?

  • 您必須根據describe-dataset命令設定輪詢,以檢查具有特定時間戳記的資料集狀態是否已成功

如何正確設定要使用的筆記本執行個體AWS IoT Analytics?

遵循以下步驟,確保您用來建立筆記本執行個體的 IAM 角色具有所需許可:

  1. 移至 SageMaker 主控台並建立筆記本執行個體。

  2. 填入詳細資訊,然後選擇 create a new role (建立新角色)。請記下角色 ARN。

  3. 建立筆記本執行個體。這也會建立 SageMaker 可以使用的角色。

  4. 前往 IAM 主控台並修改新建立的 SageMaker 角色。當您開啟該角色,應該會有一個受管政策。

  5. 按一下 [新增內嵌原則],選擇 [IoTAnalytics] 做為服務,然後在 [讀取權限] 下選取GetDatasetContent

  6. 檢閱政策、新增政策名稱,然後create (建立)政策。新建立的角色現在具有讀取資料集的原則權限AWS IoT Analytics。

  7. 前往AWS IoT Analytics主控台並在筆記本執行個體中建立筆記本。

  8. 等待筆記本執行個體處於「In Service」(服務中) 狀態。

  9. 選擇 create notebooks (建立筆記本),然後選擇您建立的筆記本執行個體。這會建立 Jupyter 筆記本,其中包含可存取資料集的所選範本。

為什麼我無法在執行個體中建立筆記本?

  • 請務必使用正確的 IAM 政策來建立筆記本執行個體。(按照上一個問題中的步驟進行。)

  • 確定筆記本執行個體處於「In Service」(服務中) 狀態。當您建立執行個體時,它會以「擱置中」狀態啟動。通常大約需要 5 分鐘時間,才會進入「In Service」(服務中) 狀態。如果筆記本執行個體在大約五分鐘後進入「失敗」狀態,請再次檢查權限。

為什麼我在亞馬遜上看不到我的數據集 QuickSight?

Amazon QuickSight 可能需要許可才能讀取您的AWS IoT Analytics資料集內容。若要授予許可,請依照下列步驟執行。

  1. 在 Amazon 右上角選擇您的帳戶名稱, QuickSight 然後選擇「管理」 QuickSight。

  2. 在左側導覽窗格中,選擇 [安全性和許可]。在 [QuickSight 存取AWS服務] 下方,確認存取權已授與給AWS IoT Analytics。

    1. 如果AWS IoT Analytics沒有存取權,請選擇 [新增] 或 [移除]。

    2. 選擇旁邊的核取方塊,AWS IoT Analytics然後選取 [更新]。如此一來,Amazon 就 QuickSight 可以讀取您的資料集內容。

  3. 再次嘗試視覺化您的資料。

確保您為AWS IoT Analytics和亞馬遜選擇相同的AWS區域 QuickSight。否則,您可能會在存取AWS資源時遇到問題。如需支援區域的清單,請閱AWS IoT AnalyticsAmazon Web Services 一般參考. QuickSight

為什麼我在現有的 Jupyter 筆記本上沒有看到容器化按鈕?

  • 這是由於缺少AWS IoT Analytics容器化插件引起的。如果您在 2018 年 8 月 23 日之前建立 SageMaker筆記本執行個體,則需要依照容器化筆記本中的指示手動安裝外掛程式。

  • 如果您在從AWS IoT Analytics主控台建立 SageMaker 筆記本執行個體或手動安裝之後,看不到 [容器化] 按鈕,請連絡AWS IoT Analytics技術支援。

為什麼我的容器化插件安裝失敗?

  • 通常,由於 SageMaker筆記本實例中缺少權限,插件安裝失敗。有關筆記本執行個體的必要許可,請參閱許可,然後將必要的許可新增至筆記本執行個體角色。如果問題仍然存在,請從AWS IoT Analytics主控台建立新的筆記本執行個體。

  • 如果在安裝插件期間出現,則可以放心地忽略日誌中的以下消息:「每次筆記本(或其他應用程序)加載時在瀏覽器中初始化此擴展。」

為什麼我的容器化插件拋出錯誤?

  • 有多個原因會造成容器化失敗並產生錯誤。在容器化您的筆記本之前,請確認您使用正確的核心。容器化的核心會以「Containerized」字首開頭。

  • 由於外掛程式會在 ECR 儲存庫建立和儲存 Docker 影像,請確認您的筆記本執行個體角色具有足夠的許可,以讀取、列出及建立 ECR 儲存庫。有關筆記本執行個體的必要許可,請參閱許可,然後將必要的許可新增至筆記本執行個體角色。

  • 同時確認儲存庫的名稱符合 ECR 的規定。ECR 儲存庫名稱必須以字母開頭,並且只能包含小寫字母、數字、連字號、底線和斜線。

  • 如果容器化程序失敗並顯示錯誤:「此執行個體沒有足夠的可用空間來執行容器化」,請嘗試使用較大的執行個體來解決問題。

  • 如果您看到連線錯誤或映像建立錯誤,請再試一次。如果問題仍存在,請重新啟動執行個體並安裝最新版本的外掛程式。

為什麼我在容器化期間看不到我的變數?

  • AWS IoT Analytics容器化外掛程式會在使用「容器化」核心執行筆記本之後,自動辨識筆記本中的所有變數。使用容器化核心之一來執行筆記本,然後執行容器化。

可以在容器增加哪些變數作為輸入?

  • 您可以將您要在執行時間修改值的任何變數新增至您的容器做為輸入。這可讓您使用不同的參數來執行相同的容器,這些參數需要在建立資料集時提供。AWS IoT Analytics容器化 Jupyter 插件通過自動識別筆記本中的變量並將其作為容器化過程的一部分提供,從而簡化了此過程。

如何將容器輸出設置為後續分析的輸入?

  • 每次執行您容器的資料集時,就會建立可存放已執行之成品的特定 S3 位置。若要存取此輸出位置,請在您的容器資料集中建立 outputFileUriValue 類型的變數。此變數的值應該是 S3 路徑,它用於存放額外的輸出檔。若要在後續執行中存取這些儲存的成品,您可以使用getDatasetContent API 並挑選後續執行所需的適當輸出檔案。

為什麼我的容器數據集失敗?

  • 請確定您executionRole將正確的資料傳遞至容器資料集。的信任政策executionRole必須同時包含iotanalytics.amazonaws.comsagemaker.amazonaws.com

  • 如果您看AlgorithmError到失敗的原因,請嘗試手動偵錯容器程式碼。如果容器程式碼有錯誤或執行角色沒有執行容器的許可,就會發生此錯誤。如果您使用AWS IoT Analytics Jupyter 外掛程式進行容器化,請建立與容器資料集之 ExecutionRole 相同角色的新 SageMaker 筆記本執行個體,然後嘗試手動執行筆記本。如果容器是在 Jupyter 外掛程式之外建立的,請嘗試手動執行程式碼,並限制對於 executionRole 的許可。