配置 AWS IoT 日志记录 - AWS IoT
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置 AWS IoT 日志记录

您必须使用 AWS IoT 控制台、CLI 或 API 启用日志记录,然后才能监控和记录 AWS IoT 活动。

您可以为所有 AWS IoT 或仅为特定事物组启用日志记录。您可以使用 AWS IoT 控制台、CLI 或 API 配置 AWS IoT 日志记录;但是,必须使用 CLI 或 API 为特定事物组配置日志记录。

在考虑如何配置 AWS IoT 日志记录时,除非另有指定,否则默认日志记录配置将确定如何记录 AWS IoT 活动。首先,您可能要获取默认日志级别INFODEBUG 的详细日志。查看初始日志后,您可以将默认日志级别更改为较低的详细程度级别(如 WARNERROR),并对可能需要更多关注的资源设置更详细的资源特定日志级别。日志级别可随时更改。

配置日志记录角色和策略

在 AWS IoT 中启用日志记录之前,您必须创建一个 IAM 角色和一个策略,用于向 AWS 授予代表您监控 AWS IoT 活动的权限。

注意

在启用 AWS IoT 日志记录之前,请务必了解 CloudWatch Logs 访问权限。拥有 CloudWatch Logs 访问权限的用户能够从您的设备查看调试信息。有关更多信息,请参阅 Amazon CloudWatch Logs 的身份验证和访问控制

创建日志记录角色

使用 IAM 控制台创建日志记录角色。

使用 IAM 控制台创建日志记录角色

  1. 从导航窗格中选择角色,然后选择创建角色

  2. Select type of trusted entity (选择受信任实体的类型) 下,选择 AWS Service (AWS 服务)IoT

  3. 选择您的使用案例下,选择 IoT,然后选择下一步:权限

  4. 在显示自动附加到服务角色的策略的页面上,选择下一步:标签

  5. 选择下一步:审核

  6. 输入角色的 Role name (角色名称)Role description (角色描述),然后选择 Create role (创建角色)

  7. Role (角色) 列表中,找到您刚创建的角色,打开该角色,然后复制 Role ARN (角色 ARN) (<logging-role-arn>) 以供稍后使用。

日志记录角色策略

以下策略文档提供了角色策略和信任策略,借助这些策略,AWS IoT 可代表您向 CloudWatch 提交日志条目。

注意

在您创建日志记录角色时已为您创建这些文档。

角色策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy" ], "Resource": [ "*" ] } ] }

信任策略:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

在 AWS IoT(控制台)中配置默认日志记录

本节介绍如何使用 AWS IoT 控制台为所有 AWS IoT 配置日志记录。要仅为特定事物组配置日志记录,您必须使用 CLI 或 API。有关为特定事物组配置日志记录的信息,请参阅在 AWS IoT 中配置资源特定的日志记录 (CLI)

使用 AWS IoT 控制台为所有 AWS IoT 配置默认日志记录

  1. 登录 AWS IoT 控制台。有关更多信息,请参阅 登录到 AWS IoT 控制台

  2. 在左侧导航窗格中,选择 Settings (设置)。在 Settings (设置) 页面的 Logs (日志) 部分,选择 Edit (编辑)

    Logs (日志) 部分显示 AWS IoT 使用的日志记录角色和详细程度级别。

  3. Configure role setting (配置角色设置) 页面上,选择 Level of verbosity (详细程度级别),用于描述要显示在 CloudWatch 日志中的日志条目的 level of detail (详细信息级别)

  4. 选择 Select (选择) 以指定您之前在创建日志记录角色中创建的角色,或选择 Create Role (创建角色) 以创建用于日志记录的新角色。

  5. 单击 Update (更新) 以保存您的更改。

启用日志记录后,请访问在 CloudWatch 控制台中查看 AWS IoT 日志以了解有关查看日志条目的更多信息。

在 AWS IoT 中配置默认日志记录 (CLI)

本节介绍如何使用 CLI 为 AWS IoT 配置全局日志记录。

注意

您需要提供要使用角色的 Amazon 资源名称 (ARN)。如果需要创建用于日志记录的角色,请参阅创建日志记录角色,然后继续操作。

用于调用 API 的委托人对于您的日志记录角色必须具有传递角色权限

您也可以使用 API 执行此过程,即使用 AWS API 中与此处显示的 CLI 命令对应的方法。

