

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

# 为 Amazon EventBridge 事件总线配置日志
<a name="eb-event-bus-logs"></a>

您可以配置 EventBridge 为发送详细说明事件总线如何处理事件的日志，以帮助进行故障排除和调试。

您可以选择以下 Amazon 服务作为*日志目的地*，将指定事件总线的日志 EventBridge 传送到这些目的地：
+ Amazon CloudWatch 日志

  EventBridge 将日志传送到指定的 CloudWatch 日志日志组。

  使用 CloudWatch 日志将您使用的所有系统、应用程序和 Amazon 服务的日志集中到一个高度可扩展的服务中。有关更多信息，请参阅 *Amazon 日志用户指南中的使用日志组和 CloudWatch 日志*[流](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。
+ Amazon Data Firehose 

  EventBridge 将日志传送到 Firehose 传输流。

  Amazon Data Firehose 是一项完全托管的服务，用于将实时流数据传送到目的地，例如某些 Amazon 服务以及受支持的第三方服务提供商拥有的任何自定义 HTTP 终端节点或 HTTP 终端节点。有关更多信息，请参阅《Amazon Data Firehose User Guide》**中的 [Creating an Amazon Data Firehose delivery stream](https://docs.amazonaws.cn/firehose/latest/dev/basic-create.html)。
+ Amazon S3 

  EventBridge 将日志作为 Amazon S3 对象传输到指定的存储桶。

  Amazon S3 是一项对象存储服务，提供行业领先的可扩展性、数据可用性、安全性和性能。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[在 Amazon S3 中上传、下载和使用对象](https://docs.amazonaws.cn/AmazonS3/latest/userguide/uploading-downloading-objects.html)。

## 事件总线如何进行日志记录
<a name="eb-event-logs-overview"></a>

EventBridge 生成以下内容的日志：
+ 任何与事件总线上的规则相匹配的 Amazon 服务事件
+ 通过以下方法传送的任何事件（无论事件是否成功摄取或与任何规则相匹配）：
  + 来自[合作伙伴事件源](eb-saas.md)的事件
  + [从归档中重播](eb-archive.md)的事件
  + 通过 [`PutEvents`](eb-putevents.md) 发送到总线的事件

EventBridge 不记录仅匹配[托管规则](eb-rules.md#eb-rules-managed)的事件。

发送到每个选定日志目标的日志数据是相同的。

您可以通过以下方式自定义 EventBridge 发送到所选目的地的日志：
+ 您可以指定*日志级别，该级别*决定了向所选目标 EventBridge发送日志的步骤。有关更多信息，请参阅 [指定事件总线日志级别](#eb-event-bus-logs-level)。
+ 您可以指定在相关时是否 EventBridge 包含更精细的信息，包括：
  + 事件详细信息
  + 目标输入信息
  + 目标请求信息

  有关更多信息，请参阅 [在事件总线日志中包含详细数据](#eb-event-logs-data)。

### 日志传送注意事项
<a name="eb-event-logs-delivery"></a>

配置事件总线的日志记录时，请记住以下注意事项：
+ 事件总线日志记录会以最大努力进行传送。针对已正确配置了日志记录的事件总线的大多数请求会导致传送一条日志记录。因此不能保证事件总线日志记录的完整性和即时性。
+ 在某些情况下，传送事件总线日志记录本身会生成事件，然后将其发送到 EventBridge，这可能会导致日志记录传输中断。因此， EventBridge 不记录以下事件：
  + Amazon KMS `[Decrypt](https://docs.amazonaws.cn/kms/latest/APIReference/API_Decrypt.html)`以及使用客户托管密钥加密的日志记录传送到日志目标时生成`[GenerateDataKey](https://docs.amazonaws.cn/kms/latest/APIReference/API_GenerateDataKey.html)`的事件。
  + 事件总线日志传送过程中，Firehose 中生成的 `[PutRecordBatch](https://docs.amazonaws.cn/firehose/latest/APIReference/API_PutRecordBatch.html)` 事件。
+ 对于 S3 日志目标，不建议指定 EventBridge启用[事件通知的](https://docs.amazonaws.cn/AmazonS3/latest/userguide/enable-event-notifications-eventbridge.html)目标存储桶，因为这可能会导致日志传输中断。

### 日志加密
<a name="eb-event-logs-encryption"></a>

发送日志时， EventBridge 使用为事件总线指定的 KMS 密钥对每条日志记录的`detail`和`error`部分进行加密。记录一经传送，就会被解密，然后使用为日志目标指定的 KMS 密钥重新加密。

有关更多信息，请参阅 [对事件总线日志进行加密](encryption-bus-logs.md)。

### 指定事件总线日志记录权限
<a name="eb-event-logs-permission"></a>

要启用来自事件总线的日志记录，必须授予从该总线发送日志的权限。 EventBridge 添加向事件总线授**AllowVendedLogDeliveryForResource**予权限的策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ServiceLevelAccessForLogDelivery",
            "Effect": "Allow",
            "Action": [
                "events:AllowVendedLogDeliveryForResource"
            ],
            "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/my-event-bus*"
        }
    ]
}
```

------

有关更多信息，请参阅《*CloudWatch 日志用户指南》*中的[服务特定权限](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions)。

## 指定事件总线日志级别
<a name="eb-event-bus-logs-level"></a>

您可以指定 EventBridge 记录到所选日志目标的事件处理步骤的类型。

从以下详细级别中选择要包含在日志中的内容。日志级别适用于为事件总线指定的所有日志目标。每个日志级别都包含之前日志级别的步骤。
+ **OFF** — EventBridge 不发送任何日志。这是默认值。
+ **ERROR**- EventBridge 发送与事件处理和目标交付期间生成的错误相关的所有日志。
+ **信息**- EventBridge 发送与错误相关的所有日志，以及事件处理期间执行的主要步骤。
+ **TRACE** — EventBridge 发送在事件处理的所有步骤中生成的所有日志。

下表列出了每个日志级别包含的事件处理步骤。


| 步骤 | 跟踪 | 信息 | 错误 | 关闭 | 
| --- | --- | --- | --- | --- | 
|  事件摄取  | x | x |  |  | 
|  事件摄取失败  | x | x | x |  | 
|  事件已接收  | x |  |  |  | 
|  调用尝试开始  | x |  |  |  | 
|  调用尝试永久性失败  | x | x | x |  | 
|  调用尝试可重试失败  | x | x | x |  | 
|  调用尝试成功  | x |  |  |  | 
|  调用尝试受限  | x | x | x |  | 
|  调用死信队列  | x | x | x |  | 
|  调用失败  | x | x | x |  | 
|  调用开始  | x | x |  |  | 
|  调用成功  | x | x |  |  | 
|  调用限流开始  | x | x | x |  | 
|  无规则匹配  | x | x |  |  | 
|  规则已匹配   | x | x |  |  | 
|  规则匹配开始   | x |  |  |  | 

## 在事件总线日志中包含详细数据
<a name="eb-event-logs-data"></a>

您可以为指定 EventBridge ，以便在其生成的日志中包含更精细的信息。这些数据对于故障排除和调试很有用。如果选择此选项，则会将此数据 EventBridge 包含在所有指定日志目标的相关记录中。

详细信息包含以下字段：
+ `event_detail`：事件本身的详细信息。
+ `target_input`：请求 EventBridge 发送到目标。
+ `target_properties`: 

## 截断事件总线日志中的数据
<a name="eb-event-logs-data-truncation"></a>

由于日志目标限制，日志记录 EventBridge 限制在 1 MB 以内。如果日志记录超过此限制，则按以下顺序删除以下字段来 EventBridge 截断该记录：
+ `target_input`
+ `target_properties`
+ `target_response_body`

EventBridge 如有必要，将该`event_detail`字段从以下日志记录类型中删除：
+ `EVENT_RECEIVED`
+ `EVENT_INGESTED`
+ `EVENT_INGESTED_FAILED`
+ `RULE_MATCH_STARTED`

如果需要截断，则 EventBridge 删除整个字段。

 EventBridge 如果在事件中截断字段，则该`dropped_fields`字段将包含已删除的数据字段的列表。

## 事件总线日志中报告的错误
<a name="eb-event-logs-errors"></a>

EventBridge 在表示故障状态的步骤中还包括错误数据（如果有）。这些步骤包括：
+ `EVENT_INGEST_FAILURE`
+ `INVOCATION_THROTTLE_START`
+ `INVOCATION_ATTEMPT_THROTTLE`
+ `INVOCATION_ATTEMPT_RETRYABLE_FAILURE`
+ `INVOCATION_ATTEMPT_PERMANENT_FAILURE`
+ `INVOCATION_FAILURE`
+ `INVOCATION_DLQ`