

終止支援通知：在 2025 年 12 月 15 日， AWS 將終止對 的支援 AWS IoT Analytics。2025 年 12 月 15 日之後，您將無法再存取 AWS IoT Analytics 主控台或 AWS IoT Analytics 資源。如需詳細資訊，請參閱[AWS IoT Analytics 終止支援](https://docs.aws.amazon.com/iotanalytics/latest/userguide/iotanalytics-end-of-support.html)。

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

# 故障診斷 AWS IoT Analytics
<a name="troubleshoot"></a>

請參閱下一節，針對錯誤進行故障診斷，並尋找解決 問題的可能解決方案 AWS IoT Analytics。

**Topics**
+ [如何知道我的訊息是否進入 AWS IoT Analytics？](#getting-data)
+ [為什麼我的管道遺失訊息？ 我該如何修正這個問題？](#pipeline-no-data)
+ [為什麼我的資料存放區中沒有資料？](#datastore-no-data)
+ [為什麼我的資料集只顯示 `__dt`？](#dataset-no-data)
+ [如何為資料集完成所驅動的事件編寫程式碼？](#event-driven-dataset)
+ [如何正確設定筆記本執行個體以使用 AWS IoT Analytics？](#configure-notebook-instance)
+ [為什麼無法在執行個體中建立筆記本？](#notebook-instance)
+ [為什麼我在 Quick Suite 中看不到我的資料集？](#sq-no-dataset)
+ [為什麼我在現有的 Jupyter 筆記本上看不到容器化按鈕？](#containerization-jupyter-notebook)
+ [為什麼我的容器化外掛程式安裝失敗？](#containerization-installation-fails)
+ [為什麼我的容器化外掛程式擲回錯誤？](#containerization-error)
+ [為什麼我在容器化期間看不到我的變數？](#containerization-no-variables)
+ [我可以將哪些變數新增至我的容器做為輸入？](#add-variables-to-container)
+ [如何將容器輸出設定為後續分析的輸入？](#containerization-subsequent-analysis)
+ [為什麼我的容器資料集會失敗？](#container-dataset-fails)

## 如何知道我的訊息是否進入 AWS IoT Analytics？
<a name="getting-data"></a>

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

```
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 儲存貯體中。

## 為什麼我的管道遺失訊息？ 我該如何修正這個問題？
<a name="pipeline-no-data"></a>
+ 活動收到無效的 JSON 輸入：

  除了 Lambda 活動之外，所有活動都特別需要有效的 JSON 字串做為輸入。如果活動收到的 JSON 無效，則訊息會被捨棄，無法進入資料存放區。請確定您擷取有效的 JSON 訊息至服務。若是二進位輸入，請確保您管道中的第一個活動是 Lambda 活動，它可將二進位資料轉換為有效的 JSON，然後再傳遞給下一個活動或儲存到資料存放區。如需詳細資訊，請參閱 [Lambda 函數範例 2](https://docs.aws.amazon.com/iotanalytics/latest/userguide/pipeline-activities.html#aws-iot-analytics-pipeline-activities-lambda-ex2)。
+ 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 活動的定義不正確：

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

## 為什麼我的資料存放區中沒有資料？
<a name="datastore-no-data"></a>
+ 資料擷取和資料可供使用之間存在延遲：

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

  確定您未刪除管道中的訊息。(請參閱上一個問題和回覆。)
+ 您的資料集查詢不正確：

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

## 為什麼我的資料集只顯示 `__dt`？
<a name="dataset-no-data"></a>
+ 此欄由服務自動新增，並包含資料的大約擷取時間。它可用來最佳化您的查詢。如果您的資料集不包含此項目，請參閱上一個問題和回應。

## 如何為資料集完成所驅動的事件編寫程式碼？
<a name="event-driven-dataset"></a>
+ 您必須根據 `describe-dataset`命令設定輪詢，以檢查具有特定時間戳記的資料集狀態是否為 **SUCCEEDED**。

## 如何正確設定筆記本執行個體以使用 AWS IoT Analytics？
<a name="configure-notebook-instance"></a>

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

1. 前往 SageMaker AI 主控台並建立筆記本執行個體。

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

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

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

1. 按一下**新增內嵌政策**，選擇 **IoTAnalytics** 做為服務，然後在讀取許可下，選取 **GetDatasetContent**。

1. 檢閱政策、新增政策名稱，然後create (建立)政策。新建立的角色現在具有讀取資料集的政策許可 AWS IoT Analytics。

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

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

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

## 為什麼無法在執行個體中建立筆記本？
<a name="notebook-instance"></a>
+ 請務必使用正確的 IAM 政策來建立筆記本執行個體。(按照上一個問題中的步驟進行。)
+ 確定筆記本執行個體處於「In Service」(服務中) 狀態。當您建立執行個體時，它會以「待定」狀態開始。通常大約需要 5 分鐘時間，才會進入「In Service」(服務中) 狀態。如果筆記本執行個體在大約五分鐘後進入「失敗」狀態，請再次檢查許可。

## 為什麼我在 Quick Suite 中看不到我的資料集？
<a name="sq-no-dataset"></a>

Quick Suite 可能需要讀取 AWS IoT Analytics 資料集內容的許可。若要提供許可，請遵循下列步驟。

1. 選擇 Quick Suite 右上角的帳戶名稱，然後選擇**管理 QuickSight**。

1. 在左導覽窗格中，選擇**安全和許可**。在 **QuickSight 存取 AWS 服務**下，驗證是否已授予存取權 AWS IoT Analytics。

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

   1. 選擇旁邊的方塊，**AWS IoT Analytics**然後選取**更新**。這提供 Quick Suite 讀取資料集內容的許可。

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

請務必為 AWS IoT Analytics 和 Quick Suite 選擇相同的 AWS 區域。否則，您可能無法存取 AWS 資源。如需支援的區域清單，請參閱 中的[AWS IoT Analytics 端點和配額](https://docs.aws.amazon.com/general/latest/gr/iot-analytics.html)，以及 [Quick Suite 端點和配額](https://docs.aws.amazon.com/general/latest/gr/quicksight.html)*Amazon Web Services 一般參考*。

## 為什麼我在現有的 Jupyter 筆記本上看不到容器化按鈕？
<a name="containerization-jupyter-notebook"></a>
+ 這是因為缺少 AWS IoT Analytics 容器化外掛程式所致。如果您在 2018 年 8 月 23 日之前建立 SageMaker 筆記本執行個體，則需要依照[容器化筆記本](https://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-containerize)中的指示手動安裝外掛程式。
+ 如果您在從 AWS IoT Analytics 主控台建立或手動安裝 SageMaker 筆記本執行個體後沒有看到容器化按鈕，請聯絡 AWS IoT Analytics 技術支援。

## 為什麼我的容器化外掛程式安裝失敗？
<a name="containerization-installation-fails"></a>
+ 外掛程式安裝失敗通常是因為 SageMaker 筆記本執行個體缺少許可。有關筆記本執行個體的必要許可，請參閱[許可](https://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-permissions)，然後將必要的許可新增至筆記本執行個體角色。如果問題仍然存在，請從 AWS IoT Analytics 主控台建立新的筆記本執行個體。
+ 如果在安裝外掛程式期間出現以下訊息，您可以安全地忽略日誌中的以下訊息：「每次筆記本 （或其他應用程式） 載入時，在瀏覽器中初始化此擴充功能。」

## 為什麼我的容器化外掛程式擲回錯誤？
<a name="containerization-error"></a>
+ 有多個原因會造成容器化失敗並產生錯誤。在容器化您的筆記本之前，請確認您使用正確的核心。容器化的核心會以「Containerized」字首開頭。
+ 由於外掛程式會在 ECR 儲存庫建立和儲存 Docker 影像，請確認您的筆記本執行個體角色具有足夠的許可，以讀取、列出及建立 ECR 儲存庫。有關筆記本執行個體的必要許可，請參閱[許可](https://docs.aws.amazon.com/iotanalytics/latest/userguide/automate.html#aws-iot-analytics-automate-permissions)，然後將必要的許可新增至筆記本執行個體角色。
+ 同時確認儲存庫的名稱符合 ECR 的規定。ECR 儲存庫名稱必須以字母開頭，並且只能包含小寫字母、數字、連字號、底線和斜線。
+ 如果容器化程序失敗並顯示錯誤：「此執行個體沒有足夠的可用空間來執行容器化」，請嘗試使用較大的執行個體來解決問題。
+ 如果您看到連線錯誤或映像建立錯誤，請再試一次。如果問題仍存在，請重新啟動執行個體並安裝最新版本的外掛程式。

## 為什麼我在容器化期間看不到我的變數？
<a name="containerization-no-variables"></a>
+  AWS IoT Analytics 使用「容器化」核心執行筆記本後，容器化外掛程式會自動辨識筆記本中的所有變數。使用容器化核心之一來執行筆記本，然後執行容器化。

## 我可以將哪些變數新增至我的容器做為輸入？
<a name="add-variables-to-container"></a>
+ 您可以將您要在執行時間修改值的任何變數新增至您的容器做為輸入。這可讓您執行具有不同參數的相同容器，這些參數需要在建立資料集時提供。 AWS IoT Analytics 容器化 Jupyter 外掛程式透過自動識別筆記本中的變數並將其作為容器化程序的一部分提供，來簡化此程序。

## 如何將容器輸出設定為後續分析的輸入？
<a name="containerization-subsequent-analysis"></a>
+ 每次執行您容器的資料集時，就會建立可存放已執行之成品的特定 S3 位置。若要存取此輸出位置，請在您的容器資料集中建立 `outputFileUriValue` 類型的變數。此變數的值應該是 S3 路徑，它用於存放額外的輸出檔。若要在後續執行中存取這些儲存的成品，您可以使用 `getDatasetContent` API 並挑選後續執行所需的適當輸出檔案。

## 為什麼我的容器資料集會失敗？
<a name="container-dataset-fails"></a>
+ 請確定您將正確的 傳遞`executionRole`至容器資料集。的信任政策`executionRole`必須同時包含 `iotanalytics.amazonaws.com`和 `sagemaker.amazonaws.com`。
+ 如果您看到 `AlgorithmError`是失敗的原因，請嘗試手動偵錯您的容器程式碼。如果容器程式碼有錯誤或執行角色沒有執行容器的許可，就會發生此錯誤。如果您使用 AWS IoT Analytics Jupyter 外掛程式容器化，請使用與 containerDataset 的 executionRole 相同的角色建立新的 SageMaker 筆記本執行個體，並嘗試手動執行筆記本。如果容器是在 Jupyter 外掛程式之外建立的，請嘗試手動執行程式碼，並限制對於 executionRole 的許可。