Amazon IoT Analytics 故障排除 - Amazon IoT Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon IoT Analytics 故障排除

请参阅以下部分,以解决错误,并查找解决问题的可能解决方案Amazon IoT Analytics.

我如何知道我的消息是否进入Amazon 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 消息提取到服务中。在使用二进制输入时,确保管道中的第一个活动是将二进制数据转换为有效 JSON 的 Lambda 活动,然后再将其传递到下一个活动或者存储到数据存储中。有关更多信息,请参阅 。Lambda 函数示例 2.

  • Lambda 活动调用的 Lambda 函数权限不足:

    确保对 Lambda 活动中的每个 Lambda 函数具有权限,可以从Amazon IoT Analytics服务。您可以使用以下Amazon CLI命令授予权限。

    aws lambda add-permission --function-name <name> --region <region> --statement-id <id> --principal iotanalytics.amazonaws.com --action lambda:InvokeFunction
  • 不正确地定义了某个筛选条件或 removeAttribute 活动:

    确保定义(如果有)filter或者removeAttribute活动正确无误。如果您筛选出了某条消息或者从某条消息中删除了所有属性,该消息不会添加到数据存储。

为什么我的数据存储中没有任何数据?

  • 数据提取与数据可用之间存在延迟:

    将数据提取到通道中之后,可能需要几分钟时间,然后数据才会在数据存储中可用。该时间因管道活动数以及管道中的任何自定义 Lambda 活动的定义而异。

  • 管道正将消息筛选掉:

    确保您未在管道中丢弃消息。(请参阅前面的问题和答复。)

  • 数据集查询不正确:

    确保从数据存储生成数据集的查询正确无误。从查询中删除任何不必要的筛选条件,确保数据可以进入数据存储。

为什么我的数据集只显示__dt?

  • 此列由服务自动添加,并包含数据的大致提取时间。它可用于优化查询。如果数据集中除此之外不含任何其他内容,请参阅前面的问题和答复。

如何编写由数据集完成操作驱动的事件代码?

  • 您必须根据describe-dataset命令检查具有特定时间戳的数据集的状态是否为CONTENT.

如何正确配置笔记本实例来使用Amazon IoT Analytics?

按照以下步骤确保您用于创建笔记本实例的 IAM 角色具有所需权限:

  1. 转到 SageMaker 控制台并创建笔记本实例。

  2. 填写详细信息,然后选择 create a new role (创建新角色)。记录角色 ARN。

  3. 创建笔记本实例。这还会创建 SageMaker 可使用的角色。

  4. 转到 IAM 控制台并修改新创建的 SageMaker 角色。当您打开该角色时,它应具有一个托管策略。

  5. 单击添加内联策略中,选择IoTAnalytics作为服务,然后在读取权限下,选择GetDatasetContent.

  6. 检查策略,添加策略名称,然后对它选择 create (创建)。新创建的角色现在具有策略权限,可以从Amazon IoT Analytics.

  7. 转到Amazon IoT Analytics控制台并在笔记本实例中创建笔记本。

  8. 等待笔记本实例进入“In Service”(正在服务) 状态。

  9. 选择 create notebooks (创建笔记本),然后选择您创建的笔记本实例。这将使用可访问您的数据集的选定模板创建 Jupyter 笔记本。

为什么我无法在实例中创建笔记本?

  • 确保您使用正确的 IAM 策略创建了笔记本实例。(按照上一个问题中的步骤操作。)

  • 请确保笔记本实例处于“In Service”(正在服务) 状态。在您创建实例时,它开始处于 “Pending” (待处理) 状态。通常大约需要 5 分钟进入“In Service”(正在服务) 状态。如果笔记本实例在大约 5 分钟之后进入 “Failed” (失败) 状态,请重新检查权限。

为什么我在 Amazon QuickSight 中看不到我的数据集?

重要

Amazon QuickSight 不在中国(北京)区域提供。有关支持的区域列表,请参阅Amazon QuickSight 终端节点和配额中的Amazon Web Services 一般参考.