使用 CLI 为 AWS IoT 配置默认日志记录

  1. 使用 set-v2-logging-options 命令为您的账户设置日志记录选项。

    aws iot set-v2-logging-options \ --role-arn <logging-role-arn> \ --default-log-level <log-level>

    其中:

    --role-arn

    向 AWS IoT 授予在 CloudWatch Logs 中写入日志的权限的角色 ARN。

    --default-log-level

    要使用的日志级别。有效值为:ERRORWARNINFODEBUGDISABLED

    --no-disable-all-logs

    启用所有 AWS IoT 日志记录的可选参数。使用此参数可在当前禁用日志记录时启用日志记录。

    --disable-all-logs

    禁用所有 AWS IoT 日志记录的可选参数。使用此参数可在当前启用日志记录时禁用日志记录。

  2. 使用 get-v2-logging-options 命令获取当前日志记录选项。

    aws iot get-v2-logging-options

启用日志记录后,请访问在 CloudWatch 控制台中查看 AWS IoT 日志以了解有关查看日志条目的更多信息。

注意

AWS IoT 会继续支持使用较早的命令(set-logging-optionsget-logging-options)在您的账户中设置和获取全局日志记录。请注意,使用这些命令时,生成的日志将包含纯文本而不是 JSON 负载,并且日志记录延迟通常会更高。将不会再对这些较早命令的实施进行更多改进。建议您使用“v2”版本来配置日志记录选项,如果可能,还请更改使用早期版本的传统应用程序。

在 AWS IoT 中配置资源特定的日志记录 (CLI)

本节介绍如何使用 CLI 为 AWS IoT 配置资源特定的日志记录。可通过资源特定的日志记录为特定事物组指定日志记录级别。

事物组可包含其他事物组以创建分层关系。此过程介绍如何配置单个事物组的日志记录。您可以将此过程应用于层次结构中的父事物组,以配置层次结构中所有事物组的日志记录。您也可以将此过程应用于子事情组,以覆盖其父级的日志记录配置。

注意

您需要提供要使用角色的 Amazon 资源名称 (ARN)。如果需要创建用于日志记录的角色,请参阅创建日志记录角色,然后继续操作。

用于调用 API 的委托人对于您的日志记录角色必须具有传递角色权限

您也可以使用 API 执行此过程,即使用 AWS API 中与此处显示的 CLI 命令对应的方法。

使用 CLI 为 AWS IoT 配置资源特定的日志记录

  1. 使用 set-v2-logging-options 命令为您的账户设置日志记录选项。

    aws iot set-v2-logging-options \ --role-arn <logging-role-arn> \ --default-log-level <log-level>

    其中:

    --role-arn

    向 AWS IoT 授予在 CloudWatch Logs 中写入日志的权限的角色 ARN。

    --default-log-level

    要使用的日志级别。有效值为:ERRORWARNINFODEBUGDISABLED

    --no-disable-all-logs

    启用所有 AWS IoT 日志记录的可选参数。使用此参数可在当前禁用日志记录时启用日志记录。

    --disable-all-logs

    禁用所有 AWS IoT 日志记录的可选参数。使用此参数可在当前启用日志记录时禁用日志记录。

  2. 使用 set-v2-logging-level 命令为事物组配置资源特定的日志记录。

    aws iot set-v2-logging-level \ --log-target targetType=THING_GROUP,targetName=<thing_group_name> \ --log-level <log_level>
    --log-target

    您要配置日志记录的资源的类型和名称。target_type 值必须为 THING_GROUP。log-target 参数值可以是文本(如前面的命令示例所示),也可以是 JSON 字符串,如以下示例所示。

    aws iot set-v2-logging-level \ --log-target '{"targetType": "THING_GROUP","targetName": "<thing_group_name>"}' \ --log-level <log_level>
    --log-level

    为指定资源生成日志时使用的日志记录级别。有效值为:DEBUGINFOERRORWARNDISABLED

  3. 使用 list-v2-logging-levels 命令列出当前配置的日志记录级别。

    aws iot list-v2-logging-levels
  4. 使用 delete-v2-logging-level 命令删除资源特定的日志记录级别。

    aws iot delete-v2-logging-level \ --targetType "THING_GROUP" \ --targetName "<thing_group_name>"
    --targetType

    target_type 值必须为 THING_GROUP

    --targetName

    要删除日志记录级别的事物组的名称。

启用日志记录后,请访问在 CloudWatch 控制台中查看 AWS IoT 日志以了解有关查看日志条目的更多信息。

日志级别

这些日志级别确定记录的事件,并应用于默认日志级别和资源特定的日志级别。

ERROR

导致操作失败的任何错误。

日志仅包含 ERROR 信息。

WARN

可能导致系统中出现不一致问题,但不会导致操作失败的所有情况。

日志包括 ERROR 和 WARN 信息。

INFO

有关事物流的高级别信息。

日志包括 INFO、ERROR 和 WARN 信息。

DEBUG

可能有助于调试问题的信息。

日志包括 DEBUG、INFO、ERROR 和 WARN 信息。

DISABLED

所有日志记录均处于禁用状态。