CloudWatch Logs
CloudWatch Logs (cloudwatchLogs) 操作将数据发送到 Amazon CloudWatch Logs。您可以使用 batchMode 在一条消息中上载多条设备日志记录并为其加上时间戳。您还可以指定操作要向其发送数据的日志组。
要求
此规则操作具有以下要求:
-
Amazon IoT 可以承担以执行
logs:CreateLogStream、logs:DescribeLogStreams、和logs:PutLogEvents操作的 IAM 角色。有关更多信息,请参阅 向 Amazon IoT 规则授予所需的访问权限。在 Amazon IoT 控制台中,您可以选择或创建一个角色以允许 Amazon IoT 执行此规则操作。
-
如果您使用客户自主管理型 Amazon KMS key(KMS 密钥)加密 CloudWatch Logs 中的日志数据,服务必须具有代表调用方使用 KMS 密钥的权限。有关更多信息,请参阅 Amazon CloudWatch Logs 用户指南中的使用 Amazon KMS 加密 CloudWatch Logs 中的日志数据。
batchMode 的 MQTT 消息格式要求
如果您在 batchMode 关闭的情况下使用 CloudWatch Logs 规则操作,则没有 MQTT 消息格式要求。(注意:batchMode 参数的默认值为 false。) 但是,如果您在 batchMode 处于开启状态(参数值为 true)时使用 CloudWatch Logs 规则操作,则包含设备端日志的 MQTT 消息必须格式化为包含时间戳和消息有效载荷。注意:timestamp 表示事件发生的时间,以自 1970 年 1 月 1 日 00:00:00 UTC 之后的毫秒数表示。
以下为发布格式的示例:
[
{"timestamp": 1673520691093, "message": "Test message 1"},
{"timestamp": 1673520692879, "message": "Test message 2"},
{"timestamp": 1673520693442, "message": "Test message 3"}
]
根据生成设备端日志的方式,在发送这些日志之前,可能需要对其进行筛选和重新格式化,以符合此要求。有关更多信息,请参阅 MQTT 消息有效载荷。
无论 batchMode 参数如何,message 内容都必须符合 Amazon IoT 消息大小限制。有关更多信息,请参阅 Amazon IoT Core 端点和限额。
参数
使用此操作创建 Amazon IoT 规则时,您必须指定以下信息:
示例
下面的 JSON 示例介绍如何在 Amazon IoT 规则中定义 CloudWatch Logs 操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "cloudwatchLogs": { "logGroupName": "IotLogs", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_cw", "batchMode": false } } ] } }
另请参阅
-
Amazon CloudWatch Logs 用户指南中的什么是 Amazon CloudWatch Logs?