

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

# 設定 Amazon EventBridge 事件匯流排的日誌
<a name="eb-event-bus-logs"></a>

您可以設定 EventBridge 傳送日誌，詳細說明事件匯流排如何處理事件，以協助故障診斷和偵錯。

您可以選擇下列 AWS 服務做為 EventBridge 交付指定事件匯流排日誌的日誌*目的地*：
+ Amazon CloudWatch Logs

  EventBridge 會將日誌交付至指定的 CloudWatch Logs 日誌群組。

  CloudWatch Logs 可讓您將您使用的所有系統、應用程式和 AWS 服務的日誌，集中在可高度擴展的單一服務中。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的[使用日誌群組和日誌串流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。
+ Amazon Data Firehose 

  EventBridge 會將日誌交付至 Firehose 交付串流。

  Amazon Data Firehose 是一項全受管服務，可將即時串流資料交付至特定 AWS 服務等目的地，以及任何自訂 HTTP 端點或受支援第三方服務供應商擁有的 HTTP 端點。如需詳細資訊，請參閱[《Amazon Data Firehose 使用者指南》中的建立 Amazon Data Firehose 交付串流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。 **
+ Amazon S3 

  EventBridge 會將日誌做為 Amazon S3 物件傳送到指定的儲存貯體。

  Amazon S3 是一項物件儲存服務，提供領先業界的可擴展性、資料可用性、安全性和效能。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的 Amazon S3 中的[上傳、下載和使用 Amazon S3 中的物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html)。

## 記錄對事件匯流排的運作方式
<a name="eb-event-logs-overview"></a>

EventBridge 會為下列項目產生日誌：
+ 符合事件匯流排上規則的任何 AWS 服務事件
+ 下列方法傳遞的任何事件，無論事件是否成功擷取或符合任何規則：
  + 來自[合作夥伴事件來源的事件](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 不會記錄下列事件：
  + AWS KMS `[Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)` 當使用客戶受管金鑰加密的日誌記錄傳送到日誌目的地時，產生的 和 `[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)`事件。
  + `[PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)` Firehose 中由交付事件匯流排日誌產生的事件。
+ 對於 S3 日誌目的地，不建議指定已啟用 [ EventBridge 事件通知的](https://docs.aws.amazon.com/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 Logs 使用者指南*》中的[服務特定許可](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-vended-logs-permissions)。

## 指定事件匯流排日誌層級
<a name="eb-event-bus-logs-level"></a>

您可以指定 EventBridge 記錄到所選日誌目的地的事件處理步驟類型。

從下列詳細資訊層級中選擇，以包含在日誌中。日誌層級會套用至為事件匯流排指定的所有日誌目的地。每個日誌層級都包含先前日誌層級的步驟。
+ **OFF** – EventBridge 不會傳送任何日誌。這是預設值。
+ **錯誤** – EventBridge 會傳送與事件處理和目標交付期間產生的錯誤相關的任何日誌。
+ **INFO** – EventBridge 會傳送與錯誤相關的任何日誌，以及在事件處理期間執行的主要步驟。
+ **TRACE** – EventBridge 會傳送事件處理中所有步驟期間產生的任何日誌。

下表列出每個日誌層級中包含的事件處理步驟。


| 步驟 | TRACE | INFO | ERROR | OFF | 
| --- | --- | --- | --- | --- | 
|  擷取的事件  | x | x |  |  | 
|  事件擷取失敗  | x | x | x |  | 
|  已接收的事件  | x |  |  |  | 
|  已開始調用嘗試  | x |  |  |  | 
|  呼叫嘗試永久失敗  | x | x | x |  | 
|  呼叫嘗試可重試失敗  | x | x | x |  | 
|  調用嘗試成功  | x |  |  |  | 
|  調用嘗試已調節  | x | x | x |  | 
|  調用 DLQ  | 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`

# 事件匯流排的 Amazon EventBridge 日誌
<a name="eb-event-logs-execution-steps"></a>

了解 EventBridge 如何處理事件可協助您使用日誌來疑難排解或偵錯事件匯流排問題。

如果啟用記錄，EventBridge 會在處理事件時產生多個日誌記錄。

以下是 EventBridge 在處理事件時執行的主要步驟：
+ 事件會傳送至事件匯流排

  EventBridge 會為從合作夥伴來源傳送、從封存重播或使用 傳送的事件產生日誌`PutEvents`，無論它們是否符合任何規則。
+ EventBridge 會判斷事件是否符合匯流排上的任何規則。

  如果事件符合一或多個規則，EventBridge 會繼續進行下一個步驟。

  如果 AWS 事件不符合任何規則，EventBridge 會捨棄事件，而不會產生任何日誌。
+ EventBridge 會叫用目標。

  EventBridge 會視需要重試叫用目標，直到：
  + 事件已成功交付。
  + 事件交付失敗，例如重試政策過期或永久失敗。

    如果交付失敗，如果指定無效字母佇列 (DLQ)，EventBridge 會將事件傳送至無效字母佇列，如果未指定 DLQ，則會捨棄事件。

下圖顯示事件處理流程的詳細檢視，並代表所有可能的步驟，以及每個步驟的日誌層級。

如需步驟的完整清單，請參閱 [指定日誌層級](eb-event-bus-logs.md#eb-event-bus-logs-level)。

![\[EventBridge 會繼續進行步驟，以處理傳送至匯流排的每個事件。\]](http://docs.aws.amazon.com/zh_tw/eventbridge/latest/userguide/images/bus_logging_eventbridge_conceptual.svg)


# Amazon EventBridge 事件匯流排日誌結構描述
<a name="eb-event-logs-schema"></a>

下列參考詳細說明 EventBridge 事件匯流排日誌記錄的結構描述。每個記錄代表 EventBridge 執行處理特定事件的步驟。

如需詳細資訊，請參閱[記錄事件匯流排 ](eb-event-bus-logs.md)。

```
{    
    "resource\$1arn": "arn:aws:events:region:account:event-bus/bus-name",
    "request\$1id": "guid", 
    "event\$1id": "guid", 
    "invocation\$1id": "guid",
    "message\$1timestamp\$1ms": "date_time",    
    "message\$1type": "step",  
    "log\$1level": "TRACE | INFO | ERROR",
    "details": {
      },
    "error": {  
        "http\$1status\$1code": code,  
        "error\$1message": "error_message",  
        "aws\$1service": "service_name",  
        "request\$1id": "service_request_id"  
    }  
}
```

**resource\$1arn**  <a name="event-log-schema-resource-arn"></a>
事件匯流排的 Amazon Resource Name (ARN)。

**request\$1id**  <a name="event-log-schema-request-id"></a>
請求的 ID。

**event\$1id**  <a name="event-log-schema-event-id"></a>
正在處理的事件 ID。

**invocation\$1id**  <a name="event-log-schema-invocation-id"></a>
事件的調用 ID。

**message\$1timestamp\$1ms**  <a name="event-log-schema-timestamp"></a>
發出日誌事件的日期和時間。  
單位：毫秒。

**message\$1type**  <a name="event-log-schema-message-type"></a>
產生日誌記錄的事件處理步驟。  
如需 EventBridge 在處理事件時所執行步驟的詳細資訊，請參閱 [事件匯流排的 Amazon EventBridge 日誌](eb-event-logs-execution-steps.md)。  
*有效值*：  
+ `EVENT_INGEST_FAILURE`
+ `EVENT_INGEST_SUCCESS`
+ `EVENT_RECEIPT`
+ `INVOCATION_ATTEMPT_PERMANENT_FAILURE`
+ `INVOCATION_ATTEMPT_RETRYABLE_FAILURE`
+ `INVOCATION_ATTEMPT_START`
+ `INVOCATION_ATTEMPT_SUCCESS`
+ `INVOCATION_ATTEMPT_THROTTLE`
+ `INVOCATION_DLQ`
+ `INVOCATION_FAILURE`
+ `INVOCATION_START`
+ `INVOCATION_SUCCESS`
+ `INVOCATION_THROTTLE_START`
+ `NO_STANDARD_RULES_MATCHED`
+ `RULE_MATCH`
+ `RULE_MATCH_START`

**log\$1level**  <a name="event-log-schema-loglevel"></a>
為事件匯流排日誌指定的詳細資訊層級。  
*有效值*：`ERROR` \$1 `INFO` \$1 `TRACE`  
如需詳細資訊，請參閱[指定事件匯流排日誌層級](eb-event-bus-logs.md#eb-event-bus-logs-level)。

**詳細資訊**  <a name="event-log-schema-details"></a>
根據步驟詳細資訊類型，包含步驟詳細資訊。  
下列訊息類型會傳回下列欄位：  
+ `EVENT_INGEST_SUCCESS`
+ `EVENT_INGEST_FAILURE`
+ `EVENT_RECEIPT`
+ `RULE_MATCH_START`

```
{
  "caller_account_id": "account_id",
  "source_time_ms": date_time,
  "source": "source",
  "detail_type": " type",
  "resources": [],
  "event_detail": "{}"
}
```
下列訊息類型會傳回下列欄位：  
+ `RULE_MATCH`

```
{
  "rule_arn": "ARN",
  "target_arns": [
    "ARN"
  ],
  "invocation_ids": [
    "guid"
  ]
}
```
下列訊息類型會傳回下列欄位：  
+ `INVOCATION_ATTEMPT_START`
+ `INVOCATION_START`
+ `INVOCATION_THROTTLE_START`

```
{
  "rule_arn": "ARN",
  "role_arn": "ARN",
  "target_arn": "ARN",
  "attempt_count": Integer,
  "target_input": "string",
  "target_properties": "string"
}
```
下列訊息類型會傳回下列欄位：  
+ `INVOCATION_DLQ`
+ `INVOCATION_FAILURE`
+ `INVOCATION_SUCCESS`

```
{
  "rule_arn": "ARN",
  "role_arn": "ARN",
  "target_arn": "ARN",
  "target_input": "string",
  "target_properties": "string",
  "total_attempts": Integer,
  "final_invocation_status": "status",
  "ingestion_to_start_latency_ms": Integer,
  "ingestion_to_complete_latency_ms": Integer,
  "ingestion_to_success_latency_ms": Integer,
  "target_duration_ms": Integer,
  "target_response_body": "string"
}
```
`ingestion_to_start_latency_ms` 和 `ingestion_to_complete_latency_ms`僅包含在第一次調用嘗試中。只有成功調用時才會包含 `ingestion_to_success_latency_ms` 欄位。  
下列訊息類型會傳回下列欄位：  
+ `INVOCATION_ATTEMPT_PERMANENT_FAILURE`
+ `INVOCATION_ATTEMPT_RETRYABLE_FAILURE`
+ `INVOCATION_ATTEMPT_SUCCESS`
+ `INVOCATION_ATTEMPT_THROTTLE`

```
{
  "rule_arn": "ARN",
  "role_arn": "ARN",
  "target_arn": "ARN",
  "attempt_type": "FIRST | THROTTLE | RETRY",
  "attempt_count": Integer,
  "invocation_status": "status",
  "target_duration_ms": Integer,
  "target_response_body": "string"
}
```

**dropped\$1fields**  <a name="event-log-schema-dropped_fields"></a>
EventBridge 已截斷的任何資料欄位清單，以保持記錄低於 1 MB 大小限制。  
如果 EventBridge 已截斷任何詳細資訊欄位，則不會包含此欄位。  
如需詳細資訊，請參閱[截斷事件匯流排日誌中的資料](eb-event-bus-logs.md#eb-event-logs-data-truncation)。

**error**  <a name="event-log-schema-error"></a>
包含此步驟期間產生之任何錯誤的資訊。對於錯誤，EV 一律包含下列欄位：  
+ `error_message`
+ `aws_service`
如果可用，還有下列欄位：  
+ `request_id`
+ `http_status_code`
如果此步驟期間未產生錯誤，EventBridge 不會在日誌記錄中包含此欄位。    
**http\$1status\$1code**  <a name="event-log-schema-http-status-code"></a>
被呼叫的服務傳回的 HTTP 狀態碼。  
**error\$1message**  <a name="event-log-schema-message"></a>
呼叫的服務傳回的錯誤訊息。  
**aws\$1service**  <a name="event-log-schema-aws-service"></a>
被呼叫的服務的名稱。  
**request\$1id**  <a name="event-log-schema-error-request-id"></a>
被呼叫的服務發出此請求的 ID。