

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EventBridge 이벤트 버스에 대한 로그 구성
<a name="eb-event-bus-logs"></a>

이벤트 버스가 이벤트를 처리하는 방법을 자세히 설명하는 로그를 보내도록 EventBridge를 구성하여 문제 해결 및 디버깅을 지원할 수 있습니다.

EventBridge가 지정된 이벤트 버스에 대한 로그를 전송하는 로그 *대상으로* 다음 AWS 서비스를 선택할 수 있습니다.
+ 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는 지원되는 타사 서비스 공급자가 소유한 사용자 지정 HTTP 엔드포인트 또는 HTTP 엔드포인트뿐만 아니라 특정 AWS 서비스와 같은 대상으로 실시간 스트리밍 데이터를 제공하기 위한 완전관리형 서비스입니다. 자세한 내용은 *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에서 객체 업로드, 다운로드 및 작업](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)` 이벤트입니다.
  + 이벤트 버스 로그를 전송하여 생성된 Firehose의 `[PutRecordBatch](https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecordBatch.html)` 이벤트입니다.
+ 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는 로그를 전송하지 않습니다. 기본값입니다.
+ **ERROR** - EventBridge는 이벤트 처리 및 대상 전송 중에 생성된 오류와 관련된 모든 로그를 전송합니다.
+ **INFO** - EventBridge는 오류와 관련된 모든 로그와 이벤트 처리 중에 수행되는 주요 단계를 전송합니다.
+ **TRACE** - EventBridge는 이벤트 처리의 모든 단계에서 생성된 모든 로그를 전송합니다.

아래는 각 로그 수준에 포함된 이벤트 처리 단계를 나타낸 표입니다.


| 단계 | TRACE | INFO | 오류 | 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를 지정할 수 있습니다. 이 데이터는 문제 해결 및 디버깅에 유용할 수 있습니다. 이 옵션을 선택하면 EventBridge는 지정된 모든 로그 대상의 관련 레코드에 이 데이터를 포함합니다.

포함되는 세부 정보는 다음과 같습니다.
+ `event_detail`: 이벤트 자체의 세부 정보입니다.
+ `target_input`: EventBridge가 대상으로 보내는 요청입니다.
+ `target_properties`: 

## 이벤트 버스 로그에서 데이터 잘라내기
<a name="eb-event-logs-data-truncation"></a>

로그 대상 제약으로 인해 EventBridge는 로그 레코드를 1MB로 제한합니다. 로그 레코드가 이 제한을 초과하면 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는 다음을 수행할 때까지 필요에 따라 대상 간접 호출을 재시도합니다.
  + 이벤트가 성공적으로 전송되었습니다.
  + 재시도 정책이 만료되거나 영구 실패가 발생하는 경우와 같이 이벤트 전송이 실패합니다.

    전송에 실패하면 EventBridge는 지정된 경우 Dead Letter Queue(DLQ)로 이벤트를 보내거나 지정된 DLQ가 없는 경우 이벤트를 삭제합니다.

아래 다이어그램은 각 단계의 로그 수준과 함께 가능한 모든 단계가 표시된 이벤트 처리 흐름의 세부 보기를 보여줍니다.

전체 단계 목록은 [로그 수준 지정](eb-event-bus-logs.md#eb-event-bus-logs-level) 섹션을 참조하세요.

![\[EventBridge는 버스로 전송되는 각 이벤트를 처리하는 단계를 진행합니다.\]](http://docs.aws.amazon.com/ko_kr/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 리소스 이름(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) 단원을 참조하십시오.

**details**  <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>
레코드를 크기 제한 1MB 미만으로 유지하기 위해 EventBridge에서 잘라낸 데이터 필드 목록입니다.  
EventBridge는 세부 정보 필드를 잘라낸 경우 이 필드를 포함하지 않습니다.  
자세한 내용은 [이벤트 버스 로그에서 데이터 잘라내기](eb-event-bus-logs.md#eb-event-logs-data-truncation) 단원을 참조하십시오.

**오류**  <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입니다.