配置 AWS IoT 日志记录 - AWS IoT Core

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

配置 AWS IoT 日志记录

您必须使用启用日志记录 AWS IoT 控制台CLI、或API在您可以监控和记录之前 AWS IoT 活动。

您可以为所有内容启用日志记录 AWS IoT 或者仅限特定的事物组。你可以配置 AWS IoT 使用进行登录 AWS IoT 控制台CLI、或API;但是,您必须使用CLI或API来配置特定事物组的日志记录。

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

本主题介绍云端登录 AWS IoT。 有关设备端日志记录和监控的信息,请参阅将设备端日志上传到。 CloudWatch

有关日志和监控的信息 AWS IoT Greengrass,请参阅中的日志和监控 AWS IoT Greengrass。 截至2023年6月30日, AWS IoT Greengrass 核心软件已迁移到 AWS IoT Greengrass Version 2.

配置日志记录角色和策略

在启用登录功能之前 AWS IoT,您必须创建一个IAM角色和一个提供以下内容的策略 AWS 监视权限 AWS IoT 代表您进行的活动。您还可以在的 “日志” 部分生成具有所需策略的IAM角色 AWS IoT 控制台

注意

在启用之前 AWS IoT logging,请确保您了解 CloudWatch 日志访问权限。有权访问 CloudWatch 日志的用户可以从您的设备中查看调试信息。有关更多信息,请参阅 Amazon CloudWatch 日志的身份验证和访问控制

如果您预计会出现高流量模式 AWS IoT Core 由于进行负载测试,请考虑关闭 IoT 日志以防止限制。如果检测到高流量,我们的服务可能会禁用您账户中的日志记录。

以下显示了如何为其创建日志记录角色和策略 AWS IoT Core 资源的费用。

创建日志记录角色

要创建日志记录角色,请打开IAM控制台的角色中心并选择创建角色

  1. “选择可信实体” 下,选择 AWS 服务。然后在 Use case(用例)下,选择 IoT。如果您看不到物联网,请输入并从用例中搜索物联网以查找其他 AWS 服务:下拉菜单。选择下一步

  2. Add permissions(添加权限)页面上,您将看到自动附加到服务角色的策略。选择下一步

  3. Name, review, and create(命名、检查和创建)页面上,为此角色输入 Role name(角色名称)和 Role description(角色描述),然后选择 Create role(创建角色)。

  4. 角色列表中,找到您创建的角色,将其打开,然后复制该角色 ARN (logging-role-arn) 在你时使用在中配置默认日志记录 AWS IoT (控制台)

日志记录角色策略

以下策略文件提供了允许的角色策略和信任策略 AWS IoT 代表您向提交日志条目。 CloudWatch 如果你也允许 AWS IoT Core LoRaWAN要提交日志条目,您将看到为您创建的策略文档,其中记录了这两项活动。

注意

在您创建日志记录角色时已为您创建这些文档。这些文件有变量,$ {分区}, $ {region},以及 ${accountId},必须将其替换为自己的值。

角色策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy", "iot:GetLoggingOptions", "iot:SetLoggingOptions", "iot:SetV2LoggingOptions", "iot:GetV2LoggingOptions", "iot:SetV2LoggingLevel", "iot:ListV2LoggingLevels", "iot:DeleteV2LoggingLevel" ], "Resource": [ "arn:${partition}:logs:${region}:${accountId}:log-group:AWSIotLogsV2:*" ] } ] }

只允许记录的信任策略 AWS IoT Core 活动:

{ "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 console。有关更多信息,请参阅 打开 AWS IoT Console

  2. 在左侧导航窗格中,选择 设置。在 Settings(设置)页面的 Logs(日志)部分中,选择 Manage logs(管理日志)。

    “日” 页面显示所有用户使用的日志记录角色和详细程度 AWS IoT.

    显示日志角色和详细级别的 “日志” 页面。
  3. Logs(日志)页面上,选择 Select role(选择角色)以指定您在 创建日志记录角色 中创建的角色,或选择 Create Role(创建角色)以创建用于日志记录的新角色。

    显示日志角色和日志级别的 “日志” 页面。
  4. 选择描述要在日志中显示的日志条目的详细级别的 CloudWatch 日志级别。

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

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

配置默认登录 AWS IoT (CLI)

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

注意

您需要要使用的角色的 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

    授予ARN的角色 AWS IoT 允许在日志中写入您的 CloudWatch 日志。

    --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

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

注意

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

配置特定于资源的登录 AWS IoT (CLI)

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

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

除了事物组之外,您还可以录入目标,例如设备的客户端 ID、源 IP 和主体 ID。

注意

您需要要使用的角色的 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

    授予ARN的角色 AWS IoT 允许在日志中写入您的 CloudWatch 日志。

    --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 | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID。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

    aws iot set-v2-logging-level \ --log-target targetType=CLIENT_ID,targetName=ClientId1 \ --log-level DEBUG
  3. 使用 list-v2-logging-levels 命令列出当前配置的日志记录级别。

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

    aws iot delete-v2-logging-level \ --target-type "THING_GROUP" \ --target-name "thing_group_name"
    aws iot delete-v2-logging-level \ --target-type=CLIENT_ID --target-name=ClientId1
    --targetType

    target_type 值必须是下列项之一:THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID

    --targetName

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

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

日志级别

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

ERROR

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

日志仅包含ERROR信息。

WARN

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

日志包括ERROR和WARN信息。

INFO

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

日志包括INFOERROR、和WARN信息。

DEBUG

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

日志包括DEBUG、INFOERROR、和WARN信息。

DISABLED

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