

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

# CloudWatch 日志
<a name="cloudwatch-logs-rule-action"></a>

日 CloudWatch 志 (`cloudwatchLogs`) 操作将数据发送到 Amazon CloudWatch 日志。您可以使用 `batchMode` 在一条消息中上载多条设备日志记录并为其加上时间戳。您还可以指定操作要向其发送数据的日志组。

## 要求
<a name="cloudwatch-logs-rule-action-requirements"></a>

此规则操作具有以下要求：
+  Amazon IoT 可以代入执行`logs:CreateLogStream``logs:DescribeLogStreams`、和`logs:PutLogEvents`操作的 IAM 角色。有关更多信息，请参阅 [授予 Amazon IoT 规则所需的访问权限](iot-create-role.md)。

  在 Amazon IoT 控制台中，您可以选择或创建 Amazon IoT 允许执行此规则操作的角色。
+ 如果您使用客户托管 Amazon KMS key （KMS 密钥）对日志中的 CloudWatch 日志数据进行加密，则该服务必须有权代表调用方使用 KMS 密钥。有关更多信息，请参阅 *Amazon CloudWatch 日志用户指南 Amazon KMS中的使用加密 CloudWatch 日志*[中的日志数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。

## `batchMode` 的 MQTT 消息格式要求
<a name="cloudwatch-logs-rule-action-message-format"></a>

如果您在`batchMode`关闭的情况下使用 CloudWatch 日志规则操作，则没有 MQTT 消息格式要求。（注意：`batchMode` 参数的默认值为 `false`。） 但是，如果您在`batchMode`开启的情况下使用 CloudWatch 日志规则操作（参数值为`true`），则包含设备端日志的 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 消息有效载荷](https://docs.amazonaws.cn/iot/latest/developerguide/topicdata.html)。

与`batchMode`参数无关，`message`内容必须符合 Amazon IoT 消息大小限制。有关更多信息，请参阅 [Amazon IoT Core 终端节点和限额](https://docs.amazonaws.cn/general/latest/gr/iot-core.html)。

## 参数
<a name="cloudwatch-logs-rule-action-parameters"></a>

使用此操作创建 Amazon IoT 规则时，必须指定以下信息：

`logGroupName`  
操作发送数据的 CloudWatch 日志组。  
仅支持[替换模板](iot-substitution-templates.md)：API 且 Amazon CLI 仅支持

`roleArn`  
允许访问 CloudWatch 日志组的 IAM 角色。有关更多信息，请参阅 [要求](#cloudwatch-logs-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

（可选）`batchMode`  
 表示是否将批量日志记录提取并上传到 CloudWatch。值包括 `true` 或 `false`（默认值）。有关更多信息，请参阅 [要求](#cloudwatch-logs-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

## 示例
<a name="cloudwatch-logs-rule-action-examples"></a>

以下 JSON 示例在 Amazon IoT 规则中定义了 “ CloudWatch 日志” 操作。

```
{
    "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                    
                }
            }
        ]
    }
}
```

## 另请参阅
<a name="cloudwatch-logs-rule-action-see-also"></a>
+ [什么是 Amazon CloudWatch 日志？](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/) 在 *Amazon CloudWatch 日志用户指南*中