Amazon QuickSight 可能需要获得许可才能阅读Amazon IoT Analytics数据集内容。要授予权限,请按照以下步骤操作。

  1. 在 Amazon QuickSight 右上角选择您的账户名称,然后选择管理 QuickSight.

  2. In 左侧导航窗格选择安全性和权限. UNDERQuickSight 访问Amazon服务,请验证是否已授予Amazon IoT Analytics.

    1. 如果Amazon IoT Analytics没有访问权限,请选择添加或删除.

    2. 选择Amazon IoT Analytics,然后选择更新. 这将授予 Amazon QuickSight 读取您的数据集内容的权限。

  3. 请重试以可视化您的数据。

确保选择相同的Amazon两者的区域Amazon IoT Analytics和 Amazon QuickSight。否则,您可能会遇到问题,访问Amazon资源的费用。有关支持的区域列表,请参阅Amazon IoT Analytics终端节点和配额Amazon QuickSight 终端节点和配额中的Amazon Web Services 一般参考.

为什么我在现有的 Jupyter 笔记本上看不到容器化按钮?

  • 这是由缺少Amazon IoT Analytics容器化插件。如果您的 SageMaker 笔记本实例是在 2018 年 8 月 23 日之前创建的,则需按照容器化笔记本.

  • 如果您 SageMaker 从Amazon IoT Analytics控制台或手动安装,请联系Amazon IoT Analytics技术支持。

为什么我的容器化插件安装失败?

  • 通常,插件安装失败是因为 SageMaker 笔记本实例缺少权限。有关笔记本实例需要的权限,请参阅权限以及向笔记本实例角色添加所需权限。如果问题仍然存在,请从Amazon IoT Analytics控制台。

  • 如果安装插件期间出现以下消息,您可以安全地忽略日志中的这一消息:每当笔记本 (或其他应用) 加载时,在浏览器中初始化此扩展。

为什么我的容器化插件抛出错误?

  • 容器化失败并生成错误的原因有很多。在进行笔记本容器化之前,确保您使用的是正确的内核。容器化内核以“Containerized”前缀开头。

  • 由于插件会在 ECR 存储库中创建并保存一个 Docker 映像,请确保您的笔记本实例角色有足够权限来读取、列出和创建 ECR 存储库。有关笔记本实例需要的权限,请参阅权限以及向笔记本实例角色添加所需权限。

  • 此外,还要确保存储库的名称符合 ECR 要求。ECR 存储库名称必须以字母开头,并且只能包含小写字母、数字、连字符、下划线和正斜杠。

  • 如果容器化过程失败并显示错误 “This instance is free space to run containerization” (此实例用于运行容器化的可用空间不足),请尝试使用更大的实例来解决问题。

  • 如果显示连接错误或映像创建错误,请重试。如果问题仍然存在,请重新启动实例并安装最新的插件版本。

为什么我在容器化期间看不到我的变量?

  • 这些区域有:Amazon IoT Analytics容器化插件在运行具有 “容器化” 内核的笔记本后,自动识别笔记本中的所有变量。使用其中一个容器化内核运行笔记本,然后执行容器化。

我可以将哪些变量作为输入添加到我的容器中?

  • 您可以将要在运行时期间修改其值的任何变量作为输入添加到容器中。这样,您就可以使用需要在创建数据集时提供的不同参数来运行相同的容器。这些区域有:Amazon IoT Analytics容器化 Jupyter 插件通过在笔记本中自动识别变量并使其在容器化过程中可用来简化此过程。

如何将我的容器输出设置为后续分析的输入?

  • 每次运行容器数据集时,都会创建一个可存储已执行构件的特定 S3 位置。要访问此输出位置,请在您的容器数据集中创建一个类型为 outputFileUriValue 的变量。该变量的值应该是用于存储其他输出文件的 S3 路径。要在后续运行时访问这些已保存的构件,您可以使用getDatasetContentAPI 并选取后续运行所需的相应输出文件。

为什么我的容器数据集失败?

  • 确保传递正确的executionRole添加到容器数据集。的信任策略executionRole必须同时包含iotanalytics.amazonaws.comsagemaker.amazonaws.com.

  • 如果您看到AlgorithmError作为失败原因,请尝试手动调试容器代码。如果容器代码中有错误或执行角色无权执行容器,则会出现这种情况。如果您通过使用Amazon IoT AnalyticsJupyter 插件,请创建一个与 containerDataset 的 executionRole 具有相同角色的新 SageMaker 笔记本实例,然后尝试手动运行该笔记本。如果容器是在 Jupyter 插件外创建的,请尝试手动运行代码并限制 executionRole 的权限。