

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

CloudWatch Logs (`cloudwatchLogs`) 動作會將資料傳送至 Amazon CloudWatch Logs。您可以使用 `batchMode`，以一則訊息上傳多個裝置日誌記錄並加上時間戳記。您也可以指定動作傳送資料的日誌群組。

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

此規則動作具有下列需求：
+  AWS IoT 可以擔任以執行 `logs:CreateLogStream`、 `logs:DescribeLogStreams`和 `logs:PutLogEvents`操作的 IAM 角色。如需詳細資訊，請參閱[授予 AWS IoT 規則所需的存取權](iot-create-role.md)。

  在 AWS IoT 主控台中，您可以選擇或建立角色， AWS IoT 以允許 執行此規則動作。
+ 如果您使用客戶受管 AWS KMS key (KMS 金鑰） 來加密 CloudWatch Logs 中的日誌資料，則服務必須具有代表發起人使用 KMS 金鑰的許可。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中[使用 AWS KMS加密 CloudWatch Logs 中的日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。

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

如果您在關閉 `batchMode` 的情況下使用 CloudWatch Logs 規則動作，則不需要 MQTT 訊息格式設定。(注意：`batchMode` 參數的預設值為 `false`。) 不過，如果您在 `batchMode` 開啟的情況下使用 CloudWatch Logs 規則動作 (參數值為 `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.aws.amazon.com/iot/latest/developerguide/topicdata.html)。

與 `batchMode` 參數無關，`message`內容必須符合 AWS IoT 訊息大小限制。如需詳細資訊，請參閱 [AWS IoT Core 端點和配額](https://docs.aws.amazon.com/general/latest/gr/iot-core.html)。

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

當您使用此動作建立 AWS IoT 規則時，您必須指定下列資訊：

`logGroupName`  
其動作傳送資料的 CloudWatch 日誌群組。  
僅支援[替代範本](iot-substitution-templates.md)：API 和 AWS CLI 

`roleArn`  
允許存取 CloudWatch Logs 群組的 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 範例會在 AWS 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                    
                }
            }
        ]
    }
}
```

## 另請參閱
<a name="cloudwatch-logs-rule-action-see-also"></a>
+ 《Amazon CloudWatch Logs 使用者指南》**中的[什麼是 Amazon CloudWatch Logs？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)