

# Amazon RDS DB 인스턴스에서 이벤트, 로그 및 스트림 모니터링
<a name="CHAP_Monitor_Logs_Events"></a>

Amazon RDS 데이터베이스 및 기타 AWS 솔루션을 모니터링할 때의 목표는 다음을 유지하는 것입니다.
+ 신뢰성
+ 가용성
+ 성능
+ 보안

[Amazon RDS 인스턴스에서 지표 모니터링](CHAP_Monitoring.md)에서 지표를 사용하여 인스턴스를 모니터링하는 방법을 설명합니다. 완벽한 솔루션은 데이터베이스 이벤트, 로그 파일 및 활동 스트림을 모니터링해야 합니다. AWS에서는 다음과 같은 모니터링 도구를 제공합니다.
+ *Amazon EventBridge*: 애플리케이션을 다양한 소스의 데이터와 쉽게 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. EventBridge는 자체 애플리케이션, 서비스형 소프트웨어(SaaS) 애플리케이션 및 AWS 서비스의 실시간 데이터 스트림을 제공하고 그 데이터를 AWS Lambda 등의 대상으로 라우팅합니다. 이를 통해 서비스에서 발생하는 이벤트를 모니터링하고 이벤트 기반 아키텍처를 구축할 수 있습니다. 자세한 내용은 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요.
+ *Amazon CloudWatch Logs*는 Amazon RDS 인스턴스, AWS CloudTrail, 기타 소스의 로그 파일을 모니터링, 저장 및 액세스하는 방법을 제공합니다. Amazon CloudWatch Logs는 로그 파일의 정보를 모니터링하고 특정 임계값에 도달하면 사용자에게 알릴 수 있습니다. 또한 매우 내구성이 뛰어난 스토리지에 로그 데이터를 저장할 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs 사용자 안내서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)를 참조하세요.
+ *AWS CloudTrail*은 AWS 계정에서 또는 이 계정을 대신하여 수행된 API 호출 및 관련 이벤트를 캡처합니다. CloudTrail은 지정된 Amazon S3 버킷에 CloudTrail 이벤트 로그 파일을 전송합니다. 어떤 사용자 및 계정이 AWS를 호출했는지 어떤 소스 IP 주소에 호출이 이루어졌는지 언제 호출이 발생했는지 확인할 수 있습니다. 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.
+ *데이터베이스 활동 스트림*은 DB 인스턴스에서 거의 실시간에 가까운 활동 스트림을 제공하는 Amazon RDS 기능입니다. Amazon RDS는 활동을 Amazon Kinesis Data Streams에 푸시합니다. Kinesis 스트림이 자동으로 생성됩니다. Kinesis에서 Amazon Data Firehose 및 AWS Lambda와 같은 AWS 서비스를 구성하여 스트림을 사용하고 데이터를 저장할 수 있습니다.

**Topics**
+ [Amazon RDS 콘솔에서 로그, 이벤트 및 스트림 보기](logs-events-streams-console.md)
+ [Amazon RDS 이벤트 모니터링](working-with-events.md)
+ [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md)
+ [AWS CloudTrail에서 Amazon RDS API 호출 모니터링](logging-using-cloudtrail.md)
+ [데이터베이스 활동 스트림을 사용하여 Amazon RDS 모니터링](DBActivityStreams.md)
+ [Amazon GuardDuty RDS Protection을 이용한 위협 모니터링](guard-duty-rds-protection.md)

# Amazon RDS 콘솔에서 로그, 이벤트 및 스트림 보기
<a name="logs-events-streams-console"></a>

Amazon RDS는 RDS 콘솔에서 로그, 이벤트 및 데이터베이스 활동 스트림에 대한 정보를 표시하기 위해 AWS 서비스와 통합합니다.

RDS DB 인스턴스의 **로그 및 이벤트** 탭에는 다음 정보가 나와 있습니다.
+ **Amazon CloudWatch 경보**: DB 인스턴스에 대해 구성한 모든 지표 경보를 표시합니다. 경보를 구성하지 않은 경우 RDS 콘솔에서 생성할 수 있습니다. 자세한 내용은 [Amazon CloudWatch로 Amazon RDS 지표 모니터링](monitoring-cloudwatch.md) 단원을 참조하세요.
+ **최근 이벤트(Recent events)**: RDS DB 인스턴스 에 대한 이벤트 요약(환경 변경 사항)을 보여줍니다. 자세한 내용은 [Amazon RDS 이벤트 보기](USER_ListEvents.md)을 참조하세요.
+ **로그(Logs)**: DB 인스턴스에서 생성된 데이터베이스 로그 파일을 표시합니다. 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md)을 참조하세요.

**구성(Configuration)** 탭은 데이터베이스 활동 스트림에 대한 정보를 표시합니다.

**RDS 콘솔에서 DB 인스턴스에 대한 로그, 이벤트 및 스트림 보기**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Databases**(데이터베이스)를 선택합니다.

1. 모니터링 하려는 DB 인스턴스의 이름을 선택합니다.

   데이터베이스 페이지가 표시됩니다. 다음 예는 의 `orclb`라는 Oracle 데이터베이스 이름을 보여줍니다.  
![\[모니터링 탭이 표시된 데이터베이스 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-with-monitoring-tab.png)

1. **로그 및 이벤트**를 선택합니다.

   로그 및 이벤트 섹션이 표시됩니다.  
![\[로그 및 이벤트 탭이 표시된 데이터베이스 페이지\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-logs-and-events-subpage.png)

1. **구성**을 선택합니다.

   다음 예는 DB 인스턴스에 대한 데이터베이스 활동 스트림 상태를 보여줍니다.  
![\[확장 모니터링\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/oracle-das.png)

# Amazon RDS 이벤트 모니터링
<a name="working-with-events"></a>

*이벤트*는 환경의 변화를 나타냅니다. AWS 환경, 즉 SaaS 파트너 서비스나 애플리케이션 또는 사용자 지정 애플리케이션이나 서비스일 수 있습니다. RDS 이벤트에 대한 설명을 보려면 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.

**Topics**
+ [Amazon RDS에 대한 이벤트 개요](#rds-cloudwatch-events.sample)
+ [Amazon RDS 이벤트 보기](USER_ListEvents.md)
+ [Amazon RDS 이벤트 알림 작업](USER_Events.md)
+ [Amazon RDS 이벤트에서 트리거되는 규칙 생성](rds-cloud-watch-events.md)
+ [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md)

## Amazon RDS에 대한 이벤트 개요
<a name="rds-cloudwatch-events.sample"></a>

*RDS 이벤트*는 Amazon RDS 환경의 변경 사항을 나타내는 이벤트입니다. 예를 들어 Amazon RDS는 DB 인스턴스 상태가 보류 중에서 실행 중으로 변경될 때 이벤트를 생성합니다. Amazon RDS는 거의 실시간으로 EventBridge에 이벤트를 전송합니다.

**참고**  
Amazon RDS는 최선의 작업을 기반으로 이벤트를 방출합니다. 알림 이벤트의 순서나 존재 여부에 따라 달라지는 프로그램은 순서가 잘못되거나 누락될 수 있으므로 작성하지 않는 것이 좋습니다.

Amazon RDS는 다음 리소스와 관련된 이벤트를 기록합니다.
+ DB 인스턴스

  DB 인스턴스 이벤트 목록은 [DB 인스턴스 이벤트](USER_Events.Messages.md#USER_Events.Messages.instance) 섹션을 참조하세요.
+ DB 파라미터 그룹

  DB 파라미터 그룹 이벤트 목록은 [DB 파라미터 그룹 이벤트](USER_Events.Messages.md#USER_Events.Messages.parameter-group) 섹션을 참조하세요.
+ DB 보안 그룹

  DB 보안 그룹 이벤트 목록은 [DB 보안 그룹 이벤트](USER_Events.Messages.md#USER_Events.Messages.security-group) 섹션을 참조하세요.
+ DB 스냅샷

  DB 스냅샷 이벤트 목록은 [DB 스냅샷 이벤트](USER_Events.Messages.md#USER_Events.Messages.snapshot) 섹션을 참조하세요.
+ RDS 프록시 이벤트

  RDS 프록시 이벤트 목록은 [RDS 프록시 이벤트](USER_Events.Messages.md#USER_Events.Messages.rds-proxy) 섹션을 참조하세요.
+ 블루/그린 배포 이벤트

  블루/그린 배포 이벤트 목록은 [블루/그린 배포 이벤트](USER_Events.Messages.md#USER_Events.Messages.BlueGreenDeployments) 섹션을 참조하세요.

이 정보에는 다음 사항이 포함됩니다.
+ 이벤트의 날짜 및 시간
+ 이벤트의 소스 이름 및 소스 유형
+ 이벤트와 연결된 메시지
+ 이벤트 알림에는 메시지가 전송된 시점의 태그가 포함되며 이벤트가 발생한 시점의 태그는 반영되지 않을 수 있습니다.

# Amazon RDS 이벤트 보기
<a name="USER_ListEvents"></a>

Amazon RDS 리소스에 대해 다음 이벤트 정보를 검색할 수 있습니다.
+ 리소스 이름
+ 리소스 유형
+ 이벤트 시간
+ 이벤트 메시지 요약

AWS Management Console의 다음 부분에서 이벤트에 액세스할 수 있습니다.
+ **이벤트** 탭은 지난 24시간 동안의 이벤트를 표시합니다.
+ **데이터베이스** 탭의 **로그 및 이벤트** 섹션에 있는 **최근 이벤트** 테이블에는 최대 지난 2주 동안의 이벤트가 표시될 수 있습니다.

[describe-events](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-events.html) AWS CLI 명령 또는 [DescribeEvents](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html) RDS API 작업을 사용하여 이벤트를 검색할 수도 있습니다. AWS CLI 또는 RDS API를 사용하여 이벤트를 볼 경우 최대 지난 14일 동안 발생한 이벤트를 검색할 수 있습니다.

**참고**  
더 오랜 기간 동안 이벤트를 저장해야 하는 경우 EventBridge에 Amazon RDS 이벤트를 보낼 수 있습니다. 자세한 내용은 [Amazon RDS 이벤트에서 트리거되는 규칙 생성](rds-cloud-watch-events.md) 섹션을 참조하세요.

Amazon RDS 이벤트에 대한 설명을 보려면 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 섹션을 참조하세요.

요청 파라미터를 포함하여 AWS CloudTrail를 사용하여 이벤트에 대한 세부 정보에 액세스하려면 [CloudTrail 이벤트](logging-using-cloudtrail.md#service-name-info-in-cloudtrail.events) 단원을 참조하십시오.

## 콘솔
<a name="USER_ListEvents.CON"></a>

**지난 24시간 동안 발생한 모든 Amazon RDS 이벤트를 보는 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**Events**]를 선택합니다.

   사용 가능한 이벤트가 목록에 표시됩니다.

1. (선택 사항) 검색어를 입력하여 결과를 필터링합니다.

   다음 예에서는 **stopped** 문자로 필터링된 이벤트 목록을 보여줍니다.  
![\[DB 이벤트 나열\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/ListEvents.png)

## AWS CLI
<a name="USER_ListEvents.CLI"></a>

지난 한 시간 동안 생성된 모든 이벤트를 보려면 파라미터 없이 [describe-events](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-events.html)를 호출합니다.

```
aws rds describe-events
```

다음 샘플 출력은 DB 인스턴스가 중지되었음을 보여줍니다.

```
{
    "Events": [
        {
            "EventCategories": [
                "notification"
            ], 
            "SourceType": "db-instance", 
            "SourceArn": "arn:aws:rds:us-east-1:123456789012:db:testinst", 
            "Date": "2022-04-22T21:31:00.681Z", 
            "Message": "DB instance stopped", 
            "SourceIdentifier": "testinst"
        }
    ]
}
```

지난 10,080분(7일) 동안의 모든 Amazon RDS 이벤트를 보려면 [describe-events](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-events.html) AWS CLI 명령을 호출하고 `--duration` 파라미터를 `10080`으로 설정합니다.

```
1. aws rds describe-events --duration 10080
```

다음 예에서는 DB 인스턴스 *test-instance*에 대해 지정된 시간 범위의 이벤트를 보여줍니다.

```
aws rds describe-events \
    --source-identifier test-instance \
    --source-type db-instance \
    --start-time 2022-03-13T22:00Z \
    --end-time 2022-03-13T23:59Z
```

다음 샘플 출력은 백업 상태를 보여줍니다.

```
{
    "Events": [
        {
            "SourceType": "db-instance",
            "SourceIdentifier": "test-instance",
            "EventCategories": [
                "backup"
            ],
            "Message": "Backing up DB instance",
            "Date": "2022-03-13T23:09:23.983Z",
            "SourceArn": "arn:aws:rds:us-east-1:123456789012:db:test-instance"
        },
        {
            "SourceType": "db-instance",
            "SourceIdentifier": "test-instance",
            "EventCategories": [
                "backup"
            ],
            "Message": "Finished DB Instance backup",
            "Date": "2022-03-13T23:15:13.049Z",
            "SourceArn": "arn:aws:rds:us-east-1:123456789012:db:test-instance"
        }
    ]
}
```

## API
<a name="USER_ListEvents.API"></a>

[DescribeEvents](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html) RDS API 작업을 호출하고 `Duration` 파라미터를 `20160`으로 설정하여 지난 14일 동안 발생한 모든 Amazon RDS 인스턴스 이벤트를 볼 수 있습니다.

# Amazon RDS 이벤트 알림 작업
<a name="USER_Events"></a>

Amazon RDS는 Amazon RDS 이벤트 발생 시 Amazon Simple Notification Service(Amazon SNS)를 사용하여 알림 서비스를 제공합니다. 이 서비스는 AWS 리전에 따라 Amazon SNS가 지원하는 알림 메시지 형식에 따라 이메일, 문자 또는 HTTP 엔드포인트 호출 등이 될 수 있습니다.

**Topics**
+ [Amazon RDS 이벤트 알림 개요](USER_Events.overview.md)
+ [Amazon SNS 주제에 알림을 게시할 권한 부여](USER_Events.GrantingPermissions.md)
+ [Amazon RDS 이벤트 알림 구독](USER_Events.Subscribing.md)
+ [Amazon RDS 이벤트 알림 태그 및 속성](USER_Events.TagsAttributesForFiltering.md)
+ [Amazon RDS 이벤트 알림 구독의 목록 표시](USER_Events.ListSubscription.md)
+ [Amazon RDS 이벤트 알림 구독 수정](USER_Events.Modifying.md)
+ [Amazon RDS 이벤트 알림 구독에 소스 식별자 추가](USER_Events.AddingSource.md)
+ [Amazon RDS 이벤트 알림 구독에서 소스 식별자 제거](USER_Events.RemovingSource.md)
+ [Amazon RDS 이벤트 알림 카테고리의 목록 표시](USER_Events.ListingCategories.md)
+ [Amazon RDS 이벤트 알림 구독 삭제](USER_Events.Deleting.md)

# Amazon RDS 이벤트 알림 개요
<a name="USER_Events.overview"></a>

Amazon RDS는 구독 가능한 카테고리로 이벤트를 그룹화합니다. 따라서 해당 카테고리의 이벤트가 발생했을 때 이에 대한 알림 메시지를 받을 수 있습니다.

**Topics**
+ [이벤트 구독에 적합한 RDS 리소스](#USER_Events.overview.resources)
+ [Amazon RDS 이벤트 알림을 구독하는 기본 프로세스](#USER_Events.overview.process)
+ [RDS 이벤트 알림 전송](#USER_Events.overview.subscriptions)
+ [Amazon RDS 이벤트 알림 결제](#USER_Events.overview.billing)
+ [Amazon EventBridge를 사용한 Amazon RDS 이벤트의 예](#events-examples)

## 이벤트 구독에 적합한 RDS 리소스
<a name="USER_Events.overview.resources"></a>

 다음 리소스에 대한 이벤트 범주에 구독할 수 있습니다.
+ DB 인스턴스
+ DB 스냅샷
+ DB 파라미터 그룹
+ DB 보안 그룹
+ RDS 프록시
+ 커스텀 엔진 버전

예를 들어 임의의 DB 인스턴스에 대한 백업 카테고리를 구독할 경우 백업 관련 이벤트가 발생하여 DB 인스턴스에 영향을 끼칠 때마다 알림 메시지가 수신됩니다. 혹은 DB 인스턴스의 구성 변경 카테고리를 구독하면 DB 인스턴스가 변경될 때마다 메시지가 수신됩니다. 또한 이벤트 알림 메시지 구독이 변경되어도 알림 메시지가 수신됩니다.

여러 가지 다른 구독을 만들 수 있습니다. 예를 들어, 전체 DB 인스턴스에 대한 모든 이벤트 알림을 수신하는 하나의 구독과 DB 인스턴스의 하위 집합에 대한 중요 이벤트만 포함하는 다른 구독을 만들 수 있습니다. 두 번째 구독의 경우 필터에 하나 이상의 DB 인스턴스를 지정합니다.

## Amazon RDS 이벤트 알림을 구독하는 기본 프로세스
<a name="USER_Events.overview.process"></a>

Amazon RDS 이벤트 알림 서비스를 구독하는 프로세스는 다음과 같습니다.

1. Amazon RDS 콘솔, AWS CLI 또는 API를 사용하여 Amazon RDS 이벤트 알림 서비스 구독을 생성합니다.

   Amazon RDS에서는 Amazon SNS 주제의 ARN을 사용하여 각 구독을 식별합니다. Amazon RDS 콘솔은 구독 생성 시 ARN을 생성합니다. Amazon SNS 콘솔인 AWS CLI 또는 Amazon SNS API를 사용하여 ARN을 생성합니다.

1. Amazon RDS가 구독 생성 시 제출한 이메일 주소로 승인 이메일 또는 SMS 메시지를 전송합니다.

1. 전송된 알림의 링크를 선택하여 구독 여부를 확인합니다.

1. Amazon RDS 콘솔은 구독 상태로 **내 이벤트 구독** 섹션을 업데이트합니다.

1. Amazon RDS는 구독을 생성할 때 제공한 주소로 알림을 보내기 시작합니다.

Amazon SNS 사용 시 자격 증명 및 액세스 관리에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 가이드*의 [Amazon SNS의 Identity and Access Management](https://docs.aws.amazon.com/sns/latest/dg/sns-authentication-and-access-control.html)를 참조하세요.

AWS Lambda를 사용하여 DB 인스턴스의 이벤트 알림을 처리할 수 있습니다. 자세한 내용은 *AWS Lambda 개발자 안내서*의 [Amazon RDS에서 AWS Lambda 사용](https://docs.aws.amazon.com/lambda/latest/dg/services-rds.html)을 참조하세요.

## RDS 이벤트 알림 전송
<a name="USER_Events.overview.subscriptions"></a>

Amazon RDS는 구독 생성 시 입력한 주소로 알림을 보냅니다. 알림에는 메시지에 대한 구조화된 메타데이터를 제공하는 메시지 속성이 포함될 수 있습니다. 메시지 속성에 대한 자세한 내용은 [Amazon RDS 이벤트 카테고리 및 이벤트 메시지](USER_Events.Messages.md) 단원을 참조하세요.

이벤트 알림을 전달하는 데 최대 5분 정도 걸릴 수 있습니다.

**중요**  
Amazon RDS는 이벤트 스트림에서 전송된 이벤트 순서를 보장하지 않습니다. 이벤트 순서는 변경될 수 있습니다.

Amazon SNS이 구독된 HTTP 또는 HTTPS 엔드포인트에 알림을 전송할 때 엔드포인트에 전송된 POST 메시지에는 JSON 문서를 포함하는 메시지 본문이 있습니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 메시지 및 JSON 형식](https://docs.aws.amazon.com/sns/latest/dg/sns-message-and-json-formats.html)을 참조하십시오.

문자 메시지로 알리도록 SNS를 구성할 수 있습니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 가이드*의 [모바일 문자 메시지(SMS)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)를 참조하세요.

구독을 삭제하지 않고 알림을 끄려면 Amazon RDS 콘솔에서 **활성**에 대해 **아니요**를 선택합니다. 또는 AWS CLI 또는 Amazon RDS API를 사용하여 `Enabled` 파라미터를 `false`(으)로 설정할 수 있습니다.

## Amazon RDS 이벤트 알림 결제
<a name="USER_Events.overview.billing"></a>

Amazon RDS 이벤트 알림에 대한 결제는 Amazon SNS를 통해 이루어집니다. Amazon SNS 요금은 이벤트 알림 사용 시 적용됩니다. Amazon SNS 결제에 대한 자세한 내용은 [Amazon Simple Notification Service 요금](https://aws.amazon.com/sns/#pricing)을 참조하세요.

## Amazon EventBridge를 사용한 Amazon RDS 이벤트의 예
<a name="events-examples"></a>

다음 예에서는 JSON 형식으로 다양한 Amazon RDS 이벤트 유형을 보여줍니다. JSON 형식으로 이벤트를 캡처하고 보는 방법을 보여 주는 자습서는 [자습서: Amazon EventBridge를 사용하여 DB 인스턴스의 상태 변경 로깅](rds-cloud-watch-events.md#log-rds-instance-state) 단원을 참조하세요.

**Topics**
+ [DB 인스턴스 이벤트의 예](#rds-cloudwatch-events.db-instances)
+ [DB 파라미터 그룹 이벤트의 예](#rds-cloudwatch-events.db-parameter-groups)
+ [DB 스냅샷 이벤트의 예](#rds-cloudwatch-events.db-snapshots)

### DB 인스턴스 이벤트의 예
<a name="rds-cloudwatch-events.db-instances"></a>

다음은 JSON 형식의 DB 인스턴스 이벤트에 대한 예제입니다. 이 이벤트는 RDS가 `my-db-instance`라는 인스턴스에 대해 다중 AZ 장애 조치를 수행했음을 보여줍니다. 이벤트 ID는 RDS-EVENT-0049입니다.

```
{
  "version": "0",
  "id": "68f6e973-1a0c-d37b-f2f2-94a7f62ffd4e",
  "detail-type": "RDS DB Instance Event",
  "source": "aws.rds",
  "account": "123456789012",
  "time": "2018-09-27T22:36:43Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:rds:us-east-1:123456789012:db:my-db-instance"
  ],
  "detail": {
    "EventCategories": [
      "failover"
    ],
    "SourceType": "DB_INSTANCE",
    "SourceArn": "arn:aws:rds:us-east-1:123456789012:db:my-db-instance",
    "Date": "2018-09-27T22:36:43.292Z",
    "Message": "A Multi-AZ failover has completed.",
    "SourceIdentifier": "my-db-instance",
    "EventID": "RDS-EVENT-0049"
  }
}
```

### DB 파라미터 그룹 이벤트의 예
<a name="rds-cloudwatch-events.db-parameter-groups"></a>

다음은 JSON 형식의 DB 파라미터 그룹 이벤트에 대한 예제입니다. 이 이벤트는 `time_zone` 파라미터가 파라미터 그룹 `my-db-param-group`에서 업데이트되었음을 보여줍니다. 이벤트 ID는 RDS-EVENT-0037입니다.

```
{
  "version": "0",
  "id": "844e2571-85d4-695f-b930-0153b71dcb42",
  "detail-type": "RDS DB Parameter Group Event",
  "source": "aws.rds",
  "account": "123456789012",
  "time": "2018-10-06T12:26:13Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:rds:us-east-1:123456789012:pg:my-db-param-group"
  ],
  "detail": {
    "EventCategories": [
      "configuration change"
    ],
    "SourceType": "DB_PARAM",
    "SourceArn": "arn:aws:rds:us-east-1:123456789012:pg:my-db-param-group",
    "Date": "2018-10-06T12:26:13.882Z",
    "Message": "Updated parameter time_zone to UTC with apply method immediate",
    "SourceIdentifier": "my-db-param-group",
    "EventID": "RDS-EVENT-0037"
  }
}
```

### DB 스냅샷 이벤트의 예
<a name="rds-cloudwatch-events.db-snapshots"></a>

다음은 JSON 형식의 DB 스냅샷 이벤트에 대한 예제입니다. 이 이벤트는 `my-db-snapshot`이라는 스냅샷의 삭제를 보여줍니다. 이벤트 ID는 RDS-EVENT-0041입니다.

```
{
  "version": "0",
  "id": "844e2571-85d4-695f-b930-0153b71dcb42",
  "detail-type": "RDS DB Snapshot Event",
  "source": "aws.rds",
  "account": "123456789012",
  "time": "2018-10-06T12:26:13Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:rds:us-east-1:123456789012:snapshot:rds:my-db-snapshot"
  ],
  "detail": {
    "EventCategories": [
      "deletion"
    ],
    "SourceType": "SNAPSHOT",
    "SourceArn": "arn:aws:rds:us-east-1:123456789012:snapshot:rds:my-db-snapshot",
    "Date": "2018-10-06T12:26:13.882Z",
    "Message": "Deleted manual snapshot",
    "SourceIdentifier": "my-db-snapshot",
    "EventID": "RDS-EVENT-0041"
  }
}
```

# Amazon SNS 주제에 알림을 게시할 권한 부여
<a name="USER_Events.GrantingPermissions"></a>

Amazon RDS 권한을 부여하여 알림을 Amazon Simple Notification Service(Amazon SNS) 주제에 게시하려면 대상 주제에 AWS Identity and Access Management(IAM) 정책을 연결하면 됩니다. 권한에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon Simple Notification Service 액세스 제어 예제 사례](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html)를 참조하세요.

기본적으로 Amazon SNS 주제에는 동일한 계정 내의 모든 Amazon RDS 리소스가 알림을 게시하도록 허용하는 정책이 있습니다. 교차 계정 알림을 허용하거나 특정 리소스에 대한 액세스를 제한하는 사용자 지정 정책을 연결할 수 있습니다.

다음은 대상 Amazon SNS 주제에 연결하는 IAM 정책의 예입니다. 지정된 접두사와 일치하는 이름을 가진 DB 인스턴스로 주제를 제한합니다. 이 정책을 사용하려면 다음 값을 지정합니다.
+ `Resource` – Amazon SNS 주제에 대한 Amazon 리소스 이름(ARN)
+ `SourceARN` - RDS 리소스 ARN
+ `SourceAccount` – 사용자의 AWS 계정 ID

리소스 유형 및 해당 ARN 목록을 보려면 *서비스 승인 참조*에서 [Amazon RDS에서 정의한 리소스](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-resources-for-iam-policies)를 참조하세요.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "events.rds.amazonaws.com"
      },
      "Action": [
        "sns:Publish"
      ],
      "Resource": "arn:aws:sns:us-east-1:123456789012:topic_name",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:prefix-*"
        },
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        }
      }
    }
  ]
}
```

------

# Amazon RDS 이벤트 알림 구독
<a name="USER_Events.Subscribing"></a>

가장 간단한 구독 생성 방법은 RDS 콘솔입니다. CLI 또는 API를 사용하여 이벤트 알림 구독을 생성하려면 먼저 Amazon Simple Notification Service 주제를 만든 후 Amazon SNS 콘솔이나 Amazon SNS API를 통해 해당 주제를 구독해야 합니다. 또한 CLI 명령이나 API 작업을 제출할 때도 사용되기 때문에 해당 주제의 Amazon 리소스 이름(ARN)을 잊어서는 안 됩니다. SNS 주제를 새로 만들어 구독하는 방법에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 시작하기](https://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html) 단원을 참조하십시오.

알림 메시지를 받고 싶은 소스 유형과 이벤트를 트리거링하는 Amazon RDS 소스를 지정할 수 있습니다.

**소스 유형**  
소스 유형입니다. 예를 들어 **소스 유형**은 **인스턴스**일 수 있습니다. 소스 유형을 선택해야 합니다.

**포함할 *리소스***  
이벤트를 생성하는 Amazon RDS 리소스입니다. 예를 들어 **특정 인스턴스 선택**을 선택한 다음 **myDBInstance1**을 선택할 수 있습니다.

다음 테이블에서는 **포함할 *리소스***를 지정하거나 지정하지 않을 때의 결과를 설명합니다


|  포함할 리소스  |  설명  |  예  | 
| --- | --- | --- | 
|  지정됨  |  RDS는 지정된 리소스에 대한 모든 이벤트에 대해서만 알림을 보냅니다.  | 소스 유형이 인스턴스이고 리소스가 myDBInstance1인 경우 RDS는 myDBInstance1에 대한 모든 이벤트에 대해서만 알립니다. | 
|  지정되지 않음  |  RDS는 모든 Amazon RDS 리소스에 대해 지정된 소스 유형에 대한 이벤트를 알려줍니다.  |  **소스 유형**이 **인스턴스**인 경우 RDS는 계정의 모든 인스턴스 관련 이벤트에 대해 알려줍니다.  | 

Amazon SNS 주제 구독자는 기본적으로 주제에 게시된 모든 메시지를 수신합니다. 메시지의 하위 집합만 수신하려면 구독자는 주제 구독에 필터 정책을 할당해야 합니다. SNS 메시지 필터링에 대한 자세한 내용은 **Amazon Simple Notification Service 개발자 안내서의 [Amazon SNS 메시지 필터링](https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html)을 참조하세요.

## 콘솔
<a name="USER_Events.Subscribing.Console"></a>

**RDS 이벤트 알림 구독 방법**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **이벤트 구독**을 선택합니다.

1. **이벤트 구독** 창에서 **이벤트 구독 생성**을 선택합니다.

1. 다음과 같이 구독 세부 정보를 입력합니다.

   1. **이름**에서 이벤트 알림 구독 이름을 입력합니다.

   1. **알림 보내기 대상**에게 다음 중 하나를 실시합니다.
      + **새 이메일 주제**를 선택합니다. 이메일 주제의 이름과 수신자 목록을 입력합니다. 기본 계정 연락처와 동일한 이메일 주소로 이벤트 구독을 구성하는 것이 좋습니다. 권장 사항, 서비스 이벤트 및 개인 건강 메시지는 다양한 채널을 사용하여 전송됩니다. 동일한 이메일 주소를 구독하면 모든 메시지가 한 위치에 통합됩니다.
      + **Amazon 리소스 이름(ARN)**을 선택합니다. 그런 다음 Amazon SNS 주제에 대해 기존 Amazon SNS ARN을 선택합니다.

        서버 측 암호화(SSE)에 대해 활성화된 주제를 사용하려면 AWS KMS key에 액세스하는 데 필요한 권한을 Amazon RDS에 부여하면 됩니다. 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [AWS 서비스 및 암호화된 주제의 이벤트 소스 간 호환성 활성화](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)를 참조하세요.

   1. [**Source type**]에서 원본 형식을 선택합니다. 예를 들어 **인스턴스** 또는 **파라미터 그룹**을 선택합니다.

   1. 이벤트 알림을 받을 이벤트 카테고리 및 리소스를 선택합니다.

      다음 예에서는 `testinst`라는 DB 인스턴스에 대한 이벤트 알림을 구성합니다.  
![\[소스 유형 입력\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/event-source.png)

   1. **생성**을 선택합니다.

Amazon RDS 콘솔에 현재 구독 생성 중으로 나옵니다.

![\[DB 이벤트 알림 구독의 목록 표시\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/EventNotification-Create2.png)


## AWS CLI
<a name="USER_Events.Subscribing.CLI"></a>

RDS 이벤트 알림을 구독하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/create-event-subscription.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-event-subscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`
+ `--sns-topic-arn`

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-event-subscription \
    --subscription-name myeventsubscription \
    --sns-topic-arn arn:aws:sns:us-east-1:123456789012:myawsuser-RDS \
    --enabled
```
Windows의 경우:  

```
aws rds create-event-subscription ^
    --subscription-name myeventsubscription ^
    --sns-topic-arn arn:aws:sns:us-east-1:123456789012:myawsuser-RDS ^
    --enabled
```

## API
<a name="USER_Events.Subscribing.API"></a>

Amazon RDS 이벤트 알림을 구독하려면 Amazon RDS API 함수 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateEventSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateEventSubscription.html)을 호출합니다. 다음 필수 파라미터를 포함합니다.
+ `SubscriptionName`
+ `SnsTopicArn`

# Amazon RDS 이벤트 알림 태그 및 속성
<a name="USER_Events.TagsAttributesForFiltering"></a>

Amazon RDS에서 Amazon Simple Notification Service(SNS) 또는 Amazon EventBridge로 이벤트 알림을 전송할 경우, 알림에 메시지 속성과 이벤트 태그가 포함됩니다. RDS는 이벤트 태그가 메시지 본문에 있는 동안 메시지 속성을 메시지와 함께 별도로 전송합니다. 메시지 속성과 Amazon RDS 태그를 사용하여 메타데이터를 리소스에 추가할 수 있습니다. 이러한 태그를 DB 인스턴스에 대한 주석과 함께 수정할 수 있습니다. Amazon RDS 리소스 태그 지정에 대한 자세한 내용은 [Amazon RDS 리소스에 태그 지정](USER_Tagging.md) 단원을 참조하세요.

기본적으로 Amazon SNS 및 Amazon EventBridge는 전송되는 모든 메시지를 수신합니다. SNS 및 EventBridge는 메시지를 필터링할 수 있으며 이메일, 문자 메시지 또는 HTTP 엔드포인트로 수신되는 통화 같은 기본 커뮤니케이션 모드로 알림을 전송할 수 있습니다.

**참고**  
이메일이나 문자 메시지로 전송된 알림에는 이벤트 태그가 없습니다.

다음 표에는 주제 구독자에게 전송되는 RDS 이벤트의 메시지 속성이 나와 있습니다.


| Amazon RDS 이벤트 속성 |  설명  | 
| --- | --- | 
| EventID |  RDS 이벤트 메시지의 식별자는 예를 들어 RDS-EVENT-0006입니다.  | 
| 리소스 |  이벤트를 발생시키는 리소스의 ARN 식별자(예: `arn:aws:rds:ap-southeast-2:123456789012:db:database-1`)입니다.  | 

RDS 태그는 서비스 이벤트의 영향을 받은 리소스에 대한 데이터를 제공합니다. RDS는 알림이 SNS 또는 EventBridge로 전송될 때 메시지 본문에 태그의 현재 상태를 추가합니다.

SNS의 필터링 메시지 속성에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS 메시지 필터링](https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html)을 참조하세요.

EventBridge의 이벤트 태그 필터링에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*에서 [Amazon EventBridge 이벤트 패턴에 사용할 콘텐츠 비교 연산자](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html)를 참조하세요.

SNS에 대한 페이로드 기반 태그 필터링에 대한 자세한 내용은 [Introducing payload-based message filtering for Amazon SNS](https://aws.amazon.com/blogs/compute/introducing-payload-based-message-filtering-for-amazon-sns/)를 참조하세요.

# Amazon RDS 이벤트 알림 구독의 목록 표시
<a name="USER_Events.ListSubscription"></a>

현재 Amazon RDS 이벤트 알림 구독을 목록으로 표시할 수 있습니다.

## 콘솔
<a name="USER_Events.ListSubscription.Console"></a>

**현재 Amazon RDS 이벤트 알림 구독을 목록으로 표시하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1.  탐색 창에서 [**Event subscriptions**]를 선택합니다. [**Event subscriptions**] 창에 이벤트 알림 구독이 모두 표시됩니다.  
![\[DB 이벤트 알림 구독의 목록 표시\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/EventNotification-ListSubs.png)

   

## AWS CLI
<a name="USER_Events.ListSubscription.CLI"></a>

현재 Amazon RDS 이벤트 알림 구독을 표시하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-event-subscriptions.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-event-subscriptions.html) 명령을 사용합니다.

**Example**  
다음은 모든 이벤트 구독을 설명하는 예제입니다.  

```
aws rds describe-event-subscriptions
```
다음은 `myfirsteventsubscription`을 설명하는 예제입니다.  

```
aws rds describe-event-subscriptions --subscription-name myfirsteventsubscription
```

## API
<a name="USER_Events.ListSubscription.API"></a>

현재 Amazon RDS 이벤트 알림 구독을 표시하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventSubscriptions.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventSubscriptions.html) 작업을 사용합니다.

# Amazon RDS 이벤트 알림 구독 수정
<a name="USER_Events.Modifying"></a>

구독을 생성한 후에는 구독 이름, 소스 식별자, 카테고리 또는 주제 ARN을 변경할 수 있습니다.

## 콘솔
<a name="USER_Events.Modifying.Console"></a>

**Amazon RDS 이벤트 알림 구독을 변경하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1.  탐색 창에서 [**Event subscriptions**]를 선택합니다.

1.  [**Event subscriptions**] 창에서 수정할 구독을 선택한 다음 [**Edit**]를 선택합니다.

1.  **대상** 또는 **원본** 섹션에서 구독을 변경합니다.

1. **편집**을 선택합니다. Amazon RDS 콘솔에 현재 구독 변경 중으로 나옵니다.  
![\[DB 이벤트 알림 구독의 목록 표시\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/EventNotification-Modify2.png)

   

## AWS CLI
<a name="USER_Events.Modifying.CLI"></a>

Amazon RDS 이벤트 알림 구독을 수정하려면, AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-event-subscription.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-event-subscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`

**Example**  
다음 코드를 사용하여 `myeventsubscription`을 사용할 수 있습니다.  
Linux, macOS 또는 Unix 대상:  

```
aws rds modify-event-subscription \
    --subscription-name myeventsubscription \
    --enabled
```
Windows의 경우:  

```
aws rds modify-event-subscription ^
    --subscription-name myeventsubscription ^
    --enabled
```

## API
<a name="USER_Events.Modifying.API"></a>

Amazon RDS 이벤트를 수정하려면 Amazon RDS API 작업 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyEventSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyEventSubscription.html)을 호출합니다. 다음 필수 파라미터를 포함합니다.
+ `SubscriptionName`

# Amazon RDS 이벤트 알림 구독에 소스 식별자 추가
<a name="USER_Events.AddingSource"></a>

소스 식별자(이벤트를 발생시키는 Amazon RDS 소스)를 기존 구독에 추가할 수 있습니다.

## 콘솔
<a name="USER_Events.AddingSource.Console"></a>

소스 식별자는 Amazon RDS 콘솔에서 구독 관련 설정을 변경하면서 선택 또는 선택 해제를 통해 쉽게 추가하거나 제거할 수 있습니다. 자세한 내용은 [Amazon RDS 이벤트 알림 구독 수정](USER_Events.Modifying.md) 섹션을 참조하세요.

## AWS CLI
<a name="USER_Events.AddingSource.CLI"></a>

Amazon RDS 이벤트 알림 구독에 소스 식별자를 추가하려면 AWS CLI [https://docs.aws.amazon.com/](https://docs.aws.amazon.com/) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`
+ `--source-identifier`

**Example**  
다음 예제에서는 `mysqldb` 구독에 소스 식별자 `myrdseventsubscription`를 추가합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds add-source-identifier-to-subscription \
    --subscription-name myrdseventsubscription \
    --source-identifier mysqldb
```
Windows의 경우:  

```
aws rds add-source-identifier-to-subscription ^
    --subscription-name myrdseventsubscription ^
    --source-identifier mysqldb
```

## API
<a name="USER_Events.AddingSource.API"></a>

Amazon RDS 이벤트 알림 구독에 소스 식별자를 추가하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html)을 호출합니다. 다음 필수 파라미터를 포함합니다.
+ `SubscriptionName`
+ `SourceIdentifier`

# Amazon RDS 이벤트 알림 구독에서 소스 식별자 제거
<a name="USER_Events.RemovingSource"></a>

임의 소스의 이벤트 알림 메시지를 더 이상 받고 싶지 않을 때는 소스 식별자(이벤트를 발생시키는 Amazon RDS 소스)를 구독에서 제거할 수 있습니다.

## 콘솔
<a name="USER_Events.RemovingSource.Console"></a>

소스 식별자는 Amazon RDS 콘솔에서 구독 관련 설정을 변경하면서 선택 또는 선택 해제를 통해 쉽게 추가하거나 제거할 수 있습니다. 자세한 내용은 [Amazon RDS 이벤트 알림 구독 수정](USER_Events.Modifying.md) 섹션을 참조하세요.

## AWS CLI
<a name="USER_Events.RemovingSource.CLI"></a>

Amazon RDS 이벤트 알림 구독에서 소스 식별자를 제거하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/remove-source-identifier-from-subscription.html](https://docs.aws.amazon.com/cli/latest/reference/rds/remove-source-identifier-from-subscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`
+ `--source-identifier`

**Example**  
다음 예제에서는 `mysqldb` 구독에서 소스 식별자 `myrdseventsubscription`를 제거합니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds remove-source-identifier-from-subscription \
    --subscription-name myrdseventsubscription \
    --source-identifier mysqldb
```
Windows의 경우:  

```
aws rds remove-source-identifier-from-subscription ^
    --subscription-name myrdseventsubscription ^
    --source-identifier mysqldb
```

## API
<a name="USER_Events.RemovingSource.API"></a>

Amazon RDS 이벤트 알림 구독에서 소스 식별자를 제거하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `SubscriptionName`
+ `SourceIdentifier`

# Amazon RDS 이벤트 알림 카테고리의 목록 표시
<a name="USER_Events.ListingCategories"></a>

리소스 유형의 이벤트는 모두 여러 카테고리로 그룹화됩니다. 이용 가능한 카테고리 목록을 보려면 다음 절차를 따릅니다.

## 콘솔
<a name="USER_Events.ListingCategories.Console"></a>

이벤트 알림 구독을 생성 또는 변경할 때는 이벤트 카테고리가 Amazon RDS 콘솔에 표시됩니다. 자세한 내용은 [Amazon RDS 이벤트 알림 구독 수정](USER_Events.Modifying.md) 섹션을 참조하세요.

![\[DB 이벤트 알림 카테고리의 목록 표시\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/EventNotification-Categories.png)




## AWS CLI
<a name="USER_Events.ListingCategories.CLI"></a>

Amazon RDS 이벤트 알림 범주를 표시하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-event-categories.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-event-categories.html) 명령을 사용합니다. 이 명령에는 필수 파라미터가 없습니다.

**Example**  

```
aws rds describe-event-categories
```

## API
<a name="USER_Events.ListingCategories.API"></a>

Amazon RDS 이벤트 알림 범주를 표시하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventCategories.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEventCategories.html) 명령을 사용합니다. 이 명령에는 필수 파라미터가 없습니다.

# Amazon RDS 이벤트 알림 구독 삭제
<a name="USER_Events.Deleting"></a>

필요 없는 구독은 삭제할 수 있습니다. 그러면 해당 주제의 모든 구독자에게는 구독 시 지정한 이벤트 알림 메시지가 발송되지 않습니다.

## 콘솔
<a name="USER_Events.Deleting.Console"></a>

**Amazon RDS 이벤트 알림 구독을 삭제하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1.  탐색 창에서 [**DB Event Subscriptions**]를 선택합니다.

1.  [**My DB Event Subscriptions**] 창에서 삭제할 구독을 선택합니다.

1. **Delete**(삭제)를 선택합니다.

1. Amazon RDS 콘솔에 현재 구독 삭제 중으로 나옵니다.  
![\[이벤트 알림 구독 삭제\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/EventNotification-Delete.png)

   

## AWS CLI
<a name="USER_Events.Deleting.CLI"></a>

Amazon RDS 이벤트 알림 구독을 삭제하려면, AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/delete-event-subscription.html](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-event-subscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `--subscription-name`

**Example**  
다음은 `myrdssubscription` 구독을 삭제하는 예제입니다.  

```
aws rds delete-event-subscription --subscription-name myrdssubscription
```

## API
<a name="USER_Events.Deleting.API"></a>

Amazon RDS 이벤트 알림 구독을 삭제하려면, RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html) 명령을 사용합니다. 다음 필수 파라미터를 포함합니다.
+ `SubscriptionName`

# Amazon RDS 이벤트에서 트리거되는 규칙 생성
<a name="rds-cloud-watch-events"></a>

Amazon EventBridge를 사용하면 AWS 서비스를 자동화하고 애플리케이션 가용성 문제나 리소스 변경 같은 시스템 이벤트에 응답할 수 있습니다.

**Topics**
+ [Amazon RDS 이벤트를 Amazon EventBridge로 전송하는 규칙 생성](#rds-cloudwatch-events.sending-to-cloudwatch-events)
+ [자습서: Amazon EventBridge를 사용하여 DB 인스턴스의 상태 변경 로깅](#log-rds-instance-state)

## Amazon RDS 이벤트를 Amazon EventBridge로 전송하는 규칙 생성
<a name="rds-cloudwatch-events.sending-to-cloudwatch-events"></a>

관심이 있는 Amazon RDS 이벤트와 이벤트가 규칙과 일치할 때 수행할 자동화된 작업을 나타내는 단순한 규칙을 작성할 수 있습니다. AWS Lambda 함수나 Amazon SNS 주제 등 다양한 대상을 설정하고 JSON 형식으로 된 이벤트를 받을 수 있습니다. 예를 들어 DB 인스턴스가 생성되거나 삭제될 때마다 Amazon EventBridge에 이벤트를 전송하도록 Amazon RDS를 구성할 수 있습니다. 자세한 내용은 [Amazon CloudWatch Events 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/) 및 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요.

**RDS 이벤트에서 트리거되는 규칙 생성**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창의 **이벤트** 아래에서 **규칙**을 선택합니다.

1. **규칙 생성**을 선택합니다.

1. [**Event Source**]에서 다음을 수행합니다.

   1. **이벤트 패턴**을 선택합니다.

   1. **서비스 이름**에서 **Relational Database Service(RDS)**를 선택합니다.

   1. **이벤트 유형(Event Type)**에서 이벤트를 트리거할 Amazon RDS 리소스 유형을 선택합니다. 예를 들어, DB 인스턴스가 이벤트를 트리거하는 경우 **RDS DB 인스턴스 이벤트(RDS DB Instance Event)**를 선택합니다.

1. **대상**에서 **대상 추가**를 선택한 후 선택한 유형의 이벤트가 감지되면 작동할 AWS 서비스를 선택합니다.

1. 필요할 경우 이 섹션의 다른 필드에 이 대상 유형에 관련된 정보를 입력합니다.

1. 여러 대상 유형에 대해 EventBridge에서는 대상에 이벤트를 보낼 권한이 필요합니다. 이 경우 EventBridge는 이벤트 실행에 필요한 IAM 역할을 생성할 수 있습니다.
   + IAM 역할을 자동으로 생성하려면 **이 특정 리소스에 대해 새 역할 생성**을 선택합니다.
   + 이전에 생성한 IAM 역할을 사용하려면 **기존 역할 사용**을 선택합니다.

1. 선택적으로 5-7단계를 반복하여 이 규칙의 다른 대상을 추가합니다.

1. **세부 정보 구성**을 선택합니다. **규칙 정의**에 규칙의 이름과 규칙에 대한 설명을 입력합니다.

   규칙 이름은 이 리전 내에서 고유해야 합니다.

1. **규칙 생성**을 선택합니다.

자세한 내용은 Amazon CloudWatch 사용 설명서**의 [이벤트에서 트리거되는 EventBridge 규칙 생성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Rule.html)을 참조하세요.

## 자습서: Amazon EventBridge를 사용하여 DB 인스턴스의 상태 변경 로깅
<a name="log-rds-instance-state"></a>

이 자습서에서는 Amazon RDS 인스턴스의 상태 변경을 로깅하는 AWS Lambda 함수를 생성합니다. 그런 다음 기존 RDS DB 인스턴스의 상태가 변경될 때마다 함수를 실행하는 규칙을 생성합니다. 이 자습서에서는 일시적으로 종료할 수 있는 실행 중인 작은 테스트 인스턴스가 있다고 가정합니다.

**중요**  
실행 중인 프로덕션 DB 인스턴스에서 이 자습서를 수행하지 마세요.

**Topics**
+ [1단계: AWS Lambda 함수 생성](#rds-create-lambda-function)
+ [2단계: 규칙 생성](#rds-create-rule)
+ [3단계: 규칙 테스트](#rds-test-rule)

### 1단계: AWS Lambda 함수 생성
<a name="rds-create-lambda-function"></a>

Lambda 함수를 생성하여 상태 변경 이벤트를 기록합니다. 규칙을 생성할 때 이 함수를 지정합니다.

**Lambda 함수를 만들려면**

1. AWS Lambdahttps://console.aws.amazon.com/lambda/[에서 ](https://console.aws.amazon.com/lambda/) 콘솔을 엽니다.

1. Lambda를 처음 사용하는 경우 시작 페이지가 표시됩니다. **지금 시작**을 선택합니다. 그렇지 않은 경우에는 **함수 생성**을 선택합니다.

1. **새로 작성**을 선택합니다.

1. **함수 생성** 페이지에서 다음을 수행합니다.

   1. Lambda 함수의 이름과 설명을 입력합니다. 예를 들어 함수 이름을 **RDSInstanceStateChange**로 지정합니다.

   1. **런타임**에서 **Node.js 16x**를 선택합니다.

   1. **아키텍처**에서는 **x86\$164**를 선택합니다.

   1. **실행 역할**에서는 다음 중 하나를 수행합니다.
      + **기본 Lambda 권한을 가진 새 역할 생성**을 선택합니다.
      + **기존 역할**에서는 **기존 역할 사용**을 선택합니다. 사용하려는 역할을 선택합니다.

   1. **함수 생성**을 선택합니다.

1. [**RDSInstanceStateChange**] 페이지에서 다음을 수행합니다.

   1. **코드 소스**에서 **index.js**를 선택합니다.

   1. **index.js** 창에서 기존 코드를 삭제합니다.

   1. 다음 코드를 입력합니다.

      ```
      console.log('Loading function');
      
      exports.handler = async (event, context) => {
          console.log('Received event:', JSON.stringify(event));
      };
      ```

   1. [**Deploy**]를 선택합니다.

### 2단계: 규칙 생성
<a name="rds-create-rule"></a>

Amazon RDS 인스턴스를 시작할 때마다 Lambda 함수를 실행하는 규칙을 생성합니다.

**EventBridge 규칙을 만들려면**

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 탐색 창에서 **규칙**을 선택합니다.

1. **규칙 생성**을 선택합니다.

1. 규칙에 대해 이름과 설명을 입력하십시오. 예를 들면 **RDSInstanceStateChangeRule**을 입력합니다.

1. **이벤트 패턴이 있는 규칙**을 선택한 후**다음**을 선택합니다.

1. **이벤트 소스**에서 **AWS 이벤트 또는 EventBridge 파트너 이벤트**를 선택합니다.

1. **이벤트 패턴** 섹션까지 아래로 스크롤합니다.

1. **이벤트 소스**에서 **AWS 서비스**를 선택합니다.

1. **AWS 서비스**에서는 **Relational Database Service(RDS)**를 선택합니다.

1. **이벤트 유형**에서 **RDS DB 인스턴스 이벤트**를 선택합니다.

1. 기본 이벤트 패턴을 그대로 둡니다. 그리고 **다음**을 선택합니다.

1. **대상 유형**에서 **AWS 서비스**를 선택합니다.

1. **대상 선택**에서 **Lambda 함수**를 선택합니다.

1. **함수**에서는 생성한 Lambda 함수를 선택합니다. **다음**을 선택합니다.

1. **태그 구성**에서는 **다음**을 선택합니다.

1. 규칙의 단계를 검토하십시오. 그런 다음 **규칙 생성**을 선택합니다.

### 3단계: 규칙 테스트
<a name="rds-test-rule"></a>

규칙을 테스트하려면 RDS DB 인스턴스를 종료합니다. 인스턴스가 종료될 때까지 몇 분 기다린 후에 Lambda 함수가 호출되었는지 확인합니다.

**DB 인스턴스를 중지하여 규칙을 테스트하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. RDS DB 인스턴스를 중지합니다.

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 탐색 창에서 [**규칙(Rules)**]을 선택하고 생성한 규칙의 이름을 선택합니다.

1. **규칙 세부 정보**에서 **모니터링**을 선택합니다.

   그러면 Amazon CloudWatch 콘솔로 리디렉션됩니다. 리디렉션되지 않은 경우 **CloudWatch에서 지표 보기**를 클릭합니다.

1. [**모든 지표(All metrics)**]에서 생성한 규칙의 이름을 선택합니다.

   그래프에 규칙이 호출된 것으로 표시되어야 합니다.

1. 탐색 창에서 **로그 그룹**을 선택합니다.

1. Lambda 함수에 대한 로그 그룹 이름(**/aws/lambda/*function-name***)을 선택합니다.

1. 로그 스트림 이름을 선택하여 시작한 인스턴스에서 함수를 통해 제공된 데이터를 확인합니다. 다음과 유사한 수신된 이벤트가 표시되어야 합니다.

   ```
   {
       "version": "0",
       "id": "12a345b6-78c9-01d2-34e5-123f4ghi5j6k",
       "detail-type": "RDS DB Instance Event",
       "source": "aws.rds",
       "account": "111111111111",
       "time": "2021-03-19T19:34:09Z",
       "region": "us-east-1",
       "resources": [
           "arn:aws:rds:us-east-1:111111111111:db:testdb"
       ],
       "detail": {
           "EventCategories": [
               "notification"
           ],
           "SourceType": "DB_INSTANCE",
           "SourceArn": "arn:aws:rds:us-east-1:111111111111:db:testdb",
           "Date": "2021-03-19T19:34:09.293Z",
           "Message": "DB instance stopped",
           "SourceIdentifier": "testdb",
           "EventID": "RDS-EVENT-0087"
       }
   }
   ```

   JSON 형식의 RDS 이벤트에 대한 자세한 예는 [Amazon RDS에 대한 이벤트 개요](working-with-events.md#rds-cloudwatch-events.sample) 단원을 참조하세요.

1. (선택 사항) 작업이 완료되면 Amazon RDS 콘솔을 열고 중지한 인스턴스를 시작할 수 있습니다.

# Amazon RDS 이벤트 카테고리 및 이벤트 메시지
<a name="USER_Events.Messages"></a>

Amazon RDS는 Amazon RDS 콘솔, AWS CLI 또는 API를 사용하여 구독할 수 있는 이벤트 카테고리가 매우 많습니다.

**Topics**
+ [DB 클러스터 이벤트](#USER_Events.Messages.cluster)
+ [DB 클러스터 스냅샷 이벤트](#USER_Events.Messages.cluster-snapshot)
+ [DB 인스턴스 이벤트](#USER_Events.Messages.instance)
+ [DB 파라미터 그룹 이벤트](#USER_Events.Messages.parameter-group)
+ [DB 보안 그룹 이벤트](#USER_Events.Messages.security-group)
+ [DB 스냅샷 이벤트](#USER_Events.Messages.snapshot)
+ [RDS 프록시 이벤트](#USER_Events.Messages.rds-proxy)
+ [블루/그린 배포 이벤트](#USER_Events.Messages.BlueGreenDeployments)
+ [사용자 지정 엔진 버전 이벤트](#USER_Events.Messages.CEV)

## DB 클러스터 이벤트
<a name="USER_Events.Messages.cluster"></a>

다음 표에는 DB 클러스터가 원본 유형일 때 이벤트 카테고리와 이벤트 목록이 나와 있습니다.

다중 AZ DB 클러스터 배포에 대한 자세한 내용은 [Amazon RDS용 다중 AZ DB 클러스터 배포](multi-az-db-clusters-concepts.md) 섹션을 참조하세요.


|  Category  | RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  구성 변경  | RDS-EVENT-0016 |  마스터 보안 인증 정보를 재설정하세요.  | 없음 | 
| 생성 | RDS-EVENT-0170 |  DB 클러스터가 생성되었습니다.  |  없음  | 
|  장애 조치  | RDS-EVENT-0069 |  클러스터 장애 조치가 실패했습니다. 클러스터 인스턴스의 상태를 확인하고 다시 시도하세요.  |  없음  | 
|  장애 조치  | RDS-EVENT-0070 |  이전 프라이머리(*이름*)를 다시 승격하는 중입니다.  |  없음  | 
|  장애 조치  | RDS-EVENT-0071 |  DB 인스턴스(*이름*)로 장애 조치를 완료했습니다.  |  없음  | 
|  장애 조치  | RDS-EVENT-0072 |  DB 인스턴스(*이름*)에 대한 동일한 AZ 장애 조치를 시작했습니다.  |  없음  | 
|  장애 조치  | RDS-EVENT-0073 |  DB 인스턴스(*이름*)에 대한 크로스 AZ 장애 조치를 시작했습니다.  |  없음  | 
| 실패 | RDS-EVENT-0354 |  호환되지 않는 리소스 때문에 DB 클러스터를 생성할 수 없습니다. *메시지*.  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
| 실패 | RDS-EVENT-0355 |  리소스 제한이 충분하지 않아 DB 클러스터를 생성할 수 없습니다. *메시지*.  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  유지 관리  | RDS-EVENT-0156 |  DB 클러스터에 사용 가능한 DB 엔진 마이너 버전 업그레이드가 있습니다.  |  없음  | 
|  유지 관리  | RDS-EVENT-0173 |  데이터베이스 클러스터 엔진 버전이 업그레이드되었습니다.  | DB 클러스터의 패치 적용이 완료되었습니다. | 
|  유지 관리  | RDS-EVENT-0174 |  데이터베이스 클러스터가 업그레이드할 수 없는 상태입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0176 |  데이터베이스 클러스터 엔진 메이저 버전이 업그레이드되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0177 |  데이터베이스 클러스터 업그레이드가 진행 중입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0286 |  데이터베이스 클러스터 엔진 *version\$1number* 버전 업그레이드가 시작되었습니다. 클러스터는 온라인 상태로 유지됩니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0287 |  운영 체제 업그레이드 요구 사항이 감지되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0288 |  클러스터 운영 체제 업그레이드를 시작하는 중입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0289 |  클러스터 운영 체제 업그레이드가 완료되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0290 |  데이터베이스 클러스터가 패치되었습니다. 소스 버전 *version\$1number* => *new\$1version\$1number*.  | 없음 | 
|  유지 관리  | RDS-EVENT-0410 |  데이터베이스 클러스터 엔진 버전 업그레이드를 위한 사전 점검이 시작되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0412 |  데이터베이스 클러스터 엔진 버전 업그레이드에 대한 사전 점검이 실패했거나 제한 시간이 초과되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0413 |  DB 클러스터 업그레이드 사전 작업이 진행 중입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0414 |  DB 클러스터 업그레이드 사후 작업이 진행 중입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0417 |  데이터베이스 클러스터 엔진 버전 업그레이드가 시작되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0172 |  클러스터 이름을 *이름*에서 *이름*으로 변경했습니다.  |  없음  | 
|  읽기 전용 복제본  | RDS-EVENT-0411 |  데이터베이스 클러스터 엔진 버전 업그레이드를 위한 사전 점검이 완료되었습니다.  | 없음 | 

## DB 클러스터 스냅샷 이벤트
<a name="USER_Events.Messages.cluster-snapshot"></a>

다음 표에는 DB 클러스터 스냅샷이 원본 유형일 때 이벤트 카테고리와 이벤트 목록이 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)

## DB 인스턴스 이벤트
<a name="USER_Events.Messages.instance"></a>

다음 표는 DB 인스턴스가 소스 유형일 때 이벤트 카테고리와 이벤트 목록을 나타냅니다.


|  카테고리  | RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  가용성  | RDS-EVENT-0004 |  DB 인스턴스 종료.  | 없음 | 
|  가용성  | RDS-EVENT-0006 |  DB 인스턴스가 다시 시작되었습니다.  | 없음 | 
|  가용성  | RDS-EVENT-0022 |  MySQL을 다시 시작하는 중 오류가 발생했습니다. *메시지*.  | MySQL를 다시 시작하는 중 오류가 발생했습니다. | 
|  가용성  | RDS-EVENT-0221 |  DB 인스턴스가 스토리지 전체 임계값에 도달했으며 데이터베이스가 종료되었습니다. 이 문제를 해결하기 위해 할당된 스토리지를 늘릴 수 있습니다.  | 없음 | 
|  가용성  | RDS-EVENT-0222 |  DB 인스턴스(*이름*)의 사용 가능한 스토리지 용량이 할당된 스토리지의 *백분율*로 낮습니다[할당된 스토리지: *용량*, 사용 가능한 스토리지: *용량*]. 사용 가능한 스토리지가 *용량*보다 낮은 경우 손상을 방지하기 위해 데이터베이스가 종료됩니다. 이 문제를 해결하기 위해 할당된 스토리지를 늘릴 수 있습니다.  | DB 인스턴스가 할당된 스토리지의 90% 이상을 소비하는 경우에만 RDS for MySQL에 적용됩니다. Free Storage Space 지표를 사용하여 DB 인스턴스에 대한 스토리지 공간을 모니터링합니다. 자세한 내용은 [Amazon RDS DB 인스턴스 스토리지](CHAP_Storage.md) 섹션을 참조하세요. | 
|  가용성  | RDS-EVENT-0330 |  전용 트랜잭션 로그 볼륨의 여유 스토리지 용량이 DB 인스턴스 *이름*에 비해 너무 낮습니다. 로그 볼륨 여유 스토리지는 할당된 스토리지의 *백분율*입니다. [할당된 스토리지: *용량*, 여유 스토리지: *용량*] 여유 스토리지가 *용량*보다 낮은 경우 손상을 방지하기 위해 데이터베이스가 종료됩니다. 전용 트랜잭션 로그 볼륨을 비활성화하여 이 문제를 해결할 수 있습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  가용성  | RDS-EVENT-0331 |  전용 트랜잭션 로그 볼륨의 여유 스토리지 용량이 DB 인스턴스 *이름*에 비해 너무 낮습니다. 로그 볼륨 여유 스토리지는 프로비저닝된 스토리지의 *백분율*입니다. [프로비저닝된 스토리지: *용량*, 여유 스토리지: *용량*] 전용 트랜잭션 로그 볼륨을 비활성화하여 이 문제를 해결할 수 있습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  가용성  | RDS-EVENT-0396 |  Amazon RDS에서 내부 사용자 암호 교체 후 인스턴스의 다음 유지 관리 기간에 이 읽기 전용 복제본의 재부팅을 예약했습니다.  |  없음  | 
| 가용성 | RDS-EVENT-0419 | Amazon RDS가 데이터베이스 인스턴스 *이름*의 KMS 암호화 키에 액세스할 수 없습니다. 이 데이터베이스는 액세스할 수 없음 상태가 됩니다. 자세한 내용은 Amazon RDS 설명서의 문제 해결 섹션을 참조하세요. | 없음 | 
|  백업  | RDS-EVENT-0001 |  DB 인스턴스 백업.  | 없음 | 
|  백업  | RDS-EVENT-0002 |  DB 인스턴스 백업이 완료되었습니다.  | 없음 | 
|  백업  | RDS-EVENT-0086 |  옵션 그룹(*이름*)을 데이터베이스 인스턴스(*이름*)와 연결할 수 없습니다. 옵션 그룹(*이름*)이 DB 인스턴스 클래스 및 구성에서 지원되는지 확인하세요. 지원되는 경우 모든 옵션 그룹 설정을 확인하고 다시 시도하세요.  |  자세한 내용은 [옵션 그룹 작업](USER_WorkingWithOptionGroups.md) 섹션을 참조하세요. | 
|  구성 변경  | RDS-EVENT-0011 |  DBParameterGroup *이름*을 사용하도록 업데이트되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0012 |  수정을 데이터베이스 인스턴스 클래스에 적용.  | 없음 | 
|  구성 변경  | RDS-EVENT-0014 |  DB 인스턴스 클래스에 대한 수정 적용이 완료되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0016 |  마스터 보안 인증 정보를 재설정하세요.  | 없음 | 
|  구성 변경  | RDS-EVENT-0017 |  할당된 스토리지에 대한 수정 적용이 완료되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0018 |  할당된 스토리지에 수정을 적용하는 중입니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0024 |  다중 AZ DB 인스턴스로 전환하기 위한 수정을 적용하는 중입니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0025 |  다중 AZ DB 인스턴스로 전환하기 위한 수정 적용이 완료되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0028 |  자동 백업이 비활성화되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0029 |  표준(단일 AZ) DB 인스턴스로 전환하기 위한 수정 적용이 완료되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0030 |  표준(단일 AZ) DB 인스턴스로 전환하기 위한 수정을 적용하는 중입니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0032 |  자동 백업이 활성화되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0033 |  마스터 사용자 이름과 일치하는 사용자가 *숫자*명 있습니다. 특정 호스트에 연결되지 않은 사용자만 재설정합니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0067 |  암호를 재설정할 수 없습니다. 오류 정보: *메시지*.  | 없음 | 
|  구성 변경  | RDS-EVENT-0078 |  모니터링 간격이 *숫자*로 변경되었습니다.  |  Enhanced Monitoring 구성이 변경되었습니다. | 
|  구성 변경  | RDS-EVENT-0092 |  DB 파라미터 그룹의 업데이트를 완료했습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0217 |  할당된 스토리지에 자동 크기 조정 시작 수정 적용  | 없음 | 
|  구성 변경  | RDS-EVENT-0218 |  할당된 스토리지에 자동 크기 조정 시작 수정 적용을 마쳤습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0295 |  스토리지 구성 업그레이드가 시작되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0296 |  스토리지 구성 업그레이드가 완료되었습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0332 |  전용 로그 볼륨이 비활성화되었습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  구성 변경  | RDS-EVENT-0333 |  전용 로그 볼륨의 비활성화가 시작되었습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  구성 변경  | RDS-EVENT-0334 |  전용 로그 볼륨의 활성화가 시작되었습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  구성 변경  | RDS-EVENT-0335 |  전용 로그 볼륨이 활성화되었습니다.  |  자세한 내용은 [전용 로그 볼륨(DLV)](CHAP_Storage.md#CHAP_Storage.dlv) 섹션을 참조하세요.  | 
|  구성 변경  | RDS-EVENT-0383 |  *엔진 버전*에서 memcached 플러그인을 지원하지 않습니다. RDS는 계속해서 DB 인스턴스를 업그레이드하고, 이 플러그인을 제거합니다.  |  MySQL 8.3.0부터 memcached 플러그인은 지원되지 않습니다. 자세한 내용은 [MySQL 8.3.0의 변경 사항(2024-01-16, Innovation 릴리스)](https://dev.mysql.com/doc/relnotes/mysql/8.3/en/news-8-3-0.html)을 참조하세요.  | 
|  생성  | RDS-EVENT-0005 |  생성된 DB 인스턴스.  | 없음 | 
|  삭제  | RDS-EVENT-0003 |  DB 인스턴스가 삭제되었습니다.  | 없음 | 
|  장애 조치  | RDS-EVENT-0013 |  다중 AZ 인스턴스 장애 조치가 시작되었습니다.  | 예비 DB 인스턴스의 승격 원인이었던 다중 AZ 장애 조치가 시작되었습니다. | 
|  장애 조치  | RDS-EVENT-0015 |  예비로의 다중 AZ 장애 조치가 완료되었습니다. DNS 전파에는 몇 분 정도 걸릴 수 있습니다.  | 예비 DB 인스턴스의 승격 원인이었던 다중 AZ 장애 조치가 완료되었습니다. DNS가 새로운 기본 DB 인스턴스로 이전하는 데 몇 분 걸릴 수 있습니다. | 
|  장애 조치  | RDS-EVENT-0034 |  최근에 데이터베이스 인스턴스에 장애 조치가 발생하였기 때문에 사용자가 요청한 장애 조치를 중단합니다.  | 최근에 DB 인스턴스에 장애 조치가 발생하였기 때문에 Amazon RDS가 요청된 장애 조치를 시도하지 않습니다. | 
|  장애 조치  | RDS-EVENT-0049 | 다중 AZ 인스턴스 장애 조치가 완료되었습니다. | 없음 | 
|  장애 조치  | RDS-EVENT-0050 |  다중 AZ 인스턴스 활성화가 시작되었습니다.  | 성공적인 DB 인스턴스 복구 후 다중 AZ 활성화가 시작되었습니다. 이 이벤트는 Amazon RDS가 기본 DB 인스턴스를 이전 기본 DB 인스턴스와 동일한 AZ로 승격하는 경우에 발생합니다. | 
|  장애 조치  | RDS-EVENT-0051 |  다중 AZ 인스턴스 활성화가 완료되었습니다.  | 다중 AZ 활성화가 완료되었습니다. 이제 데이터베이스에 액세스할 수 있습니다. | 
|  장애 조치  | RDS-EVENT-0065 |  부분 장애 조치에서 복구되었습니다.  | 없음 | 
|  실패  | RDS-EVENT-0031 |  DB 인스턴스가 *이름* 상태로 전환되었습니다. RDS는 특정 시점 복원을 시작할 것을 권장합니다.  | 호환되지 않는 구성 또는 기본 스토리지 문제로 인해 DB 인스턴스에 장애가 발생했습니다. DB 인스턴스에 대해 특정 시점으로 복구를 시작합니다. | 
|  실패  | RDS-EVENT-0035 |  데이터베이스 인스턴스가 *상태*로 전환되었습니다. *메시지*.  | DB 인스턴스에 잘못된 파라미터가 있습니다. 예를 들어 이 인스턴스 클래스의 메모리 관련 파라미터가 너무 높게 설정되어 있어 DB 인스턴스가 시작되지 않는 경우 사용자가 할 수 있는 작업은 메모리 파라미터를 수정하고 DB 인스턴스를 재부팅하는 것입니다. | 
|  실패  | RDS-EVENT-0036 |  데이터베이스 인스턴스가 *상태* 상태입니다. *메시지*.  | DB 인스턴스가 호환되지 않는 네트워크에 있습니다. 특정 서브넷 ID 중 일부가 잘못되었거나 존재하지 않습니다. | 
|  실패  | RDS-EVENT-0058 |  Statspack 설치에 실패했습니다. *메시지*.  | Oracle Statspack 사용자 계정인 `PERFSTAT` 생성 중 오류가 발생하였습니다. `STATSPACK` 옵션을 추가하기 전에 해당 계정을 삭제하세요. | 
|  실패  | RDS-EVENT-0079 |  Amazon RDS가 확장 모니터링을 위한 보안 인증 정보를 생성할 수 없으며 이 기능은 비활성화되었습니다. 이는 rds-monitoring-role이 존재하지 않고 계정에 올바르게 구성되어 있지 않기 때문일 수 있습니다. 자세한 내용은 Amazon RDS 설명서의 문제 해결 섹션을 참조하세요.  |  확장 모니터링을 활성화하려면 확장 모니터링 IAM 역할이 있어야 합니다. IAM 역할 생성에 대한 자세한 내용은 [Amazon RDS Enhanced Monitoring에 대한 IAM 역할을 생성하려면](USER_Monitoring.OS.Enabling.md#USER_Monitoring.OS.IAMRole) 섹션을 참조하세요.  | 
|  실패  | RDS-EVENT-0080 |  Amazon RDS가 인스턴스(*이름*)에 확장 모니터링을 구성할 수 없으며 이 기능은 비활성화되었습니다. 이는 rds-monitoring-role이 존재하지 않고 계정에 올바르게 구성되어 있지 않기 때문일 수 있습니다. 자세한 내용은 Amazon RDS 설명서의 문제 해결 섹션을 참조하세요.  |  구성을 변경하는 동안 오류가 발생하여 확장 모니터링이 비활성화되었습니다. 확장 모니터링 IAM 역할이 잘못 구성된 것 같습니다. 확장 모니터링 IAM 역할을 생성하는 방법에 대한 자세한 내용은 [Amazon RDS Enhanced Monitoring에 대한 IAM 역할을 생성하려면](USER_Monitoring.OS.Enabling.md#USER_Monitoring.OS.IAMRole) 섹션을 참조하세요.  | 
|  실패  | RDS-EVENT-0081 |  Amazon RDS에서 *이름* 옵션에 대한 보안 인증 정보를 생성할 수 없습니다. 이는 계정에 *이름* IAM 역할이 올바르게 구성되지 않았기 때문입니다. 자세한 내용은 Amazon RDS 설명서의 문제 해결 섹션을 참조하세요.  |  SQL Server 기본 백업 및 복원을 위해 Amazon S3 버킷에 액세스하는 데 사용하는 IAM 역할이 잘못 구성되었습니다. 자세한 내용은 [기본 백업 및 복원 설정](SQLServer.Procedural.Importing.Native.Enabling.md) 섹션을 참조하세요.  | 
|  실패  | RDS-EVENT-0165 |  RDS Custom DB 인스턴스가 지원 경계를 벗어났습니다.  |  RDS Custom DB 인스턴스를 `unsupported-configuration` 상태로 전환시키는 구성 문제는 사용자가 해결해야 합니다. AWS 인프라와 관련된 문제인 경우 콘솔 또는 AWS CLI를 사용하여 해결할 수 있습니다. 운영 체제 또는 데이터베이스 구성에 문제가 있는 경우 호스트에 로그인하여 해결하면 됩니다.자세한 내용은 [RDS Custom 지원 범위](custom-concept.md#custom-troubleshooting.support-perimeter) 섹션을 참조하세요. | 
|  실패  | RDS-EVENT-0188 |  DB 인스턴스가 업그레이드할 수 없는 상태입니다. *메시지*.  |  데이터 딕셔너리와 관련한 비호환성 때문에 Amazon RDS가 MySQL DB 인스턴스를 업그레이드하지 못했습니다. 버전 8.0으로 업그레이드하려는 시도가 실패했기 때문에 DB 인스턴스가 MySQL 버전 5.7로 롤백되었거나 버전 8.4로 업그레이드하려는 시도가 실패했기 때문에 MySQL 버전 8.0으로 롤백되었습니다. 자세한 내용은 [업그레이드 실패 후 롤백](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.Major.RollbackAfterFailure) 섹션을 참조하세요.  | 
|  실패  | RDS-EVENT-0219 |  DB 인스턴스가 잘못된 상태입니다. 아무 조치도 필요하지 않습니다. 자동 확장은 나중에 다시 시도합니다.  | 없음 | 
|  실패  | RDS-EVENT-0220 |  DB 인스턴스가 이전 규모 조정 스토리지 작업의 냉각 기간 내에 있습니다. DB 인스턴스를 최적화하고 있습니다. 이 작업은 최소 6시간이 걸립니다. 아무 조치도 필요하지 않습니다. 자동 확장은 냉각 기간 후에 다시 시도합니다.  | 없음 | 
|  실패  | RDS-EVENT-0223 |  스토리지 자동 규모 조정이 다음 이유로 스토리지의 규모를 조정할 수 없습니다. *이유*.  | 없음 | 
|  실패  | RDS-EVENT-0224 |  스토리지 자동 규모 조정이 보류 중인 규모 조정 스토리지 작업을 트리거했으며, 이로 인해 최대 스토리지 임계값에 도달하거나 이를 초과하게 됩니다. 최대 스토리지 임계값을 늘립니다.  | 없음 | 
|  실패  | RDS-EVENT-0237 |  DB 인스턴스에 현재 가용 영역에서 사용할 수 없는 스토리지 유형이 있습니다. 자동 확장은 나중에 다시 시도합니다.  | 없음 | 
| 실패 | RDS-EVENT-0254 |  이 고객 계정의 기본 스토리지 할당량이 한도를 초과했습니다. 인스턴스에서 규모 조정이 진행되도록 허용된 스토리지 할당량을 늘리세요.  | 없음 | 
|  실패  |  RDS-EVENT-0278  |  DB 인스턴스 생성에 실패했습니다. *메시지*  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0279  |  RDS Custom 읽기 전용 복제본의 승격이 실패했습니다. *메시지*  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0280  |  사전 검사에 실패했기 때문에 RDS Custom에서 DB 인스턴스를 업그레이드하지 못했습니다. *메시지*  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0281  |  사전 검사에 실패했기 때문에 RDS Custom에서 DB 인스턴스를 수정하지 못했습니다. *메시지*  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0282  |  탄력적 IP 권한이 올바르지 않기 때문에 RDS Custom에서 DB 인스턴스를 수정하지 못했습니다. 탄력적 IP 주소에 `AWSRDSCustom` 태그가 지정되었는지 확인하세요.  |  없음  | 
|  실패  |  RDS-EVENT-0283  |  계정에서 탄력적 IP 한도에 도달했기 때문에 RDS Custom에서 DB 인스턴스를 수정하지 못했습니다. 사용하지 않는 탄력적 IP를 해제하거나 탄력적 IP 주소 한도에 대한 할당량 증가를 요청하세요.  |  없음  | 
|  실패  |  RDS-EVENT-0284  |  사전 검사에 실패했기 때문에 RDS Custom에서 인스턴스를 고가용성으로 변환하지 못했습니다. *메시지*  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0285  |  *메시지* 때문에 RDS Custom에서 DB 인스턴스의 최종 스냅샷을 만들지 못했습니다.  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  |  RDS-EVENT-0421  |  RDS Custom이 DB 인스턴스를 다중 AZ 배포: *메시지*로 변환할 수 없습니다. 인스턴스는 단일 AZ 배포로 유지됩니다. RDS Custom for Oracle의 다중 AZ 배포에 대한 자세한 내용은 RDS 사용 설명서를 참조하세요.  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
|  실패  | RDS-EVENT-0306 |  스토리지 구성 업그레이드에 실패했습니다. 업그레이드를 다시 시도하세요.  | 없음 | 
|  실패  | RDS-EVENT-0315 |  호환되지 않는 네트워크 데이터베이스(*이름*)를 사용 가능한 상태(*메시지*)로 이전할 수 없음  |  데이터베이스 네트워킹 구성이 유효하지 않습니다. 데이터베이스는 호환되지 않는 네트워크에서 사용 가능한 네트워크로 이전이 불가능합니다.  | 
| 실패 | RDS-EVENT-0328 |  호스트를 도메인에 조인시키지 못했습니다. 인스턴스 *instancename*의 도메인 멤버십 상태가 '실패'로 설정되었습니다.  | 없음 | 
| 실패 | RDS-EVENT-0329 |  호스트를 도메인에 조인시키지 못했습니다. 도메인 조인 프로세스 중에 Microsoft Windows에서 오류 코드 *메시지*를 반환했습니다. 네트워크 및 권한 구성을 확인하고 도메인 조인을 다시 시도하도록 `modify-db-instance` 요청을 진행하세요.  | 자체 관리형 Active Directory를 사용하는 경우 [자체 관리형 Active Directory 문제 해결](USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory.md) 섹션을 참조하세요. | 
| 실패 | RDS-EVENT-0353 |  리소스 제한이 충분하지 않아 DB 인스턴스를 생성할 수 없습니다. *메시지*.  |  *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다.  | 
| 실패 | RDS-EVENT-0356 |  RDS가 도메인의 Kerberos 엔드포인트를 구성하지 못했습니다. 이로 인해 DB 인스턴스에 대한 Kerberos 인증이 차단될 수 있습니다. DB 인스턴스와 도메인 컨트롤러 간의 네트워크 구성을 확인하세요.  | 없음 | 
| 실패 | RDS-EVENT-0418 | Amazon RDS가 데이터베이스 인스턴스 *이름*의 KMS 암호화 키에 액세스할 수 없습니다. 키가 비활성화되었거나 Amazon RDS가 액세스할 수 없기 때문일 수 있습니다. 이 상태가 계속되면 데이터베이스가 액세스할 수 없음 상태가 됩니다. 자세한 내용은 Amazon RDS 설명서의 문제 해결 섹션을 참조하세요. | 없음 | 
| 실패 | RDS-EVENT-0420 | 이제 Amazon RDS가 데이터베이스 인스턴스 *이름*의 KMS 암호화 키에 성공적으로 액세스할 수 있습니다. | 없음 | 
|  적은 스토리지  | RDS-EVENT-0007 |  할당된 스토리지가 모두 소진되었습니다. 해결하려면 추가 스토리지를 할당하세요.  |  DB 인스턴스에 할당된 스토리지를 모두 사용했습니다. 이 문제를 해결하려면 DB 인스턴스에 스토리지를 추가 할당하세요. 자세한 내용은 [RDS FAQ](https://aws.amazon.com/rds/faqs) 섹션을 참조하세요. [**Free Storage Space**] 측정치를 사용하여 DB 인스턴스에 대한 스토리지 공간을 모니터링할 수 있습니다.  | 
|  적은 스토리지  | RDS-EVENT-0089 |  DB 인스턴스(*이름*)의 사용 가능한 스토리지 용량이 프로비저닝된 스토리지의 *백분율*로 낮습니다[프로비저닝된 스토리지: *용량*, 사용 가능한 스토리지: *용량*]. 이 문제를 해결하려면 프로비저닝된 스토리지를 늘리는 것이 좋습니다.  |  DB 인스턴스가 할당된 스토리지의 90% 이상을 사용하였습니다. [**Free Storage Space**] 측정치를 사용하여 DB 인스턴스에 대한 스토리지 공간을 모니터링할 수 있습니다.  | 
|  적은 스토리지  | RDS-EVENT-0227 |  Aurora 클러스터의 스토리지가 *용량*테라바이트만 남아 있어 위험할 정도로 부족합니다. 클러스터의 스토리지 로드를 줄이기 위한 조치를 취하세요.  |  Aurora 스토리지 하위 시스템의 공간이 부족합니다.  | 
|  유지 관리  | RDS-EVENT-0026 |  DB 인스턴스에 오프라인 패치를 적용하는 중입니다.  |  DB 인스턴스의 오프라인 유지 관리가 진행 중입니다. 따라서 현재 DB 인스턴스는 사용할 수 없습니다.  | 
|  유지 관리  | RDS-EVENT-0027 |  DB 인스턴스에 대한 오프라인 패치 적용이 완료되었습니다.  |  DB 인스턴스의 오프라인 유지 관리가 완료되었습니다. 이제 DB 인스턴스를 사용할 수 있습니다.  | 
|  유지 관리  | RDS-EVENT-0047 |  데이터베이스 인스턴스가 패치되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0155 |  DB 인스턴스에 사용 가능한 DB 엔진 마이너 버전 업그레이드가 있습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0178 |  데이터베이스 인스턴스 업그레이드가 진행 중입니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0264 |  DB 엔진 버전 업그레이드를 위한 사전 점검이 시작되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0265 |  DB 엔진 버전 업그레이드를 위한 사전 점검이 완료되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0266 |  DB 인스턴스의 가동 중지 시간이 시작되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0267 |  엔진 버전 업그레이드가 시작되었습니다.  | 없음 | 
|  유지 관리  | RDS-EVENT-0268 |  엔진 버전 업그레이드가 완료되었습니다. | 없음 | 
|  유지 관리  | RDS-EVENT-0269 |  업그레이드 후 작업이 진행 중입니다. | 없음 | 
|  유지 관리  | RDS-EVENT-0270 |  DB 엔진 버전 업그레이드에 실패했습니다. 엔진 버전 업그레이드 롤백에 성공했습니다. | 없음 | 
|  유지 관리  | RDS-EVENT-0398 |  기본 DB 인스턴스에서 DB 엔진 버전 업그레이드가 완료될 때까지 기다리는 중입니다. | 메이저 엔진 버전 업그레이드 중에 읽기 전용 복제본에서 내보내집니다. | 
|  유지 관리  | RDS-EVENT-0399 |  읽기 전용 복제본에서 DB 엔진 버전 업그레이드가 완료될 때까지 기다리는 중입니다. | 메이저 엔진 버전 업그레이드 중에 소스 DB 엔진에서 내보내집니다. | 
|  유지 관리  | RDS-EVENT-0422 |  RDS는 보류 중인 유지 관리 작업으로 인해 DB 인스턴스 *이름*의 호스트를 대체합니다. | 없음 | 
|  유지 관리, 실패  | RDS-EVENT-0195 |  *message*  |  Oracle 표준 시간대 파일을 업데이트하지 못했습니다. 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md) 섹션을 참조하세요.  | 
|  유지 관리, 알림  | RDS-EVENT-0191 |  시간대 파일의 새 버전을 업데이트할 수 있습니다.  |  RDS for Oracle DB 엔진을 업데이트하는 경우, 표준 시간대 파일 업그레이드를 선택하지 않았고 데이터베이스가 인스턴스에 사용 가능한 최신 DST 표준 시간대 파일을 사용하지 않는 경우 Amazon RDS가 이 이벤트를 생성합니다. 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md) 섹션을 참조하세요.  | 
|  유지 관리, 알림  | RDS-EVENT-0192 |  표준 시간대 파일의 업데이트가 시작되었습니다.  |  Oracle 표준 시간대 파일의 업그레이드가 시작되었습니다. 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md) 섹션을 참조하세요.  | 
|  유지 관리, 알림  | RDS-EVENT-0193 |  현재 표준 시간대 파일 버전에 사용할 수 있는 업데이트가 없습니다.  |  Oracle DB 인스턴스가 최신 표준 시간대 파일 버전을 사용하고 있으며 다음 중 하나에 해당합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Messages.html) 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md) 섹션을 참조하세요.  | 
|  유지 관리, 알림  | RDS-EVENT-0194 |  표준 시간대 파일의 업데이트가 완료되었습니다.  |  Oracle 표준 시간대 파일의 업데이트가 완료되었습니다. 자세한 내용은 [Oracle 시간대 파일 자동 업그레이드](Appendix.Oracle.Options.Timezone-file-autoupgrade.md) 섹션을 참조하세요.  | 
|  알림  | RDS-EVENT-0044 |  *message*  | 운영자가 발행한 알림입니다. 자세한 내용은 이벤트 메시지 섹션을 참조하세요. | 
|  알림  | RDS-EVENT-0048 |  이 인스턴스에는 먼저 업그레이드해야 하는 읽기 전용 복제본이 있으므로 데이터베이스 엔진 업그레이드가 지연됩니다.  | DB 인스턴스의 패치 작업이 지연되었습니다. | 
|  알림  | RDS-EVENT-0054 |  *message*  | 사용 중인 MySQL 스토리지 엔진이 InnoDB가 아닙니다. Amazon RDS는 MySQL 스토리지 엔진으로 InnoDB를 권장합니다. MySQL 스토리지 엔진에 대한 자세한 내용은 [RDS for MySQL에 대해 지원되는 스토리지 엔진](MySQL.Concepts.FeatureSupport.md#MySQL.Concepts.Storage) 섹션을 참조하세요. | 
|  알림  | RDS-EVENT-0055 |  *message*  |  DB 인스턴스의 테이블 수가 Amazon RDS의 권장 모범 사례를 초과하였습니다. DB 인스턴스의 테이블 수를 줄이세요. 권장 모범 사례에 대한 자세한 내용은 [Amazon RDS 기본 운영 지침](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance) 섹션을 참조하세요.  | 
|  알림  | RDS-EVENT-0056 |  *message*  |  DB 인스턴스의 데이터베이스 수가 Amazon RDS의 권장 모범 사례를 초과하였습니다. DB 인스턴스의 데이터베이스 수를 줄이세요. 권장 모범 사례에 대한 자세한 내용은 [Amazon RDS 기본 운영 지침](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance) 섹션을 참조하세요.  | 
|  알림  | RDS-EVENT-0064 |  TDE 암호화 키가 성공적으로 교체되었습니다.  | 권장 모범 사례에 대한 자세한 내용은 [Amazon RDS 기본 운영 지침](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance) 섹션을 참조하세요. | 
|  알림  | RDS-EVENT-0084 |  DB 인스턴스를 다중 AZ로 변환할 수 없습니다. *메시지*.  |  DB 인스턴스를 다중 AZ로 전환하려고 시도하였으나 다중 AZ를 지원하지 않는 인 메모리 파일 그룹이 포함되어 있습니다. 자세한 내용은 [Amazon RDS for Microsoft SQL Server의 다중 AZ 배포](USER_SQLServerMultiAZ.md) 섹션을 참조하세요.  | 
|  알림  | RDS-EVENT-0087 |  DB 인스턴스가 중지되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0088 |  DB 인스턴스가 시작되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0154 |  DB 인스턴스가 중지 최대 허용 시간 초과로 인해 시작 중입니다.  | 없음 | 
|  알림  | RDS-EVENT-0157 |  DB 인스턴스 클래스를 수정할 수 없습니다. *메시지*.  |  대상 인스턴스 클래스는 원본 DB 인스턴스에 있는 데이터베이스의 수를 지원할 수 없기 때문에 RDS는 DB 인스턴스 클래스를 수정할 수 없습니다. “인스턴스에 *N* 데이터베이스가 있지만, 변환 후에는 *N*만 지원할 것입니다.”라는 오류 메시지가 표시됩니다. 자세한 내용은 [Microsoft SQL Server DB 인스턴스의 한도](CHAP_SQLServer.md#SQLServer.Concepts.General.FeatureSupport.Limits) 섹션을 참조하세요.  | 
|  알림  | RDS-EVENT-0158 |  데이터베이스 인스턴스가 업그레이드할 수 없는 상태입니다. *메시지*.  | 없음 | 
|  알림  | RDS-EVENT-0167 |  *message*  |  RDS 고객 지원 경계 구성이 변경되었습니다.  | 
|  알림  | RDS-EVENT-0189 |  RDS DB 인스턴스에 대한 gp2 버스트 밸런스 크레딧이 부족합니다. 이 문제를 해결하려면 IOPS 사용량을 줄이거나 성능 향상을 위해 스토리지 설정을 수정하세요.  |  RDS DB 인스턴스에 대한 gp2 버스트 밸런스 크레딧이 부족합니다. 이 문제를 해결하려면 IOPS 사용량을 줄이거나 성능 향상을 위해 스토리지 설정을 수정하세요. 자세한 내용은 *Amazon Elastic Compute Cloud 사용 설명서*의 [I/O 크레딧 및 버스트 가능 성능](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#EBSVolumeTypes_gp2)을 참조하세요.  | 
|  알림  | RDS-EVENT-0225 |  할당된 스토리지 크기 *용량*GB가 최대 스토리지 임계값 *용량*GB에 도달하고 있습니다. 최대 스토리지 임계값을 늘립니다.  |  이 이벤트는 할당된 스토리지가 최대 스토리지 임계값의 80%에 도달하면 호출됩니다. 이 이벤트를 방지하려면 최대 스토리지 임계값을 늘립니다.  | 
|  알림  | RDS-EVENT-0231 |  DB 인스턴스의 스토리지 수정에서 내부 오류가 발생했습니다. 수정 요청이 보류 중이며 나중에 다시 시도합니다.  |  읽기 전용 복제 프로세스에서 오류가 발생하였습니다. 자세한 내용은 이벤트 메시지 섹션을 참조하세요. 또한 DB 엔진의 읽기 전용 복제본에 대한 문제 해결 섹션을 참조하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)  | 
|  알림  | RDS-EVENT-0253 |  데이터베이스가 이중 쓰기 버퍼를 사용하고 있습니다. *메시지*. 자세한 내용은 *이름*용 RDS Optimized Writes 설명서를 참조하세요.  | RDS Optimized Writes가 인스턴스 스토리지 구성과 호환되지 않습니다. 자세한 내용은 [RDS Optimized Writes for MySQL을 통한 쓰기 성능 개선](rds-optimized-writes.md) 및 [Amazon RDS Optimized Writes for MariaDB를 통한 쓰기 성능 개선](rds-optimized-writes-mariadb.md)(을)를 참조하세요. [블루/그린 배포를 생성](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments-creating.html)하여 스토리지 구성 업그레이드를 수행하여 최적화된 쓰기를 활성화할 수 있습니다. | 
|  알림  | RDS-EVENT-0297 |  DB 인스턴스 *이름*의 스토리지 구성은 최대 16,384GiB를 지원합니다. 스토리지 구성 업그레이드를 수행하여 16,384GiB보다 큰 스토리지 크기를 지원합니다.  | DB 인스턴스의 할당된 스토리지 크기를 16,384GiB를 초과하여 늘릴 수 없습니다. 이 제한을 극복하려면 스토리지 구성 업그레이드를 수행하세요. 자세한 내용은 [DB 인스턴스의 스토리지 파일 시스템 업그레이드](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem)를 참조하세요.  | 
|  알림  | RDS-EVENT-0298 |  DB 인스턴스 *이름*의 스토리지 구성은 테이블 크기로 최대 2,048GiB를 지원합니다. 스토리지 구성 업그레이드를 수행하여 2,048GiB보다 큰 테이블 크기를 지원합니다.  | 이 제한이 적용되는 RDS MySQL 및 MariaDB 인스턴스는 테이블 크기가 2,048GiB를 초과할 수 없습니다. 이 제한을 극복하려면 스토리지 구성 업그레이드를 수행하세요. 자세한 내용은 [DB 인스턴스의 스토리지 파일 시스템 업그레이드](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem)를 참조하세요.  | 
|  알림  | RDS-EVENT-0327 |  Amazon RDS가 암호 *SECRET ARN*을 찾지 못했습니다. *메시지.*  | 없음 | 
|  알림  | RDS-EVENT-0365 |  시간대 파일이 업데이트되었습니다. RDS 인스턴스를 다시 시작하면 변경 사항이 적용됩니다.  | 없음 | 
|  알림  | RDS-EVENT-0385 |  클러스터 토폴로지가 업데이트됩니다.  |  DB 클러스터에 DB 인스턴스에 대한 DNS 변경 사항이 있습니다. 여기에는 새 DB 인스턴스가 추가 또는 삭제되거나 장애 조치가 있는 경우가 포함됩니다.  | 
|  알림  | RDS-EVENT-0403 |  데이터베이스 워크로드로 인해 시스템이 메모리가 심각하게 부족한 상태로 실행되고 있습니다. 문제를 완화하기 위해 RDS는 innodb\$1buffer\$1pool\$1size 값을 *amount*(으)로 자동 설정합니다.  |  RDS for MySQL 및 RDS for MariaDB DB 인스턴스에만 적용됩니다.  | 
|  알림  | RDS-EVENT-0404 |  데이터베이스 워크로드로 인해 시스템이 메모리가 심각하게 부족한 상태로 실행되고 있습니다. 문제를 완화하기 위해 RDS는 shared\$1buffers 값을 *amount*(으)로 자동 설정합니다.  |  RDS for PostgreSQL DB 인스턴스에만 적용됩니다.  | 
|  읽기 전용 복제본  | RDS-EVENT-0045 |  복제가 중지되었습니다.  |  이 메시지는 복제 중에 오류가 있을 때 나타납니다. 오류 유형을 확인하려면 [MySQL 읽기 전용 복제본 문제 해결](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.Troubleshooting.html)을 참조하세요.  | 
|  읽기 전용 복제본  | RDS-EVENT-0046 |  읽기 전용 복제본에 대한 복제가 재개되었습니다.  | 이 메시지는 읽기 전용 복제본을 처음 생성할 때 나타나거나 복제 기능의 정상 여부를 확인하는 모니터링 메시지로 나타납니다. `RDS-EVENT-0045` 알림 후에 이 메시지가 표시되면 오류가 표시된 후 또는 복제가 중단된 후 복제가 재개된 것입니다. | 
|  읽기 전용 복제본  | RDS-EVENT-0057 |  복제 스트리밍이 종료되었습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0062 |  읽기 전용 복제본의 복제가 수동으로 중단되었습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0063 |  RDS가 아닌 인스턴스에서의 복제가 재설정되었습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0202 |  읽기 전용 복제본 생성이 실패했습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0233 |  읽기 전용 복제본으로의 전환이 시작되었습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0357 |  복제 채널 *이름*이 시작되었습니다.  | 복제 채널에 대한 자세한 내용은 [Amazon RDS for MySQL용 다중 소스 복제 구성](mysql-multi-source-replication.md) 섹션을 참조하세요. | 
|  읽기 전용 복제본  | RDS-EVENT-0358 |  복제 채널 *이름*이 중지되었습니다.  | 복제 채널에 대한 자세한 내용은 [Amazon RDS for MySQL용 다중 소스 복제 구성](mysql-multi-source-replication.md) 섹션을 참조하세요. | 
|  읽기 전용 복제본  | RDS-EVENT-0359 |  복제 채널 *이름*이 수동으로 중지되었습니다.  | 복제 채널에 대한 자세한 내용은 [Amazon RDS for MySQL용 다중 소스 복제 구성](mysql-multi-source-replication.md) 섹션을 참조하세요. | 
|  읽기 전용 복제본  | RDS-EVENT-0360 |  복제 채널 *이름*이 재설정되었습니다.  | 복제 채널에 대한 자세한 내용은 [Amazon RDS for MySQL용 다중 소스 복제 구성](mysql-multi-source-replication.md) 섹션을 참조하세요. | 
|  읽기 전용 복제본  | RDS-EVENT-0415 |  업그레이드 프로세스가 읽기 전용 복제본에서 복제를 재개했습니다.  | 없음 | 
|  읽기 전용 복제본  | RDS-EVENT-0416 |  업그레이드 프로세스가 읽기 전용 복제본에서 복제를 중지했습니다.  | 없음 | 
|  복구  | RDS-EVENT-0020 |  DB 인스턴스 복구가 시작되었습니다. 복구 시간은 복구할 데이터 용량에 따라 달라집니다.  | 없음 | 
|  복구  | RDS-EVENT-0021 |  DB 인스턴스 복구가 완료되었습니다.  | 없음 | 
|  복구  | RDS-EVENT-0023 |  긴급 스냅샷 요청이 있습니다. *메시지*.  |  수동 백업을 요청하였지만 Amazon RDS가 현재 DB 스냅샷을 생성 중입니다. 따라서 Amazon RDS가 DB 스냅샷 생성을 완료한 후에 다시 요청하십시오.  | 
|  복구  | RDS-EVENT-0052 |  다중 AZ 인스턴스 복구가 시작되었습니다.  | 복구 시간은 복구할 데이터 용량에 따라 달라집니다. | 
|  복구  | RDS-EVENT-0053 |  다중 AZ 인스턴스 복구가 완료되었습니다. 장애 조치 또는 활성화가 보류 중입니다.  | 이 메시지는 Amazon RDS가 필요한 경우 보조 인스턴스에 대한 장애 조치를 시작하도록 DB 인스턴스를 준비했음을 나타냅니다. | 
|  복구  | RDS-EVENT-0066 |  미러링을 다시 설정하는 동안 인스턴스의 성능이 저하됩니다. *메시지*.  |  SQL Server DB 인스턴스가 미러를 재구성 중입니다. 이때 미러가 재구성될 때까지 성능이 저하됩니다. 복구 모델이 FULL이 아닌 데이터베이스가 발견되었습니다. 복구 모델이 FULL로 다시 변경된 후 미러링 복구가 시작되었습니다(<dbname>: <recovery model found>[,...]).  | 
|  복구  | RDS-EVENT-0166 |  *message*  |  RDS 커스텀 DB 인스턴스는 지원 경계 내에 있습니다.  | 
|  복구  | RDS-EVENT-0361 |  대기 DB 인스턴스 복구가 시작되었습니다.  |  복구 프로세스 중에 대기 DB 인스턴스가 다시 구축됩니다. 복구 프로세스 중에는 데이터베이스 성능이 영향을 받습니다.  | 
|  복구  | RDS-EVENT-0362 |  대기 DB 인스턴스 복구가 완료되었습니다.  |  복구 프로세스 중에 대기 DB 인스턴스가 다시 구축됩니다. 복구 프로세스 중에는 데이터베이스 성능이 영향을 받습니다.  | 
|  복원  | RDS-EVENT-0019 |  DB 인스턴스 *이름*에서 *이름*으로 복원되었습니다.  |  DB 인스턴스가 특정 시점으로 백업에서 복원되었습니다.  | 
|  보안  | RDS-EVENT-0068 |  인스턴스를 업데이트하기 위해 HSM 파티션 암호의 암호화를 해제하는 중입니다.  |  DB 인스턴스를 업데이트하기 위해. RDS가 AWS CloudHSM 파티션 암호의 암호화를 해제하는 중입니다. 자세한 내용은 *AWS CloudHSM 사용 설명서*의 [AWS CloudHSM을 사용한 Oracle 데이터베이스 투명한 데이터 암호화(TDE)](https://docs.aws.amazon.com/cloudhsm/latest/userguide/oracle-tde.html)를 참조하세요.  | 
|  보안 패치  | RDS-EVENT-0230 |  DB 인스턴스의 시스템 업데이트를 사용할 수 있습니다. 업데이트 적용에 대한 자세한 내용은 RDS 사용 설명서의 'DB 인스턴스 관리'를 참조하세요.  |  새 운영 체제 업데이트를 사용할 수 있습니다. DB 인스턴스의 운영 체제의 새로운 버전, 마이너 버전, 운영 체제 업데이트를 사용할 수 있습니다. 업데이트에 적용에 대한 자세한 내용은 [RDS DB 인스턴스의 운영 체제 업데이트](USER_UpgradeDBInstance.Maintenance.md#OS_Updates) 섹션을 참조하세요.  | 
|  유지 관리  | RDS-EVENT-0425 |  지정된 서브넷에 사용 가능한 IP 주소가 없으므로 Amazon RDS가 OS 업그레이드를 수행할 수 없습니다. 사용 가능한 IP 주소가 있는 서브넷을 선택하고 다시 시도합니다.  |  없음  | 
|  유지 관리  | RDS-EVENT-0429 |  *영역* 가용 영역의 *유형* 인스턴스 유형에 사용할 수 있는 용량이 부족하여 Amazon RDS가 OS 업그레이드를 수행할 수 없습니다.  |  없음  | 
|  유지 관리  | RDS-EVENT-0501 |  Amazon RDS DB 인스턴스의 서버 인증서는 보류 중인 유지 관리 작업을 통해 교체해야 합니다.  |  DB 인스턴스의 서버 인증서는 보류 중인 유지 관리 작업을 통해 교체해야 합니다. Amazon RDS는 이 유지 관리 중에 데이터베이스를 재부팅하여 인증서 교체를 완료합니다. 이 유지 관리를 예약하려면 **유지 관리 및 백업** 탭으로 이동하여 **지금 적용** 또는 **다음 유지 관리 기간 예약**을 선택합니다. 변경 사항이 예약되지 않은 경우 Amazon RDS는 유지 관리 작업에 표시된 자동 적용 날짜의 유지 관리 기간에 변경 사항을 자동으로 적용합니다.  | 
|  유지 관리  | RDS-EVENT-0502 |  Amazon RDS는 다음 유지 관리 기간 동안 DB 인스턴스에 대한 서버 인증서 교체를 예약했습니다. 이 유지 관리를 수행하려면 데이터베이스를 재부팅해야 합니다.  |  없음  | 

## DB 파라미터 그룹 이벤트
<a name="USER_Events.Messages.parameter-group"></a>

다음 표는 DB 파라미터 그룹이 소스 유형일 때 이벤트 카테고리와 이벤트 목록을 나타냅니다.


|  Category  | RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  구성 변경  | RDS-EVENT-0037 |  메서드 *method* 적용을 사용하여 파라미터 *name*을 *value*로 업데이트했습니다.  |  없음  | 

## DB 보안 그룹 이벤트
<a name="USER_Events.Messages.security-group"></a>

다음 표는 DB 보안 그룹이 소스 유형일 때 이벤트 카테고리와 이벤트 목록을 나타냅니다.

**참고**  
DB 보안 그룹 EC2-Classic의 리소스입니다. EC2-Classic은 2022년 8월 15일에 사용 중지되었습니다. EC2-Classic에서 VPC로 마이그레이션하지 않은 경우 가능한 한 빨리 마이그레이션하는 것이 좋습니다. 자세한 내용은 Amazon EC2 사용 설명서**의 [Migrate from EC2-Classic to a VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)(EC2-Classic에서 VPC로 마이그레이션) 및 [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)(EC2-Classic 네트워킹 지원 중단에 대비하는 방법) 블로그 게시물을 참조하세요.


|  카테고리  | RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  구성 변경  | RDS-EVENT-0038 |  보안 그룹에 변경 사항을 적용했습니다.  |  없음  | 
|  실패  | RDS-EVENT-0039 |  *사용자*로서의 권한 부여를 취소하는 중입니다.  |  *사용자*가 소유한 보안 그룹이 없습니다. 보안 그룹에 대한 권한 부여가 잘못되었기 때문에 취소되었습니다.  | 

## DB 스냅샷 이벤트
<a name="USER_Events.Messages.snapshot"></a>

다음 표는 DB 스냅샷이 소스 유형일 때 이벤트 카테고리와 이벤트 목록을 나타냅니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)

## RDS 프록시 이벤트
<a name="USER_Events.Messages.rds-proxy"></a>

다음 표에서는 RDS 프록시가 소스 유형일 때 이벤트 범주와 이벤트 목록을 보여 줍니다.


|  카테고리  | RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
| 구성 변경 | RDS-EVENT-0204 |  RDS가 DB 프록시(*이름*)를 수정했습니다.  | 없음 | 
| 구성 변경 | RDS-EVENT-0207 |  RDS가 DB 프록시(*이름*)의 엔드포인트를 수정했습니다.  | 없음 | 
| 구성 변경 | RDS-EVENT-0213 |  RDS가 DB 인스턴스 추가를 감지하여 DB 프록시(*이름*)의 대상 그룹에 자동으로 추가했습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0214 |  RDS가 DB 인스턴스(*이름*)의 삭제를 감지하여 DB 프록시(*이름*)의 대상 그룹(*이름*)에서 자동으로 제거했습니다.  | 없음 | 
|  구성 변경  | RDS-EVENT-0215 |  RDS가 DB 클러스터(*이름*)의 삭제를 감지하여 DB 프록시(*이름*)의 대상 그룹(*이름*)에서 자동으로 제거했습니다.  | 없음 | 
|  생성  | RDS-EVENT-0203 |  RDS가 DB 프록시(*이름*)를 생성했습니다.  | 없음 | 
|  생성  | RDS-EVENT-0206 |  RDS가 DB 프록시(*이름*)에 대한 엔드포인트(*이름*)을 생성했습니다.  | 없음 | 
| 삭제 | RDS-EVENT-0205 |  RDS가 DB 프록시(*이름*)를 삭제했습니다.  | 없음 | 
|  삭제  | RDS-EVENT-0208 |  RDS가 DB 프록시(*이름*)에 대한 엔드포인트(*이름*)을 삭제했습니다.  | 없음 | 
|  실패  | RDS-EVENT-0243 |  서브넷(*이름*)에서 사용할 수 있는 IP 주소가 충분하지 않기 때문에 RDS가 프록시(*이름*)의 용량을 프로비저닝하지 못했습니다. 이러한 문제를 해결하려면 RDS 프록시 설명서의 권장 사항에 따라 서브넷에 최소한의 미사용 IP 주소 개수가 있는지 확인하세요.  |  권장 인스턴스 클래스 수를 확인하려면 [IP 주소 용량 계획](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address) 섹션을 참조하세요.  | 
|  실패 | RDS-EVENT-0275 |  RDS가 DB 프록시 *이름*에 대한 일부 연결을 제한했습니다. 클라이언트에서 프록시로의 동시 연결 요청 수가 제한을 초과했습니다.  | 없음 | 

## 블루/그린 배포 이벤트
<a name="USER_Events.Messages.BlueGreenDeployments"></a>

다음 표는 블루/그린 배포가 소스 유형일 때 이벤트 카테고리와 이벤트 목록을 나타냅니다.

블루/그린 배포에 대한 자세한 내용은 [데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용](blue-green-deployments.md) 섹션을 참조하세요.


|  카테고리  | Amazon RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  생성  | RDS-EVENT-0244 |  블루/그린 배포 작업이 완료되었습니다. 그린 환경 데이터베이스를 추가로 수정하거나 배포로 전환할 수 있습니다.  | 없음 | 
|  실패  | RDS-EVENT-0245 |  *reason*(으)로 인해 블루/그린 배포 만들기가 실패했습니다.  | 없음 | 
|  삭제  | RDS-EVENT-0246 |  블루/그린 배포가 삭제되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0247 |  *블루*에서 *그린*으로 전환이 시작되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0248 |  블루/그린 배포에서 전환이 완료되었습니다.  | 없음 | 
|  실패  | RDS-EVENT-0249 |  블루/그린 배포에서 전환이 취소되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0250  |  기본/읽기 전용 복제본 *블루*에서 *그린*으로 전환이 시작되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0251  |  기본/읽기 전용 복제본 *블루*에서 *그린*으로 전환이 완료되었습니다. *블루*는 *블루-기존*으로, *그린*은 *블루*로 이름을 변경했습니다.  | 없음 | 
|  실패  | RDS-EVENT-0252  |  기본/읽기 전용 복제본 *블루*에서 *그린*으로의 전환이 *사유*(으)로 인해 취소되었습니다.  | 없음 | 
|  알림  | RDS-EVENT-0307  |   *블루*에서 *그린*으로의 전환을 위한 시퀀스 동기화가 시작되었습니다. 시퀀스를 사용할 때 전환하면 가동 중지가 길어질 수 있습니다.  | 없음 | 
|  알림  | RDS-EVENT-0308  |   *블루*에서 *그린*으로의 전환을 위한 시퀀스 동기화가 완료되었습니다.  | 없음 | 
|  실패  | RDS-EVENT-0310  |  시퀀스 동기화에 실패하여 *블루*에서 *그린*으로의 전환을 위한 시퀀스 동기화가 취소되었습니다.  | 없음 | 
| 알림 | RDS-EVENT-0405 |  스토리지 볼륨이 초기화되고 있습니다.  |  없음  | 
| 알림 | RDS-EVENT-0406 |  스토리지 볼륨이 초기화되었습니다.  |  없음  | 
|  알림  | RDS-EVENT-0409  |  *message*  | 없음 | 

## 사용자 지정 엔진 버전 이벤트
<a name="USER_Events.Messages.CEV"></a>

다음 표에는 사용자 지정 엔진 버전이 소스 유형일 때 이벤트 카테고리와 이벤트 목록이 나와 있습니다.


|  카테고리  | Amazon RDS 이벤트 ID |  메시지  |  참고  | 
| --- | --- | --- | --- | 
|  생성  | RDS-EVENT-0316 |  사용자 지정 엔진 버전 *이름* 생성을 준비 중입니다. 전체 생성 프로세스를 완료하는 데 최대 4시간이 걸릴 수 있습니다.  | 없음 | 
|  생성  | RDS-EVENT-0317 |  사용자 지정 엔진 버전 *이름*을 생성하고 있습니다.  | 없음 | 
|  생성  | RDS-EVENT-0318 |  사용자 지정 엔진 버전 *이름*을 검증하고 있습니다.  | 없음 | 
|  생성  | RDS-EVENT-0319 |  사용자 지정 엔진 버전 *이름*이 성공적으로 생성되었습니다.  | 없음 | 
|  생성  | RDS-EVENT-0320 |  내부 문제로 인해 RDS에서 사용자 지정 엔진 버전 *이름*을 생성할 수 없습니다. 문제를 해결 중이며 필요한 경우 연락드리겠습니다. 추가 지원이 필요한 경우 [AWS 프리미엄 지원](https://console.aws.amazon.com/support/)에 문의하세요.  | 없음 | 
|  실패  | RDS-EVENT-0198 |  사용자 지정 엔진 버전(*이름*)을 생성하지 못했습니다. *메시지*  | *메시지*에는 누락된 파일 등 실패에 대한 세부 정보가 포함되어 있습니다. | 
|  실패  | RDS-EVENT-0277 |  사용자 지정 엔진 버전(*이름*)을 삭제하는 중 오류가 발생했습니다. *메시지*  | *메시지*에는 실패에 대한 세부 정보가 포함되어 있습니다. | 
|  복원  | RDS-EVENT-0352 |  특정 시점으로 복원에 지원되는 최대 데이터베이스 수가 변경되었습니다.  | *메시지*에는 이벤트에 대한 세부 정보가 포함되어 있습니다. | 

# Amazon RDS 로그 파일 모니터링
<a name="USER_LogAccess"></a>

모든 RDS 데이터베이스 엔진은 감사 및 문제 해결을 위해 액세스할 수 있는 로그를 생성합니다. 로그 유형은 데이터베이스 엔진에 따라 다릅니다.

AWS Management Console, AWS Command Line Interface(AWS CLI) 또는 Amazon RDS API를 사용하여 DB 인스턴스 로그에 액세스할 수 있습니다. 트랜잭션 로그를 보거나 다운로드할 수 없습니다.

**Topics**
+ [데이터베이스 로그 파일 보기 및 나열](USER_LogAccess.Procedural.Viewing.md)
+ [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md)
+ [데이터베이스 로그 파일 조사](USER_LogAccess.Procedural.Watching.md)
+ [Amazon CloudWatch Logs에 데이터베이스 로그 게시](USER_LogAccess.Procedural.UploadtoCloudWatch.md)
+ [REST를 사용하여 로그 파일 내용 읽기](DownloadCompleteDBLogFile.md)
+ [Amazon RDS for Db2 데이터베이스 로그 파일](USER_LogAccess.Concepts.Db2.md)
+ [MariaDB 데이터베이스 로그 파일](USER_LogAccess.Concepts.MariaDB.md)
+ [Amazon RDS for Microsoft SQL Server 데이터베이스 로그 파일](USER_LogAccess.Concepts.SQLServer.md)
+ [MySQL 데이터베이스 로그 파일](USER_LogAccess.Concepts.MySQL.md)
+ [Amazon RDS for Oracle 데이터베이스 로그 파일](USER_LogAccess.Concepts.Oracle.md)
+ [RDS for PostgreSQL 데이터베이스 로그 파일](USER_LogAccess.Concepts.PostgreSQL.md)

# 데이터베이스 로그 파일 보기 및 나열
<a name="USER_LogAccess.Procedural.Viewing"></a>

AWS Management Console을 사용하여 Amazon RDS DB 엔진에 대한 데이터베이스 로그 파일을 볼 수 있습니다. AWS CLI 또는 Amazon RDS API를 사용하여 다운로드하거나 모니터링할 수 있는 로그 파일을 나열할 수 있습니다.

**참고**  
기존 RDS for Oracle DB 인스턴스에 대한 로그 파일 목록을 볼 수 없는 경우 목록을 보려면 인스턴스를 재부팅합니다.

## 콘솔
<a name="USER_LogAccess.CON"></a>

**데이터베이스 로그 파일을 보려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 보고자 하는 로그 파일을 보유한 DB 인스턴스의 이름을 선택합니다.

1. **로그 및 이벤트** 탭을 선택합니다.

1. 아래로 스크롤하여 **로그** 섹션을 찾습니다.

1. (선택 사항) 검색어를 입력하여 결과를 필터링합니다.

1. 표시할 로그를 선택한 다음 **보기(View)**를 선택합니다.

## AWS CLI
<a name="USER_LogAccess.CLI"></a>

DB 인스턴스에 사용 가능한 데이터베이스 로그 파일을 나열하려면 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-log-files.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-log-files.html) 명령을 사용합니다.

다음 예에서는 `my-db-instance`라는 DB 인스턴스에 대한 로그 파일 목록을 반환합니다.

**Example**  

```
1. aws rds describe-db-log-files --db-instance-identifier my-db-instance
```

## RDS API
<a name="USER_LogAccess.API"></a>

DB 인스턴스에 사용 가능한 데이터베이스 로그 파일을 나열하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) 작업을 사용합니다.

# 데이터베이스 로그 파일 다운로드
<a name="USER_LogAccess.Procedural.Downloading"></a>

AWS Management Console, AWS CLI 또는 API를 사용하여 데이터베이스 로그 파일을 다운로드할 수 있습니다.

## 콘솔
<a name="USER_LogAccess.Procedural.Downloading.CON"></a>

**데이터베이스 로그 파일을 다운로드하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 보고자 하는 로그 파일을 보유한 DB 인스턴스의 이름을 선택합니다.

1. **로그 및 이벤트** 탭을 선택합니다.

1. 아래로 스크롤하여 [**Logs**] 섹션을 찾습니다.

1. **로그** 섹션에서 다운로드할 로그 옆에 있는 버튼을 선택한 다음 **다운로드**를 선택합니다.

1. 제공된 링크에 대한 컨텍스트(마우스 오른쪽 클릭) 메뉴를 열고 나서 [**Save Link As**]를 선택합니다. 로그 파일을 저장할 위치를 입력한 다음 **저장**을 선택합니다.  
![\[로그 파일 보기\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/log_download2.png)

## AWS CLI
<a name="USER_LogAccess.Procedural.Downloading.CLI"></a>

데이터베이스 로그 파일을 다운로드하려면 AWS CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html)을 사용합니다. 기본적으로 이 명령은 로그 파일의 최신 부분만을 다운로드합니다. 하지만 `--starting-token 0` 파라미터를 지정하여 전체 파일을 다운로드할 수 있습니다.

다음 예제에서는 *log/ERROR.4*라는 로그 파일의 내용을 다운로드하여 *errorlog.txt*라는 로컬 파일에 저장하는 방법을 보여줍니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds download-db-log-file-portion \
2.     --db-instance-identifier myexampledb \
3.     --starting-token 0 --output text \
4.     --log-file-name log/ERROR.4 > errorlog.txt
```
Windows의 경우:  

```
1. aws rds download-db-log-file-portion ^
2.     --db-instance-identifier myexampledb ^
3.     --starting-token 0 --output text ^
4.     --log-file-name log/ERROR.4 > errorlog.txt
```

## RDS API
<a name="USER_LogAccess.Procedural.Downloading.API"></a>

데이터베이스 로그 파일을 다운로드하려면 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html) 작업을 사용합니다.

# 데이터베이스 로그 파일 조사
<a name="USER_LogAccess.Procedural.Watching"></a>

데이터베이스 로그 파일을 관찰하는 것은 UNIX 또는 Linux 시스템에서 파일을 추적하는 것과 같습니다. AWS Management Console을 사용하여 로그 파일을 볼 수 있습니다. RDS는 5초마다 로그 테일을 새로 고칩니다.

**데이터베이스 로그 파일을 조사하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 보고자 하는 로그 파일을 보유한 DB 인스턴스의 이름을 선택합니다.

1. **로그 및 이벤트** 탭을 선택합니다.  
![\[로그 및 이벤트 탭을 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/Monitoring_logsEvents.png)

1. **로그** 섹션에서 로그 파일을 선택한 다음 **보기**를 선택합니다.  
![\[로그를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch.png)

   RDS는 다음 MySQL 예제와 같이 로그의 끝부분을 보여줍니다.  
![\[로그 파일의 끝\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch_content.png)

# Amazon CloudWatch Logs에 데이터베이스 로그 게시
<a name="USER_LogAccess.Procedural.UploadtoCloudWatch"></a>

온프레미스 데이터베이스에서 데이터베이스 로그는 파일 시스템에 있습니다. Amazon RDS는 DB 인스턴스의 파일 시스템에 있는 데이터베이스 로그에 대한 호스트 액세스를 제공하지 않습니다. 이러한 이유로 Amazon RDS를 사용하면 데이터베이스 로그를 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)로 내보낼 수 있습니다. CloudWatch Logs를 통해 로그 데이터에 대한 실시간 분석을 수행할 수 있습니다. 또한 내구성이 뛰어난 스토리지에 데이터를 저장하고, CloudWatch Logs Agent로 데이터를 관리할 수 있습니다.

**Topics**
+ [RDS와 CloudWatch Logs에 대한 통합 개요](#rds-integration-cw-logs)
+ [CloudWatch Logs에 게시할 로그 결정](#engine-specific-logs)
+ [CloudWatch Logs에 게시할 로그 지정](#integrating_cloudwatchlogs.configure)
+ [CloudWatch Logs에서 로그 검색 및 필터링](#accessing-logs-in-cloudwatch)

## RDS와 CloudWatch Logs에 대한 통합 개요
<a name="rds-integration-cw-logs"></a>

CloudWatch Logs에서 *로그 스트림*은 동일한 소스를 공유하는 일련의 로그 이벤트입니다. CloudWatch Logs에서 각 별도의 로그 소스가 별도의 로그 스트림을 구성합니다. 로그 그룹은 동일한 보존 기간, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 그룹입니다.

Amazon RDS는 DB 인스턴스 로그 레코드를 로그 그룹으로 지속적으로 스트리밍합니다. 예를 들어 게시하는 각 유형의 로그에 대한 로그 그룹 `/aws/rds/instance/instance_name/log_type`이 있습니다. 이 로그 그룹은 로그를 생성하는 데이터베이스 인스턴스와 동일한 AWS 리전에 있습니다.

보존 기간을 지정하지 않는 한 AWS는 CloudWatch Logs에 게시된 로그 데이터를 무기한 보존합니다. 자세한 내용은 [CloudWatch Logs에서 로그 데이터 보존 기간 변경](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention)을 참조하세요.

## CloudWatch Logs에 게시할 로그 결정
<a name="engine-specific-logs"></a>

각 RDS 데이터베이스 엔진은 자체 로그 세트를 지원합니다. 데이터베이스 엔진 옵션에 대해 알아보려면 다음 주제를 검토하십시오.
+ [Amazon CloudWatch Logs에 Db2 로그 게시](USER_LogAccess.Concepts.Db2.md#USER_LogAccess.Db2.PublishtoCloudWatchLogs)
+ [Amazon CloudWatch Logs에 MariaDB 로그 게시](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [Amazon CloudWatch Logs에 MySQL 로그 게시](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [Amazon CloudWatch Logs에 Oracle 로그 게시](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [Amazon CloudWatch Logs에 PostgreSQL 로그 게시](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)
+ [Amazon CloudWatch Logs에 SQL Server 로그 게시](USER_LogAccess.Concepts.SQLServer.md#USER_LogAccess.SQLServer.PublishtoCloudWatchLogs)

## CloudWatch Logs에 게시할 로그 지정
<a name="integrating_cloudwatchlogs.configure"></a>

콘솔에 게시할 로그를 지정합니다. AWS Identity and Access Management(IAM)에 서비스 연결 역할이 있는지 확인합니다. 서비스 연결 역할에 대한 자세한 내용은 [Amazon RDS에 서비스 연결 역할 사용](UsingWithRDS.IAM.ServiceLinkedRoles.md)를 참조하세요.

**게시할 로그 지정**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 다음 중 하나를 수행하세요.
   + **데이터베이스 생성**을 선택합니다.
   + 목록에서 데이터베이스를 선택한 다음 **수정**을 선택합니다.

1. **로그 내보내기**에서 게시할 로그를 선택합니다.

   다음 예시에서는 RDS for MySQL DB 인스턴스에 대한 감사 로그, 오류 로그, 일반 로그, 및 느린 쿼리 로그를 지정합니다.  
![\[CloudWatch Logs에 게시할 로그 선택\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/images/AddCWLogs.png)

## CloudWatch Logs에서 로그 검색 및 필터링
<a name="accessing-logs-in-cloudwatch"></a>

CloudWatch Logs 콘솔을 이용하여 지정된 기준을 충족하는 로그 항목을 검색할 수 있습니다. CloudWatch Logs 콘솔로 연결되는 RDS 콘솔이나 CloudWatch Logs 콘솔에서 직접 로그에 액세스할 수 있습니다.

**콘솔을 이용하여 로그 항목 검색**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. DB 인스턴스를 고르십시오.

1. **구성**을 선택합니다.

1. **게시된 로그**에서 보려는 데이터베이스 로그를 선택합니다.

**CloudWatch Logs 콘솔을 사용하여 플로우 로그 레코드 검색**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그 그룹**을 선택합니다.

1. 필터 상자에 **/aws/rds**를 입력합니다.

1. **로그 그룹**에서 검색할 로그 스트림이 포함된 로그 그룹의 이름을 선택합니다.

1. **로그 스트림**에서 검색할 로그 스트림의 이름을 선택합니다.

1. **로그 이벤트**에서 사용할 필터 구문을 입력합니다.

자세한 내용은 *Amazon CloudWatch Logs 사용 설명서의* [로그 데이터 검색 및 필터링](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)을 참조하십시오. RDS 로그를 모니터링하는 방법을 설명하는 블로그의 자습서는 [Amazon CloudWatch Logs, AWS Lambda 및 Amazon SNS를 사용하여 Amazon RDS에 대한 사전 예방적 데이터베이스 모니터링 구축](https://aws.amazon.com/blogs/database/build-proactive-database-monitoring-for-amazon-rds-with-amazon-cloudwatch-logs-aws-lambda-and-amazon-sns/)을 참조하십시오.

# REST를 사용하여 로그 파일 내용 읽기
<a name="DownloadCompleteDBLogFile"></a>

Amazon RDS는 DB 인스턴스 로그 파일 액세스를 허용하는 REST 엔드포인트를 제공합니다. Amazon RDS 로그 파일 내용을 스트리밍하는 애플리케이션을 작성해야 하는 경우 유용합니다.

구문은 다음과 같습니다.

```
GET /v13/downloadCompleteLogFile/DBInstanceIdentifier/LogFileName HTTP/1.1
Content-type: application/json
host: rds.region.amazonaws.com
```

다음 파라미터는 필수 파라미터입니다.
+ `DBInstanceIdentifier` — 다운로드하려는 로그 파일이 있는 DB 인스턴스에 고객이 할당하는 이름입니다.
+ `LogFileName` — 다운로드할 로그 파일의 이름입니다.

응답에는 스트림으로 요청된 로그 파일의 내용이 포함됩니다.

다음 예제에서는 *us-west-2* 리전에 *sample-sql*로 명명된 DB 인스턴스에 대해 *log/ERROR.6*으로 명명된 로그 파일을 다운로드합니다.

```
GET /v13/downloadCompleteLogFile/sample-sql/log/ERROR.6 HTTP/1.1
host: rds.us-west-2.amazonaws.com
X-Amz-Security-Token: AQoDYXdzEIH//////////wEa0AIXLhngC5zp9CyB1R6abwKrXHVR5efnAVN3XvR7IwqKYalFSn6UyJuEFTft9nObglx4QJ+GXV9cpACkETq=
X-Amz-Date: 20140903T233749Z
X-Amz-Algorithm: AWS4-HMAC-SHA256
X-Amz-Credential: AKIADQKE4SARGYLE/20140903/us-west-2/rds/aws4_request
X-Amz-SignedHeaders: host
X-Amz-Content-SHA256: e3b0c44298fc1c229afbf4c8996fb92427ae41e4649b934de495991b7852b855
X-Amz-Expires: 86400
X-Amz-Signature: 353a4f14b3f250142d9afc34f9f9948154d46ce7d4ec091d0cdabbcf8b40c558
```

존재하지 않는 DB 인스턴스를 지정하는 경우 응답에 다음 오류가 포함됩니다.
+ `DBInstanceNotFound` — `DBInstanceIdentifier`는 기존 DB 인스턴스를 참조하지 않습니다. (HTTP 상태 코드: 404)

# Amazon RDS for Db2 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.Db2"></a>

Amazon RDS 콘솔, AWS CLI 또는 RDS API를 사용하여 RDS for Db2 진단 로그와 알림 로그에 액세스할 수 있습니다. 파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 섹션을 참조하세요.

**Topics**
+ [보존 일정](#USER_LogAccess.Concepts.Db2.Retention)
+ [Amazon CloudWatch Logs에 Db2 로그 게시](#USER_LogAccess.Db2.PublishtoCloudWatchLogs)

## 보존 일정
<a name="USER_LogAccess.Concepts.Db2.Retention"></a>

로그 파일은 날마다, 그리고 DB 인스턴스가 다시 시작될 때마다 교환됩니다. 다음은 Amazon RDS의 RDS for Db2 로그에 대한 보존 일정입니다.


****  

| 로그 유형 | 보존 일정 | 
| --- | --- | 
|  진단 로그  |  Db2는 인스턴스 수준 구성의 보존 설정을 벗어난 로그를 삭제합니다. Amazon RDS는 `diagsize` 파라미터를 1,000으로 설정합니다.  | 
|  알림 로그  |  Db2는 인스턴스 수준 구성의 보존 설정을 벗어난 로그를 삭제합니다. Amazon RDS는 `diagsize` 파라미터를 1,000으로 설정합니다.  | 

## Amazon CloudWatch Logs에 Db2 로그 게시
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs"></a>

RDS for Db2를 사용하면 Amazon CloudWatch Logs에 직접 진단 로그 이벤트와 알림 로그 이벤트를 게시할 수 있습니다. CloudWatch Logs로 로그 데이터를 분석한 다음 CloudWatch를 사용하여 경보를 만들고 지표를 봅니다.

CloudWatch Logs을 사용하여 다음 작업을 할 수 있습니다.
+ 정의한 보존 기간 만큼, 내구성이 뛰어난 스토리지 공간에 로그를 저장하십시오.
+ 로그 데이터를 검색하고 필터링합니다.
+ 계정 간에 로그 데이터를 공유합니다.
+ Amazon S3로 로그를 내보냅니다.
+ Amazon OpenSearch Service로 데이터를 스트리밍합니다.
+ Amazon Kinesis Data Streams를 이용해 로그 데이터를 실시간으로 처리합니다. 자세한 내용은 SQL 애플리케이션용 Amazon Managed Service for Apache Flink 개발자 안내서의 [Amazon CloudWatch Logs로 작업](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html)을 참조하세요.**

 Amazon RDS는 각 RDS for Db2 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어, 진단 로그와 알림 로그를 게시하면 진단 데이터는 `/aws/rds/instance/my_instance/diagnostic` 로그 그룹의 진단 로그 스트림에 저장되고 알림 로그 데이터는 `/aws/rds/instance/my_instance/notify` 로그 그룹에 저장됩니다.

**참고**  
RDS for Db2 로그를 CloudWatch Logs에 게시하는 기능은 기본적으로 활성화되지 않습니다. 자체 조정 메모리 관리자(STMM) 및 옵티마이저 통계 로그 게시는 지원되지 않습니다. RDS for Db2 로그를 CloudWatch Logs에 게시하는 기능은 아시아 태평양(홍콩)을 제외한 모든 리전에 지원됩니다.

### 콘솔
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs.console"></a>

**AWS Management Console에서 RDS for Db2 로그를 CloudWatch Logs에 게시하는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

   **diag.log**, **notify.log** 또는 둘 다를 선택할 수 있습니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.Db2.PublishtoCloudWatchLogs.CLI"></a>

RDS for Db2 로그를 게시하기 위해 다음 파라미터와 함께 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 명령을 사용하여 RDS for Db2 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
다음 예에서는 CloudWatch Logs 게시가 활성화된 RDS for Db2 DB 인스턴스를 만듭니다. `--enable-cloudwatch-logs-exports` 값은 `diag.log`, `notify.log` 또는 둘 다 포함할 수 있는 문자열의 JSON 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --enable-cloudwatch-logs-exports '["diag.log","notify.log"]' \
    --db-instance-class db.m4.large \
    --engine db2-se
```
Windows의 경우:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --enable-cloudwatch-logs-exports "[\"diag.log\",\"notify.log\"]" ^
    --db-instance-class db.m4.large ^
    --engine db2-se
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 RDS for Db2 DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체의 키는 `EnableLogTypes`입니다. 값은 `diag.log`, `notify.log` 또는 둘 다 포함할 수 있는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["diag.log","notify.log"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"EnableLogTypes\":[\"diag.log\",\"notify.log\"]}"
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하는 기능을 비활성화하도록 기존 RDS for Db2 DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체의 키는 `DisableLogTypes`입니다. 값은 `diag.log`, `notify.log` 또는 둘 다 포함할 수 있는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["diag.log"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"diag.log\"]}"
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

# MariaDB 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.MariaDB"></a>

MariaDB 오류 로그, 느린 쿼리 로그, IAM 데이터베이스 인증 오류 로그, 일반 로그를 모니터링할 수 있습니다. MariaDB 오류 로그는 기본적으로 생성됩니다. DB 파라미터 그룹에서 파라미터를 설정하여 느린 쿼리 및 일반 로그를 생성할 수 있습니다. Amazon RDS는 모든 MariaDB 로그 파일을 교체합니다. 각 유형의 교체 간격은 다음과 같이 지정됩니다.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 통해 MariaDB 로그를 직접 모니터링할 수 있습니다. 또한, 주 데이터베이스에 있는 데이터베이스 테이블로 로그를 전송하고 그 테이블을 쿼리하여 MariaDB 로그에 액세스할 수 있습니다. mysqlbinlog 유틸리티를 사용하여 이진 로그를 다운로드할 수 있습니다.

파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 단원을 참조하십시오.

**Topics**
+ [MariaDB 오류 로그 액세스](USER_LogAccess.MariaDB.Errorlog.md)
+ [MariaDB 느린 쿼리 및 일반 로그 액세스](USER_LogAccess.MariaDB.Generallog.md)
+ [Amazon CloudWatch Logs에 MariaDB 로그 게시](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [MariaDB의 로그 교체 및 보존](USER_LogAccess.MariaDB.LogFileSize.md)
+ [테이블 기반 MariaDB 로그 관리](Appendix.MariaDB.CommonDBATasks.Logs.md)
+ [MariaDB 바이너리 로깅 구성](USER_LogAccess.MariaDB.BinaryFormat.md)
+ [MariaDB 이진 로그 액세스](USER_LogAccess.MariaDB.Binarylog.md)
+ [MariaDB 바이너리 로그 주석 활성화](USER_LogAccess.MariaDB.BinarylogAnnotation.md)

# MariaDB 오류 로그 액세스
<a name="USER_LogAccess.MariaDB.Errorlog"></a>

MariaDB 오류 로그는 `<host-name>.err` 파일에 기록됩니다. Amazon RDS 콘솔을 사용하여 이 파일을 보거나 Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 사용하여 로그를 검색할 수 있습니다. `<host-name>.err` 파일은 5분마다 플러시되고 그 내용이 `mysql-error-running.log`에 추가됩니다. 그런 다음, `mysql-error-running.log` 파일은 1시간마다 순환되고 지난 24시간 동안 매시간 생성된 파일이 보존됩니다. 각 로그 파일이 생성된 시간(UTC)이 파일 이름에 추가됩니다. 로그 파일에는 타임스탬프도 포함되어 있어, 로그 항목이 작성된 시간을 확인하는 데 도움이 됩니다.

MariaDB에서는 시작, 종료 및 오류 발생 시에만 오류 로그에 데이터가 기록됩니다. DB 인스턴스는 오류 로그에 새 항목이 기록되지 않는 상태로 몇 시간이나 며칠씩 작동할 수 있습니다. 최근 항목이 보이지 않으면 이는 서버에서 로그에 입력된 오류가 발생하지 않았기 때문입니다.

# MariaDB 느린 쿼리 및 일반 로그 액세스
<a name="USER_LogAccess.MariaDB.Generallog"></a>

DB 파라미터 그룹에서 파라미터를 설정하면 MariaDB 느린 쿼리 로그와 일반 로그를 파일이나 데이터베이스 테이블에 기록할 수 있습니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오. Amazon RDS 콘솔에서 또는 Amazon RDS API, AWS CLI, AWS SDK를 사용하여 느린 쿼리 로그 또는 일반 로그를 보려면 먼저 이러한 파라미터를 설정해야 합니다.

이 목록에 있는 파라미터를 사용하여 MariaDB 로깅을 제어할 수 있습니다.
+ `slow_query_log` 또는 `log_slow_query`: 느린 쿼리 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
+ `general_log`: 일반 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
+ `long_query_time` 또는 `log_slow_query_time`: 빠르게 실행되는 쿼리가 느린 쿼리 로그에 기록되지 않도록 하려면 로그에 기록할 쿼리의 최단 실행 시간 값(초)을 지정합니다. 기본값은 10초이고, 최소값은 0초입니다. log\$1output = FILE인 경우에는 마이크로초 단위까지 부동 소수점 값을 지정할 수 있습니다. log\$1output = TABLE인 경우에는 초 단위로 정수 값을 지정해야 합니다. 실행 시간이 `long_query_time` 또는 `log_slow_query_time` 값을 초과하는 쿼리만 로그에 기록됩니다. 예를 들어, `long_query_time` 또는 `log_slow_query_time`을 0.1로 설정하면 100밀리초 미만의 시간 동안 작동하는 쿼리가 로그에 기록되지 않습니다.
+ `log_queries_not_using_indexes`: 인덱스를 사용하지 않는 모든 쿼리를 느린 쿼리 로그에 기록하려면 이 파라미터를 1로 설정합니다. 기본값은 0입니다. 인덱스를 사용하지 않는 쿼리는 실행 시간이 `long_query_time` 파라미터의 값보다 짧아도 로그에 기록됩니다.
+ `log_output option`: `log_output` 파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다.
  + **TABLE**(기본값)– `mysql.general_log` 테이블에는 일반 쿼리를, `mysql.slow_log` 테이블에는 느린 쿼리를 씁니다.
  + **FILE**– 파일 시스템에 일반 쿼리 로그와 느린 쿼리 로그를 모두 씁니다. 로그 파일은 매시간 순환됩니다.
  + **NONE**– 로깅을 비활성화합니다.

로깅을 사용하는 경우, Amazon RDS는 테이블 로그를 순환하거나 로그 파일을 정기적으로 삭제합니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다. `FILE` 및 `TABLE` 로깅 접근 방식 교체 및 삭제는 다음과 같습니다.
+ `FILE` 로깅을 사용하는 경우, 로그 파일은 매시간 검사되며 24시간 이상 지난 로그 파일은 삭제됩니다. 경우에 따라 삭제 후 나머지 로그 파일의 총 크기가 DB 인스턴스에 할당된 공간 중 2%의 임계값을 초과할 수 있습니다. 이러한 경우 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 큰 로그 파일부터 차례대로 삭제됩니다.
+ `TABLE` 로깅이 활성화된 경우 경우에 따라 로그 테이블이 24시간마다 순환됩니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 20% 이상을 차지하면 이 교체가 발생합니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다. DB 인스턴스에 대해 사용된 공간의 양이 DB 인스턴스의 할당된 스토리지 공간 중 90% 이상을 차지할 경우, 로그 교체를 위한 임계값은 줄어듭니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 10% 이상을 차지하면 로그 테이블이 교체됩니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다.

  로그 테이블이 순환되면 현재 로그 테이블은 백업 로그 테이블에 복사되며 현재 로그 테이블의 해당 항목들은 제거됩니다. 백업 로그 테이블이 이미 존재할 경우, 현재 로그 테이블이 백업으로 복사되기 전에 백업 로그 테이블이 삭제됩니다. 필요하다면 백업 로그 테이블을 쿼리할 수 있습니다. `mysql.general_log` 테이블에 대한 백업 로그 테이블 이름은 `mysql.general_log_backup`으로 지정됩니다. `mysql.slow_log` 테이블에 대한 백업 로그 테이블 이름은 `mysql.slow_log_backup`으로 지정됩니다.

  `mysql.general_log` 절차를 호출하면 `mysql.rds_rotate_general_log` 테이블을 순환할 수 있습니다. `mysql.slow_log` 절차를 호출하면 `mysql.rds_rotate_slow_log` 테이블을 순환할 수 있습니다.

  데이터베이스 버전 업그레이드가 진행되는 동안 테이블 로그가 순환됩니다.

Amazon RDS는 `TABLE` 및 `FILE` 로그 순환을 Amazon RDS 이벤트에 기록하고 사용자에게 알림 메시지를 보냅니다.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그를 사용하여 작업하려면 `log_output` 파라미터를 FILE로 설정합니다. MariaDB 오류 로그와 같이, 이런 로그 파일은 매시간 순환됩니다. 이전의 24시간 동안 생성된 로그 파일이 보존됩니다.

느린 쿼리 및 일반 로그에 대한 자세한 내용은 MariaDB 문서에서 다음 단원을 참조하십시오.
+ [느린 쿼리 로그](http://mariadb.com/kb/en/mariadb/slow-query-log/)
+ [일반 쿼리 로그](http://mariadb.com/kb/en/mariadb/general-query-log/)

# Amazon CloudWatch Logs에 MariaDB 로그 게시
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs"></a>

Amazon CloudWatch Logs의 로그 그룹에 로그 데이터를 게시하도록 MariaDB DB 인스턴스를 구성할 수 있습니다. CloudWatch Logs를 통해 로그 데이터에 대한 실시간 분석을 수행할 수 있고, CloudWatch를 사용하여 경보를 만들고 지표를 볼 수 있습니다. CloudWatch Logs를 사용하여 내구성이 뛰어난 스토리지에 로그 레코드를 저장할 수 있습니다.

Amazon RDS는 각 MariaDB 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어 느린 쿼리 포함하도록 내보내기 함수를 구성한다고 가정합니다. 그러면 느린 쿼리 데이터가 `/aws/rds/instance/my_instance/slowquery` 로그 그룹의 느린 쿼리 로그 스트림에 저장됩니다.

오류 로그는 기본적으로 활성화됩니다. 다음 표에는 기타 MariaDB 로그의 요구 사항이 요약되어 있습니다.


| 로그 | 요구 사항 | 
| --- | --- | 
|  감사 로그  |  DB 인스턴스는 `MARIADB_AUDIT_PLUGIN` 옵션과 함께 사용자 지정 옵션 그룹을 사용해야 합니다.  | 
|  일반 로그  |  DB 인스턴스는 파라미터 설정 `general_log = 1`과 함께 사용자 지정 파라미터 그룹을 사용하여 일반 로그를 활성화해야 합니다.  | 
|  느린 쿼리 로그  |  DB 인스턴스는 파라미터 설정 `slow_query_log = 1` 또는 `log_slow_query = 1`과 함께 사용자 지정 파라미터 그룹을 사용하여 느린 쿼리 로그를 활성화해야 합니다.  | 
|  IAM 데이터베이스 인증 오류 로그  |  DB 인스턴스를 만들거나 수정하여 DB 인스턴스의 `iam-db-auth-error` 로그 유형을 사용 설정해야 합니다.  | 
|  로그 출력  |  DB 인스턴스는 파라미터 설정 `log_output = FILE`과 함께 사용자 지정 파라미터 그룹을 사용하여 로그를 파일 시스템에 쓰고 CloudWatch Logs에 게시해야 합니다.  | 

## 콘솔
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CON"></a>

**콘솔에서 CloudWatch Logs에 MariaDB 로그를 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

## AWS CLI
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CLI"></a>

AWS CLI를 사용하여 MariaDB 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또 다음 AWS CLI 명령을 호출해 MariaDB 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

다음 옵션으로 AWS CLI 명령 중 하나를 실행합니다.
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

실행하는 AWS CLI 명령에 따라 다른 옵션이 필요할 수 있습니다.

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 MariaDB DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `audit`, `error`, `general` 및 `slowquery`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```

**Example**  
다음 명령은 CloudWatch Logs에 로그 파일을 게시하도록 MariaDB DB 인스턴스를 만듭니다. `--enable-cloudwatch-logs-exports` 값은 문자열의 JSON 배열입니다. 문자열은 `audit`, `error`, `general` 및 `slowquery`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \
4.     --db-instance-class db.m4.large \
5.     --engine mariadb
```
Windows의 경우:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine mariadb
```

## RDS API
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 MariaDB 로그를 게시할 수 있습니다. 다음 파라미터와 함께 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출해 MariaDB 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 AWS CLI 명령에 따라 다른 파라미터가 필요할 수 있습니다.

# MariaDB의 로그 교체 및 보존
<a name="USER_LogAccess.MariaDB.LogFileSize"></a>

로깅을 사용하는 경우, Amazon RDS는 테이블 로그를 순환하거나 로그 파일을 정기적으로 삭제합니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다.

MariaDB 느린 쿼리 로그, 오류 로그 및 일반 로그 파일 크기는 DB 인스턴스에 대해 할당된 스토리지 공간의 2% 이하로 제한됩니다. 이 임계값을 유지하기 위해 로그는 매시간 자동으로 순환되면서 24시간 이상 지난 로그 파일은 제거됩니다. 오래된 로그 파일을 제거한 후 로그 파일의 총 크기가 임계값을 초과하는 경우에는 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 큰 로그 파일부터 차례대로 삭제됩니다.

Amazon RDS는 10MB보다 큰 IAM 데이터베이스 인증 오류 로그 파일을 교체합니다. Amazon RDS는 5일 이상 또는 100MB 이상의 IAM 데이터베이스 인증 오류 로그 파일을 제거합니다.

# 테이블 기반 MariaDB 로그 관리
<a name="Appendix.MariaDB.CommonDBATasks.Logs"></a>

일반 및 느린 쿼리 로그를 DB 인스턴스상의 테이블로 전송할 수 있습니다. 이렇게 하려면 DB 파라미터 그룹을 만들고 `log_output` 서버 파라미터를 `TABLE`로 설정합니다. 그러면 일반 쿼리는 `mysql.general_log` 테이블에, 느린 쿼리는 `mysql.slow_log` 테이블에 로그가 기록됩니다. 이들 테이블을 쿼리하여 로그 정보에 액세스할 수 있습니다. 이 로깅을 활성화하면 데이터베이스에 기록되는 데이터의 양이 증가하여 성능이 저하될 수 있습니다.

일반 로그와 느린 쿼리 로그는 모두 기본적으로 비활성화됩니다. 표에 대한 로깅을 활성화하려면 다음 서버 파라미터도 `1`로 설정해야 합니다.
+ `general_log`
+ `slow_query_log` 또는 `log_slow_query`

관련 파라미터를 `0`으로 설정하여 각 로깅 활동을 해제할 때까지 로그 테이블은 계속 커집니다. 흔히 대량의 데이터가 시간 경과에 따라 누적되어 할당된 스토리지 공간 중 상당한 비율을 사용할 수 있습니다. Amazon RDS에서는 로그 테이블을 자를 수 없지만 테이블의 콘텐츠를 이동할 수 있습니다. 테이블을 순환하면 그 내용이 백업 테이블에 저장된 다음 빈 로그 테이블이 새로 생성됩니다. 다음 명령줄 프로시저로 로그 테이블을 수동으로 순환시킬 수 있으며, 이때 명령 프롬프트는 `PROMPT>`로 표시됩니다.

```
PROMPT> CALL mysql.rds_rotate_slow_log;
PROMPT> CALL mysql.rds_rotate_general_log;
```

 오래된 데이터를 완전히 제거하고 디스크 공간을 회수하려면 알맞은 프로시저를 두 번 연속으로 호출합니다.

# MariaDB 바이너리 로깅 구성
<a name="USER_LogAccess.MariaDB.BinaryFormat"></a>

*이진 로그*는 MariaDB 서버 인스턴스의 데이터 수정에 대한 정보를 포함하는 로그 파일 세트입니다. 이진 로그에는 다음과 같은 정보가 포함되어 있습니다.
+ 테이블 생성 또는 행 수정과 같은 데이터베이스 변경 사항을 설명하는 이벤트
+ 데이터를 업데이트한 각 문의 기간에 대한 정보
+ 데이터를 업데이트할 수 있었지만 업데이트하지 않은 문에 대한 이벤트

이진 로그는 복제 중 전송된 문을 기록합니다. 일부 복구 작업에도 필요합니다. 자세한 내용은 MariaDB 설명서에서 [Binary Log](https://mariadb.com/kb/en/binary-log/)를 참조하세요.

자동 백업 기능은 MariaDB에 대해 이진 로깅을 설정할지 아니면 해제할지를 결정합니다. 다음과 같은 옵션이 있습니다.

이진 로깅 설정  
백업 보존 기간을 0이 아닌 양수 값으로 설정합니다.

이진 로깅 해제  
백업 보존 기간을 0으로 설정합니다.

자세한 내용은 [자동 백업 활성화](USER_WorkingWithAutomatedBackups.Enabling.md) 섹션을 참조하세요.

Amazon RDS의 MariaDB는 *행 기반*, *설명문 기반* 및 *혼합* 바이너리 로깅 형식을 지원합니다. 기본 이진 로깅 형식은 *혼합*입니다. 다양한 MariaDB 이진 로그 형식에 관한 세부 정보는 MariaDB 설명서에서 [이진 로그 형식](http://mariadb.com/kb/en/mariadb/binary-log-formats/) 단원을 참조하십시오.

복제를 사용할 계획이라면 이진 로깅 형식이 중요합니다. 이진 로깅 형식이 원본에 기록되고 복제 대상으로 전송되는 데이터 변경 내용의 레코드를 결정하기 때문입니다. 복제와 관련된 다양한 바이너리 로깅 형식의 장/단점에 대한 자세한 내용은 MySQL 설명서의 [Advantages and Disadvantages of Statement-Based and Row-Based Replication](https://dev.mysql.com/doc/refman/5.7/en/replication-sbr-rbr.html)을 참조하십시오.

**중요**  
이진 로깅 형식을 행 기반으로 설정하면 이진 로그 파일이 매우 커질 수 있습니다. 큰 이진 로그 파일은 DB 인스턴스가 사용할 수 있는 스토리지의 양이 줄어들게 합니다. 또한 DB 인스턴스의 복원 작업 수행에 필요한 시간이 늘어나게 할 수도 있습니다.  
설명문 기반 복제는 원본 DB 인스턴스와 읽기 전용 복제본 간의 불일치를 초래할 수 있습니다. 자세한 내용은 MariaDB 설명서의 [ Unsafe Statements for Statement-based Replication](https://mariadb.com/kb/en/library/unsafe-statements-for-statement-based-replication/)을 참조하십시오.  
이진 로깅을 활성화하면 DB 인스턴스에 대한 평균 디스크 쓰기 I/O 작업 수가 증가합니다. `WriteIOPS` CloudWatch 지표를 사용하여 IOPS 사용량을 모니터링할 수 있습니다.

**MariaDB 이진 로깅 형식을 설정하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

1. 수정할 DB 인스턴스에 사용되는 파라미터 그룹을 선택합니다.

   기본 파라미터 그룹을 수정할 수 없습니다. DB 인스턴스에서 기본 파라미터 그룹을 사용 중인 경우 새 파라미터 그룹을 생성하여 DB 인스턴스와 연결합니다.

   DB 파라미터 그룹에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

1. **파라미터 그룹 작업**에서 **편집**을 선택합니다.

1. `binlog_format` 파라미터를 선택한 바이너리 로깅 형식(**ROW**, **STATEMENT** 또는 **MIXED**)으로 설정합니다.

   DB 인스턴스의 백업 보존 기간을 0으로 설정하여 이진 로깅을 끌 수 있지만, 이렇게 하면 일일 자동 백업이 비활성화됩니다. 자동 백업을 비활성화하면 `log_bin` 세션 변수가 꺼지거나 비활성화됩니다. 그러면 RDS for MariaDB DB 인스턴스에 대한 이진 로깅이 비활성화되며, 이는 다시 `binlog_format` 세션 변수를 데이터베이스의 기본값인 `ROW` 값으로 재설정합니다. 백업을 비활성화하지 않는 것이 좋습니다. **백업 보존 기간** 설정에 대한 자세한 정보는 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

1. **변경 내용 저장**을 선택하여 업데이트를 DB 파라미터 그룹에 저장합니다.

`binlog_format` 파라미터는 RDS for MariaDB에서 동적이므로 DB 인스턴스를 재부팅하지 않고 변경 사항을 적용할 수 있습니다.

**중요**  
DB 파라미터 그룹을 변경하면 해당 파라미터 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. AWS 리전의 다양한 MariaDB DB 인스턴스에 대해 서로 다른 바이너리 로깅 형식을 지정하려면 DB 인스턴스에서 서로 다른 DB 파라미터 그룹을 사용해야 합니다. 이러한 파라미터 그룹은 다양한 로깅 형식을 식별합니다. 각 DB 인스턴스에 적절한 DB 파라미터 그룹을 할당합니다.

# MariaDB 이진 로그 액세스
<a name="USER_LogAccess.MariaDB.Binarylog"></a>

mysqlbinlog 유틸리티를 사용하여 MariaDB DB 인스턴스로부터 텍스트 형식의 이진 로그를 다운로드할 수 있습니다. 이진 로그는 로컬 컴퓨터로 다운로드됩니다. mysqlbinlog 유틸리티 사용에 대한 자세한 내용은 MariaDB 설명서에서 [mysqlbinlog 사용](http://mariadb.com/kb/en/mariadb/using-mysqlbinlog/)을 참조하십시오.

 Amazon RDS 인스턴스에 대해 mysqlbinlog 유틸리티를 실행하려면 다음 옵션을 사용합니다.
+  `--read-from-remote-server` 옵션을 지정합니다.
+  `--host`: 인스턴스의 엔드포인트에서 DNS 이름을 지정합니다.
+  `--port`: 인스턴스에서 사용되는 포트를 지정합니다.
+  `--user`: 복제 슬레이브 권한이 부여된 MariaDB 사용자를 지정합니다.
+  `--password`: 사용자의 암호를 지정하거나, 유틸리티에서 암호 입력을 요구하는 메시지가 표시되도록 암호 값을 생략합니다.
+  `--result-file`: 출력을 수신할 로컬 파일을 지정합니다.
+ 하나 이상의 이진 로그 파일의 이름을 지정합니다. 사용 가능한 로그의 목록을 획득하려면 SQL 명령 SHOW BINARY LOGS를 사용합니다.

mysqlbinlog 옵션에 대한 자세한 내용은 MariaDB 설명서에서 [mysqlbinlog 옵션](http://mariadb.com/kb/en/mariadb/mysqlbinlog-options/)을 참조하십시오.

 다음은 그 예제입니다.

대상 LinuxmacOS, 또는Unix:

```
mysqlbinlog \
    --read-from-remote-server \
    --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com \
    --port=3306  \
    --user ReplUser \
    --password <password> \
    --result-file=/tmp/binlog.txt
```

Windows의 경우:

```
mysqlbinlog ^
    --read-from-remote-server ^
    --host=mariadbinstance1.1234abcd.region.rds.amazonaws.com ^
    --port=3306  ^
    --user ReplUser ^
    --password <password> ^
    --result-file=/tmp/binlog.txt
```

Amazon RDS는 보통은 최대한 빨리 이진 파일을 삭제합니다. 하지만 mysqlbinlog가 액세스할 수 있도록 인스턴스에서 이진 파일을 여전히 사용할 수 있어야 합니다. RDS의 이진수 로그 보관 시간을 지정하려면 `mysql.rds_set_configuration` 저장 프로시저를 사용합니다. 로그를 다운로드할 수 있는 충분한 기간을 지정합니다. 보존 기간을 설정한 후, DB 인스턴스의 스토리지 사용량을 모니터링하여 보존된 이진 로그가 너무 많은 스토리지를 차지하지 않도록 합니다.

다음 예제에서는 보존 기간을 1일로 설정합니다.

```
call mysql.rds_set_configuration('binlog retention hours', 24); 
```

현재 설정을 표시하려면 `mysql.rds_show_configuration` 저장 프로시저를 사용합니다.

```
call mysql.rds_show_configuration; 
```

# MariaDB 바이너리 로그 주석 활성화
<a name="USER_LogAccess.MariaDB.BinarylogAnnotation"></a>

MariaDB DB 인스턴스에서, `Annotate_rows` 이벤트를 사용하여 행 이벤트로 인해 발생한 SQL 쿼리의 복사본으로 해당 행 이벤트에 주석을 달 수 있습니다. 이 접근 방식은 RDS for MySQL DB 인스턴스에서 `binlog_rows_query_log_events` 파라미터를 활성화하는 것과 비슷한 기능을 제공합니다.

사용자 지정 파라미터 그룹을 생성하고 `binlog_annotate_row_events` 파라미터를 **1**로 설정하여 이진 로그 주석을 전역에서 활성화할 수 있습니다. 또한 `SET SESSION binlog_annotate_row_events = 1` 호출로 세션 수준에서 주석을 활성화할 수도 있습니다. 복제본 인스턴스에서 바이너리 로깅이 사용되는 경우 `replicate_annotate_row_events`를 사용하여 바이너리 로그 주석을 복제본 인스턴스로 복제합니다. 이러한 설정을 사용하는 데는 특별한 권한이 필요하지 않습니다.

다음 예는 MariaDB의 행 기반 트랜잭션입니다. 트랜잭션 격리 수준을 읽기 커밋으로 설정하면 행 기반 로깅 사용이 트리거됩니다.

```
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN
INSERT INTO square(x, y) VALUES(5, 5 * 5);
COMMIT;
```

주석이 없을 경우, 트랜잭션의 이진 로그 항목은 다음과 같습니다.

```
BEGIN
/*!*/;
# at 1163
# at 1209
#150922  7:55:57 server id 1855786460  end_log_pos 1209         Table_map: `test`.`square` mapped to number 76
#150922  7:55:57 server id 1855786460  end_log_pos 1247         Write_rows: table id 76 flags: STMT_END_F
### INSERT INTO `test`.`square`
### SET
###   @1=5
###   @2=25
# at 1247
#150922  7:56:01 server id 1855786460  end_log_pos 1274         Xid = 62
COMMIT/*!*/;
```

다음 문은 이 동일한 트랜잭션에 대해 세션 수준의 주석을 활성화하고, 트랜잭션을 커밋한 후 다시 비활성화합니다.

```
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE square(x INT PRIMARY KEY, y INT NOT NULL) ENGINE = InnoDB;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET SESSION binlog_annotate_row_events = 1;
BEGIN;
INSERT INTO square(x, y) VALUES(5, 5 * 5);
COMMIT;
SET SESSION binlog_annotate_row_events = 0;
```

주석이 있는 경우, 트랜잭션의 이진 로그 항목은 다음과 같습니다.

```
BEGIN
/*!*/;
# at 423
# at 483
# at 529
#150922  8:04:24 server id 1855786460  end_log_pos 483  Annotate_rows:
#Q> INSERT INTO square(x, y) VALUES(5, 5 * 5)
#150922  8:04:24 server id 1855786460  end_log_pos 529  Table_map: `test`.`square` mapped to number 76
#150922  8:04:24 server id 1855786460  end_log_pos 567  Write_rows: table id 76 flags: STMT_END_F
### INSERT INTO `test`.`square`
### SET
###   @1=5
###   @2=25
# at 567
#150922  8:04:26 server id 1855786460  end_log_pos 594  Xid = 88
COMMIT/*!*/;
```

# Amazon RDS for Microsoft SQL Server 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.SQLServer"></a>

Amazon RDS 콘솔 또는 AWS CLI 또는 RDS API를 사용하여 Microsoft SQL Server 오류 로그, 에이전트 로그, 추적 파일 및 덤프 파일에 액세스할 수 있습니다. 파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 섹션을 참조하세요.

## 보존 일정
<a name="USER_LogAccess.Concepts.SQLServer.Retention"></a>

로그 파일은 날마다, 그리고 DB 인스턴스가 다시 시작될 때마다 교환됩니다. 다음은 Amazon RDS의 Microsoft SQL Server 로그에 대한 보존 일정입니다.


****  

| 로그 유형 | 보존 일정 | 
| --- | --- | 
|  오류 로그  |  최대 30개의 오류 로그가 보존됩니다. Amazon RDS는 7일이 경과한 오류 로그를 삭제할 수도 있습니다.  | 
|  에이전트 로그  |  최대 10개의 에이전트 로그가 보존됩니다. Amazon RDS에서는 7일이 경과한 에이전트 로그를 삭제할 수 있습니다.  | 
|  추적 파일  |  추적 파일은 DB 인스턴스의 추적 파일 보존 기간에 따라 보존됩니다. 추적 파일의 기본 보존 기간은 7일입니다. DB 인스턴스의 추적 파일 보존 기간을 수정하려면 [추적 및 덤프 파일의 보존 기간 설정](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles) 섹션을 참조하세요.  | 
|  덤프 파일  |  덤프 파일은 DB 인스턴스의 덤프 파일 보존 기간에 따라 보존됩니다. 덤프 파일의 기본 보존 기간은 7일입니다. DB 인스턴스의 덤프 파일 보존 기간을 수정하려면 [추적 및 덤프 파일의 보존 기간 설정](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles) 섹션을 참조하세요.  | 

## rds\$1read\$1error\$1log 프로시저를 사용하여 SQL Server 오류 로그 보기
<a name="USER_LogAccess.Concepts.SQLServer.Proc"></a>

Amazon RDS 저장 프로시저 `rds_read_error_log`를 사용하여 오류 로그 및 에이전트 로그를 볼 수 있습니다. 자세한 내용은 [오류 및 에이전트 로그 보기](Appendix.SQLServer.CommonDBATasks.Logs.md#Appendix.SQLServer.CommonDBATasks.Logs.SP) 섹션을 참조하세요.

## Amazon CloudWatch Logs에 SQL Server 로그 게시
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs"></a>

Amazon RDS for SQL Server의 경우, 오류 및 에이전트 로그 이벤트를 Amazon CloudWatch Logs에 직접 게시할 수 있습니다. CloudWatch Logs로 로그 데이터를 분석한 다음 CloudWatch를 사용하여 경보를 만들고 지표를 봅니다.

CloudWatch Logs을 사용하여 다음 작업을 할 수 있습니다.
+ 정의한 보존 기간 만큼, 내구성이 뛰어난 스토리지 공간에 로그를 저장하십시오.
+ 로그 데이터를 검색하고 필터링합니다.
+ 계정 간에 로그 데이터를 공유합니다.
+ Amazon S3로 로그를 내보냅니다.
+ Amazon OpenSearch Service로 데이터를 스트리밍합니다.
+ Amazon Kinesis Data Streams를 이용해 로그 데이터를 실시간으로 처리합니다. 자세한 내용은 SQL 애플리케이션용 Amazon Managed Service for Apache Flink 개발자 안내서의 [Amazon CloudWatch Logs로 작업](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/cloudwatch-logs.html)을 참조하세요.**

 Amazon RDS는 각 SQL Server 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어, 에이전트 로그 및 오류 로그를 게시하면 오류 데이터가 `/aws/rds/instance/my_instance.node1/error` 로그 그룹의 오류 로그 스트림에 저장되고 에이전트 로그 데이터가 `/aws/rds/instance/my_instance.node1/agent` 로그 그룹에 저장됩니다.

다중 AZ DB 인스턴스의 경우 Amazon RDS는 데이터베이스 로그를 로그 그룹에 별도의 두 스트림으로 게시합니다. 예를 들어 오류 로그를 게시하는 경우 오류 데이터가 오류 로그 스트림 `/aws/rds/instance/my_instance.node1/error`와 `/aws/rds/instance/my_instance.node2/error`에 각각 저장됩니다. 로그 스트림은 장애 조치 중에 변경되지 않으며 각 노드의 오류 로그 스트림에는 기본 또는 보조 인스턴스의 오류 로그가 포함될 수 있습니다. 다중 AZ를 사용하면 DB 인스턴스 장애 조치와 같은 이벤트 데이터를 저장하기 위해 `/aws/rds/instance/my_instance/rds-events`에 대한 로그 스트림이 자동으로 생성됩니다.

**참고**  
CloudWatch Logs의 SQL Server 로그 게시는 기본적으로 활성화되지 않습니다. 추적 및 덤프 파일 게시는 지원되지 않습니다. SQL Server 로그를 CloudWatch Logs에 게시하는 기능은 모든 리전에서 지원됩니다.

### 콘솔
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.console"></a>

**AWS Management Console에서 SQL Server DB 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

   **에이전트 로그(Agent log)**, **오류 로그(Error log)** 또는 둘 다를 선택할 수 있습니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.CLI"></a>

SQL Server 로그를 게시하기 위해 다음 파라미터와 함께 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 명령을 사용하여 SQL Server 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
다음 예에서는 CloudWatch Logs 게시가 활성화된 SQL Server DB 인스턴스를 생성합니다. `--enable-cloudwatch-logs-exports` 값은 `error`, `agent` 또는 둘 다 포함할 수 있는 문자열의 JSON 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --enable-cloudwatch-logs-exports '["error","agent"]' \
    --db-instance-class db.m4.large \
    --engine sqlserver-se
```
Windows의 경우:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --enable-cloudwatch-logs-exports "[\"error\",\"agent\"]" ^
    --db-instance-class db.m4.large ^
    --engine sqlserver-se
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 SQL Server DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체의 키는 `EnableLogTypes`입니다. 값은 `error`, `agent` 또는 둘 다 포함할 수 있는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","agent"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"EnableLogTypes\":[\"error\",\"agent\"]}"
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

**Example**  
다음 예제는 기존 SQL Server DB 인스턴스를 수정하여 CloudWatch Logs에 에이전트 로그 파일 게시를 비활성화합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체의 키는 `DisableLogTypes`입니다. 값은 `error`, `agent` 또는 둘 다 포함할 수 있는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["agent"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"agent\"]}"
```
Windows 명령 프롬프트를 사용하는 경우 백슬래시(\$1)를 접두사로 추가하여 JSON 코드에서 큰 따옴표(")를 이스케이프해야 합니다.

# MySQL 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.MySQL"></a>

Amazon RDS 콘솔, Amazon RDS API, AWS CLI 또는 AWS SDK를 통해 MySQL 로그를 직접 모니터링할 수 있습니다. 또한, 주 데이터베이스에 있는 데이터베이스 테이블로 로그를 전송하고 그 테이블을 쿼리하여 MySQL 로그에 액세스할 수 있습니다. mysqlbinlog 유틸리티를 사용하여 이진 로그를 다운로드할 수 있습니다.

파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 단원을 참조하십시오.

**Topics**
+ [RDS for MySQL 데이터베이스 로그 개요](USER_LogAccess.MySQL.LogFileSize.md)
+ [Amazon CloudWatch Logs에 MySQL 로그 게시](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [MySQL 로그 출력을 표로 보내기](Appendix.MySQL.CommonDBATasks.Logs.md)
+ [단일 AZ 데이터베이스의 RDS for MySQL 이진 로깅 구성](USER_LogAccess.MySQL.BinaryFormat.md)
+ [다중 AZ DB 클러스터에 대한 MySQL 이진 로깅 구성](USER_Binlog.MultiAZ.md)
+ [MySQL 이진 로그 액세스](USER_LogAccess.MySQL.Binarylog.md)

# RDS for MySQL 데이터베이스 로그 개요
<a name="USER_LogAccess.MySQL.LogFileSize"></a>

다음 유형의 RDS for MySQL 로그 파일을 모니터링할 수 있습니다.
+ 오류 로그
+ 느린 쿼리 로그
+ 일반 로그
+ 감사 로그
+ 인스턴스 로그
+ IAM 데이터베이스 인증 오류 로그

RDS for MySQL 오류 로그는 기본적으로 생성됩니다. DB 파라미터 그룹에서 파라미터를 설정하여 느린 쿼리 및 일반 로그를 생성할 수 있습니다.

**Topics**
+ [RDS for MySQL 오류 로그](#USER_LogAccess.MySQL.Errorlog)
+ [RDS for MySQL 느린 쿼리 로그 및 일반 로그](#USER_LogAccess.MySQL.Generallog)
+ [MySQL 감사 로그](#USER_LogAccess.MySQL.Auditlog)
+ [RDS for MySQL용 로그 교체 및 보존](#USER_LogAccess.MySQL.LogFileSize.retention)
+ [다시 실행 로그의 크기 제한](#USER_LogAccess.MySQL.LogFileSize.RedoLogs)

## RDS for MySQL 오류 로그
<a name="USER_LogAccess.MySQL.Errorlog"></a>

RDS for MySQL은 `mysql-error.log` 파일에 오류를 기록합니다. 각 로그 파일이 생성된 시간(UTC)이 파일 이름에 추가됩니다. 로그 파일에는 타임스탬프도 포함되어 있어, 로그 항목이 작성된 시간을 확인하는 데 도움이 됩니다.

RDS for MySQL에서는 시작, 종료 및 오류 발생 시에만 오류 로그에 데이터가 로그됩니다. DB 인스턴스는 오류 로그에 새 항목이 기록되지 않는 상태로 몇 시간이나 며칠씩 작동할 수 있습니다. 최근 항목이 보이지 않으면 이는 서버에서 로그에 입력될 만한 오류가 발생하지 않았기 때문입니다.

기본적으로 오류 로그는 오류와 같은 예기치 않은 이벤트만 표시되도록 필터링됩니다. 그러나 오류 로그에는 쿼리 진행률과 같이 표시되지 않는 몇 가지 추가 데이터베이스 정보도 포함되어 있습니다. 따라서 실제 오류가 없더라도 진행 중인 데이터베이스 작업으로 인해 오류 로그의 크기가 커질 수 있습니다. 그리고 AWS Management Console에서 오류 로그의 특정 크기(바이트 또는 킬로바이트)를 볼 수 있지만 다운로드할 때 0바이트일 수 있습니다.

RDS for MySQL은 5분마다 `mysql-error.log`를 디스크에 씁니다. 또한, 로그의 콘텐츠를 `mysql-error-running.log`에 추가합니다.

RDS for MySQL은 `mysql-error-running.log` 파일을 1시간마다 교체합니다. 또한, 지난 2주 동안 생성된 로그를 보존합니다.

**참고**  
로그 보존 기간은 Amazon RDS와 Aurora 간에 다릅니다.

## RDS for MySQL 느린 쿼리 로그 및 일반 로그
<a name="USER_LogAccess.MySQL.Generallog"></a>

RDS for MySQL 느린 쿼리 로그와 일반 로그를 파일이나 데이터베이스 테이블에 기록할 수 있습니다. 그러려면 DB 파라미터 그룹의 파라미터를 설정합니다. DB 파라미터 그룹의 생성 및 변경에 대한 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오. 이런 파라미터를 설정해야 Amazon RDS 콘솔에서 느린 쿼리 로그 또는 일반 로그를 볼 수 있습니다. 아니면 Amazon RDS API, Amazon RDS CLI 또는 AWS SDK를 사용하여 볼 수 있습니다.

이 목록에 있는 파라미터를 사용하여 RDS for MySQL 로깅을 제어할 수 있습니다.
+ `slow_query_log`: 느린 쿼리 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
+ `general_log`: 일반 로그를 만들려면 1로 설정합니다. 기본값은 0입니다.
+ `long_query_time`: 빠르게 실행되는 쿼리가 느린 쿼리 로그에 기록되지 않도록 하려면 로깅할 쿼리의 최단 런타임 값(초)을 지정합니다. 기본값은 10초이고, 최소값은 0초입니다. log\$1output = FILE인 경우에는 마이크로초 단위까지 부동 소수점 값을 지정할 수 있습니다. log\$1output = TABLE인 경우에는 초 단위로 정수 값을 지정해야 합니다. 런타임이 `long_query_time` 값을 초과하는 쿼리만 로깅됩니다. 예를 들어 `long_query_time`을 0.1로 설정하면 100밀리초 미만의 시간 동안 작동하는 쿼리가 로그에 기록되지 않습니다.
+ `log_queries_not_using_indexes`: 인덱스를 사용하지 않는 모든 쿼리를 느린 쿼리 로그에 기록하려면 1로 설정합니다. 인덱스를 사용하지 않는 쿼리는 런타임이 `long_query_time` 파라미터의 값보다 짧아도 로깅됩니다. 기본값은 0입니다.
+ `log_output option`: `log_output` 파라미터에 대해 다음 옵션 중 하나를 지정할 수 있습니다.
  + **TABLE**(기본값) – 일반 쿼리를 `mysql.general_log`테이블에 쓰고 느린 쿼리를 `mysql.slow_log` 테이블에 씁니다.
  + **FILE** – 일반 쿼리 로그와 느린 쿼리 로그를 모두 파일 시스템에 씁니다.
  + **NONE** – 로깅을 비활성화합니다.

느린 쿼리 데이터가 Amazon CloudWatch Logs에 표시되려면 다음 조건을 충족해야 합니다.
+ 느린 쿼리 로그를 포함하도록 CloudWatch Logs를 구성해야 합니다.
+ `slow_query_log`를 활성화해야 합니다.
+ `log_output`/를 로 설정해야 합니다.`FILE`
+ 쿼리는 `long_query_time`에 구성된 시간보다 오래 걸릴 수 있습니다.

느린 쿼리 및 일반 로그에 대한 자세한 내용은 MySQL 문서에서 다음 항목을 참조하십시오.
+ [느린 쿼리 로그](https://dev.mysql.com/doc/refman/8.0/en/slow-query-log.html)
+ [일반 쿼리 로그](https://dev.mysql.com/doc/refman/8.0/en/query-log.html)

## MySQL 감사 로그
<a name="USER_LogAccess.MySQL.Auditlog"></a>

감사 로그에 액세스하려면 DB 인스턴스가 `MARIADB_AUDIT_PLUGIN` 옵션과 함께 사용자 지정 옵션 그룹을 사용해야 합니다. 자세한 내용은 [MySQL에 대한 MariaDB 감사 플러그인 지원](Appendix.MySQL.Options.AuditPlugin.md) 섹션을 참조하세요.

## RDS for MySQL용 로그 교체 및 보존
<a name="USER_LogAccess.MySQL.LogFileSize.retention"></a>

로깅을 사용하는 경우, Amazon RDS는 테이블 로그를 순환하거나 로그 파일을 정기적으로 삭제합니다. 이러한 예방 조치를 취하면 데이터베이스 사용에 방해가 되거나 성능에 영향을 미치는 큰 로그 파일이 생성될 가능성을 줄일 수 있습니다. RDS for MySQL은 교체 및 삭제를 다음과 같이 처리합니다.
+ MySQL 느린 쿼리 로그, 오류 로그 및 일반 로그 파일 크기는 DB 인스턴스에 대해 할당된 스토리지 공간의 2% 이하로 제한됩니다. 이 임계값을 유지하기 위해 매시간 로그가 자동으로 교체됩니다. MySQL은 2주 이상 지난 로그 파일을 제거합니다. 오래된 로그 파일을 제거한 후 로그 파일의 총 크기가 임계값을 초과하는 경우에는 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 오래된 로그 파일부터 차례대로 삭제됩니다.
+ `FILE` 로깅을 사용하는 경우 로그 파일은 매시간 검사되며 2주 이상 지난 로그 파일은 삭제됩니다. 경우에 따라 삭제 후 나머지 로그 파일의 총 크기가 DB 인스턴스에 할당된 공간 중 2%의 임계값을 초과할 수 있습니다. 이 경우 로그 파일의 전체 크기가 임계값 이하로 작아질 때까지 가장 오래된 로그 파일부터 차례대로 삭제됩니다.
+ `TABLE` 로깅이 활성화된 경우 경우에 따라 로그 테이블이 24시간마다 순환됩니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 20% 이상을 차지하면 이 교체가 발생합니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다. DB 인스턴스에 대해 사용된 공간의 양이 DB 인스턴스의 할당된 스토리지 공간 중 90% 이상을 차지할 경우, 로그 순환을 위한 임계값은 줄어듭니다. 테이블 로그에서 사용되는 공간이 할당된 스토리지 공간 중 10% 이상을 차지하면 로그 테이블이 교체됩니다. 모든 로그를 합쳤을 때 크기가 10GB를 초과하는 경우에도 교체됩니다. 공간 확보를 위해 로그 테이블이 교체될 때 알림을 받기 위해 `low storage` 이벤트 범주를 구독할 수 있습니다. 자세한 내용은 [Amazon RDS 이벤트 알림 작업](USER_Events.md) 섹션을 참조하세요.

  로그 테이블이 교체되면 현재 로그 테이블이 먼저 백업 로그 테이블에 복사됩니다. 그런 다음 현재 로그 테이블의 항목이 제거됩니다. 백업 로그 테이블이 이미 존재할 경우, 현재 로그 테이블이 백업으로 복사되기 전에 백업 로그 테이블이 삭제됩니다. 필요하다면 백업 로그 테이블을 쿼리할 수 있습니다. `mysql.general_log` 테이블에 대한 백업 로그 테이블 이름은 `mysql.general_log_backup`으로 지정됩니다. `mysql.slow_log` 테이블에 대한 백업 로그 테이블 이름은 `mysql.slow_log_backup`으로 지정됩니다.

  `mysql.general_log` 절차를 호출하면 `mysql.rds_rotate_general_log` 테이블을 순환할 수 있습니다. `mysql.slow_log` 절차를 호출하면 `mysql.rds_rotate_slow_log` 테이블을 순환할 수 있습니다.

  데이터베이스 버전 업그레이드가 진행되는 동안 테이블 로그가 순환됩니다.

Amazon RDS 콘솔, Amazon RDS API, Amazon RDS CLI 또는 AWS SDK에서 로그를 사용하여 작업하려면 `log_output` 파라미터를 FILE로 설정합니다. MySQL 오류 로그와 같이, 이런 로그 파일은 매시간 순환됩니다. 이전 2주 동안 생성된 로그 파일은 유지됩니다. 보존 기간은 Amazon RDS와 Aurora 간에 다릅니다.

## 다시 실행 로그의 크기 제한
<a name="USER_LogAccess.MySQL.LogFileSize.RedoLogs"></a>

RDS for MySQL 버전 8.0.32 이하에서는 이 파라미터의 기본값이 256MB입니다. 이 양은 `innodb_log_file_size` 파라미터의 기본값(128MB)에 `innodb_log_files_in_group` 파라미터의 기본값(2)을 곱하여 산출됩니다. 자세한 내용은 [Amazon RDS for MySQL의 파라미터 구성 모범 사례, 1부: 성능과 관련된 파라미터](https://aws.amazon.com/blogs/database/best-practices-for-configuring-parameters-for-amazon-rds-for-mysql-part-1-parameters-related-to-performance/)를 참조하세요.

RDS for MySQL 버전 8.0.33 이상 마이너 버전에서 Amazon RDS는 `innodb_log_file_size` 파라미터 대신 `innodb_redo_log_capacity` 파라미터를 사용합니다. `innodb_redo_log_capacity` 파라미터의 Amazon RDS 기본값은 2GB입니다. 자세한 내용은 MySQL 설명서의 [MySQL 8.0.30 변경 사항에 관한 문서](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html)를 참조하세요.

MySQL 8.4부터 Amazon RDS는 기본적으로 `innodb_dedicated_server` 파라미터를 활성화합니다. `innodb_dedicated_server` 파라미터를 사용하면 데이터베이스 엔진이 `innodb_buffer_pool_size` 및 `innodb_redo_log_capacity` 파라미터를 계산합니다. 자세한 내용은 [MySQL 8.4에서 버퍼 풀 크기 및 다시 실행 로그 용량 구성](Appendix.MySQL.CommonDBATasks.Config.Size.8.4.md) 섹션을 참조하세요.

# Amazon CloudWatch Logs에 MySQL 로그 게시
<a name="USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs"></a>

Amazon CloudWatch Logs의 로그 그룹에 로그 데이터를 게시하도록 MySQL DB 인스턴스를 구성할 수 있습니다. CloudWatch Logs를 통해 로그 데이터에 대한 실시간 분석을 수행할 수 있고, CloudWatch를 사용하여 경보를 만들고 지표를 볼 수 있습니다. CloudWatch Logs를 사용하여 내구성이 뛰어난 스토리지에 로그 레코드를 저장할 수 있습니다.

Amazon RDS는 각 MySQL 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어 느린 쿼리 로그를 포함하도록 내보내기 함수를 구성하면 느린 쿼리 데이터가 `/aws/rds/instance/my_instance/slowquery` 로그 그룹의 느린 쿼리 로그 스트림에 저장됩니다.

오류 로그는 기본적으로 활성화됩니다. 다음 표에는 기타 MySQL 로그의 요구 사항이 요약되어 있습니다.


| 로그 | 요구 사항 | 
| --- | --- | 
|  감사 로그  |  DB 인스턴스는 `MARIADB_AUDIT_PLUGIN` 옵션과 함께 사용자 지정 옵션 그룹을 사용해야 합니다.  | 
|  일반 로그  |  DB 인스턴스는 파라미터 설정 `general_log = 1`과 함께 사용자 지정 파라미터 그룹을 사용하여 일반 로그를 활성화해야 합니다.  | 
|  느린 쿼리 로그  |  DB 인스턴스는 파라미터 설정 `slow_query_log = 1`과 함께 사용자 지정 파라미터 그룹을 사용하여 느린 쿼리 로그를 활성화해야 합니다.  | 
|  IAM 데이터베이스 인증 오류 로그  |  DB 인스턴스를 만들거나 수정하여 DB 인스턴스의 `iam-db-auth-error` 로그 유형을 사용 설정해야 합니다.  | 
|  로그 출력  |  DB 인스턴스는 파라미터 설정 `log_output = FILE`과 함께 사용자 지정 파라미터 그룹을 사용하여 로그를 파일 시스템에 쓰고 CloudWatch Logs에 게시해야 합니다.  | 

## 콘솔
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.CON"></a>

**콘솔을 사용하여 MySQL 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

## AWS CLI
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.CLI"></a>

 AWS CLI를 사용하여 MySQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또 다음 AWS CLI 명령을 호출해 MySQL 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

다음 옵션으로 AWS CLI 명령 중 하나를 실행합니다.
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

실행하는 AWS CLI 명령에 따라 다른 옵션이 필요할 수 있습니다.

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 MySQL DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `audit`, `error`, `general` 및 `slowquery`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
```

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 MySQL DB 인스턴스를 생성합니다. `--enable-cloudwatch-logs-exports` 값은 문자열의 JSON 배열입니다. 문자열은 `audit`, `error`, `general` 및 `slowquery`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' \
4.     --db-instance-class db.m4.large \
5.     --engine MySQL
```
Windows의 경우:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["audit","error","general","slowquery"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine MySQL
```

## RDS API
<a name="USER_LogAccess.MySQL.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 MySQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출해 MySQL 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 AWS CLI 명령에 따라 다른 파라미터가 필요할 수 있습니다.

# MySQL 로그 출력을 표로 보내기
<a name="Appendix.MySQL.CommonDBATasks.Logs"></a>

DB 파라미터 그룹을 만들고 `log_output` 서버 파라미터를 `TABLE`로 설정하여 일반 및 느린 쿼리 로그를 DB 인스턴스 상의 테이블로 전송할 수 있습니다. 그러면 일반 쿼리는 `mysql.general_log` 테이블에, 느린 쿼리는 `mysql.slow_log` 테이블에 로그가 기록됩니다. 이들 테이블을 쿼리하여 로그 정보에 액세스할 수 있습니다. 이 로깅을 활성화하면 데이터베이스에 기록되는 데이터의 양이 증가하여 성능이 저하될 수 있습니다.

일반 로그와 느린 쿼리 로그는 모두 기본적으로 비활성화됩니다. 테이블에 대한 로깅을 활성화하려면 `general_log` 및 `slow_query_log` 서버 파라미터도 `1`로 설정해야 합니다.

관련 파라미터를 `0`으로 설정하여 각 로깅 활동을 해제할 때까지 로그 테이블은 계속 커집니다. 흔히 대량의 데이터가 시간 경과에 따라 누적되어 할당된 스토리지 공간 중 상당한 비율을 사용할 수 있습니다. Amazon RDS에서는 로그 테이블을 자를 수 없지만 테이블의 콘텐츠를 이동할 수 있습니다. 테이블을 순환하면 그 내용이 백업 테이블에 저장된 다음 빈 로그 테이블이 새로 생성됩니다. 다음 명령줄 프로시저로 로그 테이블을 수동으로 순환시킬 수 있으며, 이때 명령 프롬프트는 `PROMPT>`로 표시됩니다.

```
PROMPT> CALL mysql.rds_rotate_slow_log;
PROMPT> CALL mysql.rds_rotate_general_log;
```

오래된 데이터를 완전히 제거하고 디스크 공간을 회수하려면 알맞은 프로시저를 두 번 연속으로 호출합니다.

# 단일 AZ 데이터베이스의 RDS for MySQL 이진 로깅 구성
<a name="USER_LogAccess.MySQL.BinaryFormat"></a>

*이진 로그*는 MySQL 서버 인스턴스의 데이터 수정에 대한 정보를 포함하는 로그 파일 세트입니다. 이진 로그에는 다음과 같은 정보가 포함되어 있습니다.
+ 테이블 생성 또는 행 수정과 같은 데이터베이스 변경 사항을 설명하는 이벤트
+ 데이터를 업데이트한 각 문의 기간에 대한 정보
+ 데이터를 업데이트할 수 있었지만 업데이트하지 않은 문에 대한 이벤트

이진 로그는 복제 중 전송된 문을 기록합니다. 일부 복구 작업에도 필요합니다. 자세한 내용은 MySQL 설명서의 [바이너리 로그](https://dev.mysql.com/doc/refman/8.0/en/binary-log.html) 단원을 참조하십시오.

자동 백업 기능은 MySQL에 대해 이진 로깅을 설정할지 아니면 해제할지를 결정합니다. 다음과 같은 옵션이 있습니다.

이진 로깅 설정  
백업 보존 기간을 0이 아닌 양수 값으로 설정합니다.

이진 로깅 해제  
백업 보존 기간을 0으로 설정합니다.

자세한 내용은 [자동 백업 활성화](USER_WorkingWithAutomatedBackups.Enabling.md) 단원을 참조하십시오.

Amazon RDS의 MySQL은 *행 기반*, *문 기반*, *혼합* 바이너리 로깅 형식을 지원합니다. 특정한 binlog 형식이 필요한 경우가 아니면 혼합하는 것이 좋습니다. 다양한 MySQL 이진 로그 형식에 대한 자세한 내용은 MySQL 설명서의 [Binary Logging Formats](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)을 참조하세요.

복제를 사용하려는 경우 바이너리 로깅 형식은 원본에 기록되고 복제 대상으로 전송되는 데이터 변경 내용의 레코드를 확인하므로 중요합니다. 복제와 관련된 다양한 바이너리 로깅 형식의 장/단점에 대한 자세한 내용은 MySQL 설명서의 [Advantages and Disadvantages of Statement-Based and Row-Based Replication](https://dev.mysql.com/doc/refman/8.0/en/replication-sbr-rbr.html)을 참조하십시오.

**중요**  
MySQL 8.0.34에서 MySQL이 `binlog_format` 파라미터를 더 이상 사용하지 않습니다. 이후 MySQL 버전에서 MySQL은 파라미터를 제거하고 행 기반 복제만 지원할 계획입니다. 따라서 새 MySQL 복제 설정에 행 기반 로깅을 사용하는 것이 좋습니다. 자세한 내용은 MySQL 설명서의 [binlog\$1format](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_binlog_format)을 참조하세요.  
MySQL 버전 8.0 및 8.4는 `binlog_format` 파라미터를 수락합니다. 이 파라미터를 사용하면 MySQL에서 사용 중단 경고가 표시됩니다. 향후 메이저 릴리스에서 MySQL로부터 `binlog_format` 파라미터가 제거될 예정입니다.  
명령문 기반 복제를 수행하면 원본 DB 인스턴스 와 읽기 전용 복제본 간에 불일치가 발생할 수 있습니다. 자세한 내용은 MySQL 설명서의 [Determination of Safe and Unsafe Statements in Binary Logging](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)을 참조하십시오.  
이진 로깅을 활성화하면 DB 인스턴스에 대한 평균 디스크 쓰기 I/O 작업 수가 증가합니다. `WriteIOPS``` CloudWatch 지표를 사용하여 IOPS 사용량을 모니터링할 수 있습니다.

**MySQL 이진 로깅 형식을 설정하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **파라미터 그룹**을 선택합니다.

1. 수정할 DB 인스턴스와 연결된 DB 파라미터 그룹을 선택합니다.

   기본 파라미터 그룹을 수정할 수 없습니다. DB 인스턴스 가 기본 파라미터 그룹을 사용하고 있는 경우 새 파라미터 그룹을 생성하여 DB 인스턴스 와 연결합니다.

   파라미터 그룹에 대한 자세한 정보는 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 단원을 참조하십시오.

1. **작업**에서 **편집**을 선택합니다.

1. `binlog_format` 파라미터를 선택한 이진 로깅 형식(`ROW`, `STATEMENT`, 또는 `MIXED`)으로 설정합니다.

   DB 인스턴스의 백업 보존 기간을 0으로 설정하여 이진 로깅을 끌 수 있지만, 이렇게 하면 일일 자동 백업이 비활성화됩니다. 자동 백업을 비활성화하면 `log_bin` 세션 변수가 꺼지거나 비활성화됩니다. 그러면 RDS for MySQL DB 인스턴스에 대한 이진 로깅이 비활성화되며, 이는 다시 `binlog_format` 세션 변수를 데이터베이스의 기본값인 `ROW` 값으로 재설정합니다. 백업을 비활성화하지 않는 것이 좋습니다. **백업 보존 기간** 설정에 대한 자세한 정보는 [DB 인스턴스에 대한 설정](USER_ModifyInstance.Settings.md) 섹션을 참조하세요.

1. **변경 내용 저장**을 선택하여 업데이트를 DB 파라미터 그룹에 저장합니다.

`binlog_format` 파라미터는 RDS for MySQL에서 동적이므로 DB 인스턴스를 재부팅하지 않고 변경 사항을 적용할 수 있습니다. (Aurora MySQL에서 이 파라미터는 정적입니. 자세한 내용은 [Aurora MySQL 바이너리 로깅 구성](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)을 참조하세요.)

**중요**  
DB 파라미터 그룹을 변경하면 해당 파라미터 그룹을 사용하는 모든 DB 인스턴스에 영향을 미칩니다. AWS 리전의 다양한 MySQL DB 인스턴스에 대해 서로 다른 바이너리 로깅 형식을 지정하려면 DB 인스턴스에서 서로 다른 DB 파라미터 그룹을 사용해야 합니다. 이러한 파라미터 그룹은 다양한 로깅 형식을 식별합니다. 각 DB 인스턴스에 적절한 DB 파라미터 그룹을 할당합니다.

# 다중 AZ DB 클러스터에 대한 MySQL 이진 로깅 구성
<a name="USER_Binlog.MultiAZ"></a>

Amazon RDS for MySQL 다중 AZ DB 클러스터의 이진 로깅은 복제, 시점 복구 및 감사를 지원하기 위해 모든 데이터베이스 변경 사항을 기록합니다. 다중 AZ DB 클러스터에서 이진 로그는 세컨더리 노드를 프라이머리 노드와 동기화하여 가용 영역 간 데이터 일관성을 보장하고 원활한 장애 조치를 활성화합니다.

이진 로깅을 최적화하기 위해 Amazon RDS는 이진 로그 트랜잭션 압축을 지원하므로 이진 로그에 대한 스토리지 요구 사항이 줄어들고 복제 효율성이 향상됩니다.

**Topics**
+ [다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축](#USER_Binlog.MultiAZ.compression)
+ [다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축 구성](#USER_Binlog.MultiAZ.configuring)

## 다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축
<a name="USER_Binlog.MultiAZ.compression"></a>

이진 로그 트랜잭션 압축은 zstd 알고리즘을 사용하여 이진 로그에 저장된 트랜잭션 데이터의 크기를 줄입니다. 활성화되면 MySQL 데이터베이스 엔진은 트랜잭션 페이로드를 단일 이벤트로 압축하여 I/O 및 스토리지 오버헤드를 최소화합니다. 이 기능은 데이터베이스 성능을 개선하고, 이진 로그 크기를 줄이며, 다중 AZ DB 클러스터에서 로그를 관리하고 복제하기 위한 리소스 사용을 최적화합니다.

Amazon RDS는 다음 파라미터를 통해 RDS for MySQL 다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축을 제공합니다.
+ `binlog_transaction_compression` - 활성화되면(`1`) 데이터베이스 엔진은 트랜잭션 페이로드를 압축하여 단일 이벤트로 이진 로그에 기록합니다. 이렇게 하면 스토리지 사용량과 I/O 오버헤드가 줄어듭니다. 파라미터는 기본적으로 비활성화되어 있습니다.
+ `binlog_transaction_compression_level_zstd` - 이진 로그 트랜잭션에 대한 zstd 압축 수준을 구성합니다. 값이 높을수록 압축률이 증가하여 스토리지 요구 사항은 더 줄어들지만 압축을 위한 CPU 및 메모리 사용량은 증가합니다. 기본값은 3이며 범위는 1\$122입니다.

이러한 파라미터를 사용하면 워크로드 특성 및 리소스 가용성에 따라 이진 로그 압축을 미세 조정할 수 있습니다. 자세한 내용은 MySQL 설명서에서 [Binary Log Transaction Compression](https://dev.mysql.com/doc/refman/8.4/en/binary-log-transaction-compression.html)을 참조하세요.

이진 로그 트랜잭션 압축의 주요 이점은 다음과 같습니다.
+ 압축은 특히 트랜잭션이 크거나 쓰기 볼륨이 많은 워크로드의 경우 이진 로그의 크기를 줄입니다.
+ 이진 로그가 작을수록 네트워크 및 I/O 오버헤드가 줄어들어 복제 성능이 향상됩니다.
+ `binlog_transaction_compression_level_zstd` 파라미터는 압축률과 리소스 소비 간의 균형을 제어합니다.

## 다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축 구성
<a name="USER_Binlog.MultiAZ.configuring"></a>

RDS for MySQL 다중 AZ DB 클러스터에 대한 이진 로그 트랜잭션 압축을 구성하려면 워크로드 요구 사항에 맞게 관련 클러스터 파라미터 설정을 수정합니다.

### 콘솔
<a name="USER_Binlog.MultiAZ.configuring-console"></a>

**이진 로그 트랜잭션 압축을 활성화하는 방법**

1. DB 클러스터 파라미터 그룹을 수정하여 `binlog_transaction_compression` 파라미터를 `1`로 설정합니다.

1. (선택 사항) 워크로드 요구 사항 및 리소스 가용성에 따라 `binlog_transaction_compression_level_zstd` 파라미터 값을 조정합니다.

자세한 내용은 [ DB 클러스터 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.ModifyingCluster.md) 섹션을 참조하세요.

### AWS CLI
<a name="USER_Binlog.MultiAZ.configuring-cli"></a>

AWS CLI를 사용하여 이진 로그 트랜잭션 압축을 구성하려면 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) 명령을 사용합니다.

**Example**  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-cluster-parameter-group \
  --db-cluster-parameter-group-name your-cluster-parameter-group \
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```
Windows의 경우:  

```
aws rds modify-db-cluster-parameter-group ^
  --db-cluster-parameter-group-name your-cluster-parameter-group ^
  --parameters "ParameterName=binlog_transaction_compression,ParameterValue=1,ApplyMethod=pending-reboot"
```

### RDS API
<a name="USER_Binlog.MultiAZ.configuring-api"></a>

Amazon RDS API를 사용하여 이진 로그 트랜잭션 압축을 구성하려면 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) 작업을 사용합니다.

# MySQL 이진 로그 액세스
<a name="USER_LogAccess.MySQL.Binarylog"></a>

mysqlbinlog 유틸리티를 사용하여 RDS for MySQL DB 인스턴스에서 이진 로그를 다운로드하거나 스트리밍할 수 있습니다. 이진 로그를 로컬 컴퓨터로 다운로드하면 mysql 유틸리티를 사용하여 로그를 재생하는 것과 같은 작업을 수행할 수 있습니다. mysqlbinlog 유틸리티 사용에 대한 자세한 내용은 MySQL 설명서의 [mysqlbinlog를 사용하여 이진 로그 파일 백업](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog-backup.html)을 참조하세요.

Amazon RDS 인스턴스에 대해 mysqlbinlog 유틸리티를 실행하려면 다음 옵션을 사용합니다.
+ `--read-from-remote-server` - 필수입니다.
+ `--host` – 인스턴스의 엔드포인트에서 DNS 이름.
+ `--port` – 인스턴스에서 사용되는 포트.
+ `--user` - `REPLICATION SLAVE` 권한이 부여된 MySQL 사용자.
+ `--password` – MySQL 사용자의 암호. 또는 유틸리티에서 암호 입력을 요구하는 메시지가 표시되도록 암호 값을 생략.
+ `--raw` - 파일을 이진 형식으로 다운로드합니다.
+ `--result-file` - 원시 출력을 수신할 로컬 파일.
+ `--stop-never` - 이진 로그 파일을 스트리밍합니다.
+ `--verbose` - `ROW` binlog 형식을 사용할 경우 이 옵션을 포함하면 행 이벤트를 유사 SQL 문으로 볼 수 있습니다. `--verbose` 옵션에 대한 자세한 내용은 MySQL 설명서의 [mysqlbinlog 행 이벤트 표시](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog-row-events.html)를 참조하세요.
+ 하나 이상의 이진 로그 파일의 이름을 지정합니다. 사용 가능한 로그의 목록을 획득하려면 SQL 명령 `SHOW BINARY LOGS`를 사용합니다.

mysqlbinlog 옵션에 대한 자세한 내용은 MySQL 설명서의 [mysqlbinlog - 이진 로그 파일 처리용 유틸리티](https://dev.mysql.com/doc/refman/8.0/en/mysqlbinlog.html)를 참조하세요.

다음 예시에서는 mysqlbinlog 유틸리티를 사용하는 방법을 보여줍니다.

대상 LinuxmacOS, 또는Unix:

```
mysqlbinlog \
    --read-from-remote-server \
    --host=MySQLInstance1.cg034hpkmmjt.region.rds.amazonaws.com \
    --port=3306  \
    --user ReplUser \
    --password \
    --raw \
    --verbose \
    --result-file=/tmp/ \
    binlog.00098
```

Windows의 경우:

```
mysqlbinlog ^
    --read-from-remote-server ^
    --host=MySQLInstance1.cg034hpkmmjt.region.rds.amazonaws.com ^
    --port=3306  ^
    --user ReplUser ^
    --password ^
    --raw ^
    --verbose ^
    --result-file=/tmp/ ^
    binlog.00098
```

mysqlbinlog 유틸리티가 바이너리 로그에 액세스할 수 있도록 DB 인스턴스에서 바이너리 로그를 계속 사용할 수 있어야 합니다. 가용성을 보장하기 위해 [mysql.rds\$1set\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_set_configuration) 저장 프로시저를 사용하고 로그를 다운로드할 수 있는 충분한 시간을 지정합니다. 이 구성이 설정되지 않은 경우 Amazon RDS가 이진 로그를 가능한 한 빨리 제거하므로 mysqlbinlog 유틸리티에서 검색하는 바이너리 로그에 간극이 발생합니다.

다음 예제에서는 보존 기간을 1일로 설정합니다.

```
call mysql.rds_set_configuration('binlog retention hours', 24);
```

현재 설정을 표시하려면 [mysql.rds\$1show\$1configuration](mysql-stored-proc-configuring.md#mysql_rds_show_configuration) 저장 프로시저를 사용합니다.

```
call mysql.rds_show_configuration;
```

# Amazon RDS for Oracle 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.Oracle"></a>

Amazon RDS 콘솔 또는 API를 사용하여 Oracle 알림 로그, 감사 파일 및 추적 파일에 액세스할 수 있습니다. 파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 단원을 참조하십시오.

제공되는 Oracle 감사 파일은 표준 Oracle 감사 파일입니다. Amazon RDS는 Oracle FGA(세밀한 감사) 기능을 지원합니다. 하지만 로그 액세스는 `SYS.FGA_LOG$` 테이블에 저장되고 `DBA_FGA_AUDIT_TRAIL` 보기를 통해 액세스 가능한 FGA 이벤트에 대한 액세스를 제공하지 않습니다.

DB 인스턴스에 사용 가능한 Oracle 로그 파일을 나열하는 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) API 작업에서는 `MaxRecords` 파라미터를 무시하고 최대 1,000개의 레코드를 반환합니다. 호출은 `LastWritten`을(를) 밀리초 단위의 POSIX 날짜로 반환합니다.

**Topics**
+ [보존 일정](#USER_LogAccess.Concepts.Oracle.Retention)
+ [Oracle 추적 파일을 사용한 작업](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)
+ [Amazon CloudWatch Logs에 Oracle 로그 게시](#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [알림 로그 및 Listener 로그에 액세스하기](#USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog)

## 보존 일정
<a name="USER_LogAccess.Concepts.Oracle.Retention"></a>

로그 파일이 매우 커질 경우 Oracle 데이터베이스 엔진이 커진 파일들을 순환시킬 수 있습니다. 감사 또는 추적 파일을 보존하려면 해당 파일을 다운로드해야 합니다. 파일을 로컬에 저장하면 Amazon RDS 스토리지 비용이 절감되고 데이터에 사용할 수 있는 공간이 늘어납니다.

다음 표에서는 Amazon RDS의 Oracle 알림 로그, 감사 파일 및 추적 파일에 대한 보존 일정을 보여줍니다.


****  

| 로그 유형 | 보존 일정 | 
| --- | --- | 
|  알림 로그  |   텍스트 알림 로그는 매일 교체되며 Amazon RDS에서 30일간 보존합니다. XML 알림 로그는 7일 이상 보관됩니다. `ALERTLOG` 보기를 사용하여 이 로그에 액세스할 수 있습니다.  | 
|  감사 파일  |   감사 파일의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 감사 파일을 삭제할 수 있습니다.  | 
|  추적 파일  |  추적 파일의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 추적 파일을 삭제할 수 있습니다.  | 
|  리스너 로그  |   리스너 로그의 기본 보존 기간은 7일입니다. Amazon RDS는 7일이 경과한 리스너 로그를 삭제할 수 있습니다.  | 

**참고**  
감사 파일과 추적 파일의 보존 구성은 동일합니다.

## Oracle 추적 파일을 사용한 작업
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles"></a>

추적 파일을 만들고 새로 고치고 액세스하고 삭제하기 위한 Amazon RDS 절차의 설명을 확인할 수 있습니다.

**Topics**
+ [파일 나열](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest)
+ [추적 파일 생성 및 세션 추적](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating)
+ [추적 파일 검색](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving)
+ [추적 파일 제거](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging)

### 파일 나열
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest"></a>

`background_dump_dest` 경로 내에 있는 임의의 파일에 대한 액세스를 허용하기 위해 두 절차 중 하나를 사용할 수 있습니다. 첫 번째 절차는 현재 `background_dump_dest`에 있는 모든 파일의 목록을 포함한 보기를 새로 고칩니다.

```
1. EXEC rdsadmin.manage_tracefiles.refresh_tracefile_listing;
```

보기가 새로 고쳐지면 다음 보기를 쿼리하여 결과에 액세스합니다.

```
1. SELECT * FROM rdsadmin.tracefile_listing;
```

이전 프로세스를 대체하는 프로세스는 `FROM table`을 사용하여 테이블과 같은 형식으로 되어 있는 관계형 데이터가 아닌 데이터를 스트리밍하여 데이터베이스 디렉터리 내용을 나열하는 것입니다.

```
1. SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP'));
```

다음 쿼리는 로그 파일의 텍스트를 표시합니다.

```
1. SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_dbname.log.date'));
```

읽기 전용 복제본에서 `V$DATABASE.DB_UNIQUE_NAME`을 쿼리하여 BDUMP 디렉터리의 이름을 가져옵니다. 고유 이름이 `DATABASE_B`인 경우 BDUMP 디렉터리는 `BDUMP_B`입니다. 다음 예제에서는 복제본에서 BDUMP 이름을 쿼리한 다음 이 이름을 사용하여 `alert_DATABASE.log.2020-06-23`의 콘텐츠를 쿼리합니다.

```
1. SELECT 'BDUMP' || (SELECT regexp_replace(DB_UNIQUE_NAME,'.*(_[A-Z])', '\1') FROM V$DATABASE) AS BDUMP_VARIABLE FROM DUAL;
2. 
3. BDUMP_VARIABLE
4. --------------
5. BDUMP_B
6. 
7. SELECT TEXT FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP_B','alert_DATABASE.log.2020-06-23'));
```

### 추적 파일 생성 및 세션 추적
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Generating"></a>

`ALTER SESSION`에 대한 제한이 없으므로, Oracle에서 추적 파일을 생성하는 다양한 표준 메서드를 Amazon RDS DB 인스턴스에도 그대로 사용할 수 있습니다. 더 높은 액세스 권한이 필요한 추적 파일에 대해서는 다음 프로시저가 제공됩니다.


****  

|  Oracle 메서드  |  Amazon RDS 메서드 | 
| --- | --- | 
|  `oradebug hanganalyze 3 `  |  `EXEC rdsadmin.manage_tracefiles.hanganalyze; `  | 
|  `oradebug dump systemstate 266 `  |  `EXEC rdsadmin.manage_tracefiles.dump_systemstate;`  | 

여러 표준 메서드를 사용하여 Amazon RDS의 Oracle DB 인스턴스에 연결된 개별 세션을 추적할 수 있습니다. 세션 추적 기능을 활성화하기 위해 `DBMS_SESSION` 및 `DBMS_MONITOR` 등 Oracle에서 제공한 PL/SQL 패키지의 하위 프로그램을 실행할 수 있습니다. 자세한 내용은 Oracle 문서의 [세션 추적 기능 활성화](https://docs.oracle.com/database/121/TGSQL/tgsql_trace.htm#GUID-F872D6F9-E015-481F-80F6-8A7036A6AD29) 단원을 참조하십시오.

### 추적 파일 검색
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Retrieving"></a>

Amazon RDS에서 관리되는 외부 테이블의 표준 SQL 쿼리를 사용하여 `background_dump_dest`에 있는 추적 파일을 검색할 수 있습니다. 이 메서드를 사용하려면 특정 추적 파일에 대한 이 테이블의 위치를 설정하는 프로시저를 실행해야 합니다.

예를 들어 이전에 언급한 `rdsadmin.tracefile_listing` 보기를 사용하여 시스템 상의 모든 추적 파일을 나열할 수 있습니다. 그러면 다음 프로시저를 사용하여 의도한 추적 파일을 가리키도록 `tracefile_table` 보기를 설정할 수 있습니다.

```
1. EXEC rdsadmin.manage_tracefiles.set_tracefile_table_location('CUST01_ora_3260_SYSTEMSTATE.trc');
```

다음 예제에서는 제공된 파일로 위치가 설정된 현재 스키마에서 외부 테이블을 만듭니다. SQL 쿼리를 사용하여 콘텐츠를 로컬 파일로 가져올 수 있습니다.

```
1. SPOOL /tmp/tracefile.txt
2. SELECT * FROM tracefile_table;
3. SPOOL OFF;
```

### 추적 파일 제거
<a name="USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.Purging"></a>

추적 파일이 누적되면서 디스크 공간을 낭비할 수 있습니다. Amazon RDS는 기본적으로 7일 이상 지난 추적 파일 및 덤프 파일을 제거합니다. `show_configuration` 절차를 사용하여 추적 파일 보존 기간을 보고 설정할 수 있습니다. 구성 결과를 볼 수 있도록 `SET SERVEROUTPUT ON` 명령을 실행해야 합니다.

다음 예제에서는 현재 추적 파일 보존 기간을 표시한 다음, 새 추적 파일 보존 기간을 설정합니다.

```
 1. # Show the current tracefile retention
 2. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
 3. NAME:tracefile retention
 4. VALUE:10080
 5. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
 6. 		
 7. # Set the tracefile retention to 24 hours:
 8. SQL> EXEC rdsadmin.rdsadmin_util.set_configuration('tracefile retention',1440);
 9. SQL> commit;
10. 
11. #show the new tracefile retention
12. SQL> EXEC rdsadmin.rdsadmin_util.show_configuration;
13. NAME:tracefile retention
14. VALUE:1440
15. DESCRIPTION:tracefile expiration specifies the duration in minutes before tracefiles in bdump are automatically deleted.
```

주기적인 제거 프로세스 외에, `background_dump_dest`에서 파일을 수동으로 제거할 수 있습니다. 다음 예제에서는 5분 이상 지난 모든 파일을 제거하는 방법을 보여줍니다.

```
EXEC rdsadmin.manage_tracefiles.purge_tracefiles(5);
```

(.trc와 같은 파일 확장명을 포함하지 않고) 특정 패턴과 일치하는 모든 파일을 제거할 수도 있습니다. 다음 예제에서는 "`SCHPOC1_ora_5935`"로 시작하는 모든 파일을 제거하는 방법을 보여줍니다.

```
1. EXEC rdsadmin.manage_tracefiles.purge_tracefiles('SCHPOC1_ora_5935');
```

## Amazon CloudWatch Logs에 Oracle 로그 게시
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs"></a>

Amazon CloudWatch Logs의 로그 그룹에 로그 데이터를 게시하도록 RDS for Oracle DB 인스턴스를 구성할 수 있습니다. CloudWatch Logs를 통해 로그 데이터에 대한 분석을 수행할 수 있고, CloudWatch를 사용하여 경보를 만들고 측정치를 볼 수 있습니다. CloudWatch Logs를 사용하여 내구성이 뛰어난 스토리지에 로그 레코드를 저장할 수 있습니다.

Amazon RDS는 각 Oracle 데이터베이스 로그를 로그 그룹에 개별적인 데이터베이스 스트림으로 게시합니다. 예를 들어 감사 로그를 포함하도록 내보내기 함수를 구성하면 감사 데이터가 `/aws/rds/instance/my_instance/audit` 로그 그룹의 감사 로그 스트림에 저장됩니다. 다음 표에는 Amazon CloudWatch Logs에 로그를 게시하기 위한 RDS for Oracle의 요구 사항이 요약되어 있습니다.


| 로그 이름 | 요구 사항 | 기본값 | 
| --- | --- | --- | 
|  알림 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 
|  추적 로그  |  `trace_enabled` 파라미터를 `TRUE`로 설정하거나 기본값으로 그대로 두세요.  |  `TRUE`  | 
|  감사 로그  |  `audit_trail` 파라미터를 다음 허용값 중 하나로 설정합니다. <pre>{ none | os | db [, extended] | xml [, extended] }</pre>  |  `none`  | 
|  리스너 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 
|  Oracle Management Agent 로그  |  없음. 이 로그를 비활성화할 수 없습니다.  |  활성화됨  | 

이 Oracle Management Agent 로그는 다음 테이블에 나와 있는 로그 그룹으로 구성됩니다.


****  

| 로그 이름 | CloudWatch 로그 그룹 | 
| --- | --- | 
| emctl.log | oemagent-emctl | 
| emdctlj.log | oemagent-emdctlj | 
| gcagent.log | oemagent-gcagent | 
| gcagent\$1errors.log | oemagent-gcagent-errors | 
| emagent.nohup | oemagent-emagent-nohup | 
| secure.log | oemagent-secure | 

자세한 내용은 Oracle 설명서에서 [Management Agent 로그 및 추적 파일 찾기](https://docs.oracle.com/en/enterprise-manager/cloud-control/enterprise-manager-cloud-control/13.4/emadm/locating-management-agent-log-and-trace-files1.html#GUID-9C710D78-6AA4-42E4-83CD-47B5FF4892DF)를 참조하세요.

### 콘솔
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.console"></a>

**AWS Management Console에서 Oracle DB 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

1. **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.CLI"></a>

Oracle 로그를 게시하기 위해 다음 파라미터와 함께 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 사용할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 명령을 사용하여 Oracle 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

**Example**  
다음 예에서는 CloudWatch Logs 게시가 활성화된 Oracle DB 인스턴스를 생성합니다. `--cloudwatch-logs-export-configuration` 값은 문자열의 JSON 배열입니다. 문자열은 `alert`, `audit`, `listener` 및 `trace`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '["trace","audit","alert","listener","oemagent"]' \
    --db-instance-class db.m5.large \
    --allocated-storage 20 \
    --engine oracle-ee \
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 \
    --license-model bring-your-own-license \
    --master-username myadmin \
    --manage-master-user-password
```
Windows의 경우:  

```
aws rds create-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration trace alert audit listener oemagent ^
    --db-instance-class db.m5.large ^
    --allocated-storage 20 ^
    --engine oracle-ee ^
    --engine-version 19.0.0.0.ru-2024-04.rur-2024-04.r1 ^
    --license-model bring-your-own-license ^
    --master-username myadmin ^
    --manage-master-user-password
```

**Example**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 Oracle DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `alert`, `audit`, `listener` 및 `trace`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"EnableLogTypes":["trace","alert","audit","listener","oemagent"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration EnableLogTypes=\"trace\",\"alert\",\"audit\",\"listener\",\"oemagent\"
```

**Example**  
다음 예에서는 CloudWatch Logs에 감사 및 리스너 로그 파일 게시를 비활성화하도록 기존 Oracle DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `DisableLogTypes`이며, 해당 값은 `alert`, `audit`, `listener` 및 `trace`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit","listener"]}'
```
Windows의 경우:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --cloudwatch-logs-export-configuration DisableLogTypes=\"audit\",\"listener\"
```

### RDS API
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 Oracle DB 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출하여 Oracle 로그를 게시할 수도 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 RDS 명령에 따라 다른 파라미터가 필요할 수 있습니다.

## 알림 로그 및 Listener 로그에 액세스하기
<a name="USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog"></a>

Amazon RDS 콘솔을 사용하여 알림 로그를 볼 수 있습니다. 다음 SQL 문도 사용할 수 있습니다.

```
1. SELECT message_text FROM alertlog;
```

Amazon CloudWatch Logs를 사용하여 Listener 로그에 액세스하세요.

**참고**  
Oracle은 알림 및 리스너 로그가 Amazon RDS 보기에서 이들 로그를 사용할 수 없게 되는 시점인 10MB를 초과할 때 이들 로그를 순환시킵니다.

# RDS for PostgreSQL 데이터베이스 로그 파일
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

다음 유형의 로그 파일을 모니터링할 수 있습니다.
+ PostgreSQL 로그
+ 업그레이드 로그
+ IAM 데이터베이스 인증 오류 로그
**참고**  
IAM 데이터베이스 인증 오류 로그를 활성화하려면 먼저 RDS for PostgreSQL DB 인스턴스에 IAM 데이터베이스 인증을 활성화해야 합니다. IAM 데이터베이스 인증 활성화에 대한 자세한 내용은 [IAM 데이터베이스 인증의 활성화 및 비활성화](UsingWithRDS.IAMDBAuth.Enabling.md) 섹션을 참조하세요.

RDS for PostgreSQL은 기본 PostgreSQL 로그 파일에 데이터베이스 활동을 로깅합니다. 온프레미스 PostgreSQL DB 인스턴스의 경우 이러한 메시지가 `log/postgresql.log`에 로컬로 저장됩니다. RDS for PostgreSQL DB 인스턴스의 경우 Amazon RDS 인스턴스에서 로그 파일을 사용할 수 있습니다. 또한 이러한 로그는 AWS Management Console을 통해 액세스할 수 있으며, 여기에서 해당 로그를 보거나 다운로드할 수 있습니다. 기본 로깅 수준에서는 로그인 실패, 치명적인 서버 오류, 교착 상태 및 쿼리 실패를 캡처합니다.

파일 기반 데이터베이스 로그 보기, 다운로드 및 조사 방법에 대한 자세한 내용은 [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md) 섹션을 참조하세요. PostgreSQL 로그에 대한 자세한 내용은 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 1](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)(RDS 및 Aurora PostgreSQL 로그로 작업하기: 파트 1) 및 [Working with Amazon RDS and Aurora PostgreSQL logs: Part 2](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-2/)(RDS 및 Aurora PostgreSQL 로그로 작업하기: 파트 2)를 참조하세요.

이 주제에서 설명하는 표준 PostgreSQL 로그 외에 RDS for PostgreSQL은 PostgreSQL Auidt 확장(`pgAudit`)도 지원합니다. 대부분의 규제 대상 산업 및 정부 기관은 법적 요구 사항을 준수하기 위해 데이터 변경에 대한 감사 로그 또는 감사 추적을 보존해야 합니다. pgAudit 설치 및 사용에 대한 자세한 내용은 [pgAudit를 사용하여 데이터베이스 활동 로깅](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md) 섹션을 참조하세요.

**Topics**
+ [RDS for PostgreSQL에서의 로깅을 위한 파라미터](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [Amazon CloudWatch Logs에 PostgreSQL 로그 게시](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# RDS for PostgreSQL에서의 로깅을 위한 파라미터
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

다양한 파라미터를 수정하여 RDS for PostgreSQL DB 인스턴스의 로깅 동작을 사용자 지정할 수 있습니다. 다음 표에서는 로그 저장 기간, 로그 교체 시기, 로그를 CSV(쉼표로 구분된 값) 형식으로 출력할지 여부 등 다양한 파라미터를 확인할 수 있습니다. 다른 설정에서 STDERR로 전송된 텍스트 출력도 찾을 수 있습니다. 수정 가능한 파라미터의 설정을 변경하려면 에 대한 사용자 지정 DB 파라미터 그룹을 사용하세요. RDS for PostgreSQL 인스턴스 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md). 섹션을 참조하세요.


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
| log\$1destination | stderr | 로그에 대한 출력 형식을 설정합니다. 기본값은 `stderr`이지만 설정에 `csvlog`를 추가하여 CSV(쉼표로 구분된 값)를 지정할 수도 있습니다. 자세한 내용은 [로그 대상 설정(`stderr`, `csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format) 섹션을 참조하세요. | 
| log\$1filename |  postgresql.log.%Y-%m-%d-%H  | 로그 파일 이름의 패턴을 지정합니다. 이 파라미터는 기본값 외에도 `postgresql.log.%Y-%m-%d` 및 `postgresql.log.%Y-%m-%d-%H%M` 파일 이름 패턴을 지원합니다. | 
| log\$1line\$1prefix | %t:%r:%u@%d:[%p]: | 시간(%t), 원격 호스트(%r), 사용자(%u), 데이터베이스(%d) 및 프로세스 ID(%p)를 기록하기 위해 `stderr`에 기록되는 각 로그 줄의 접두사를 정의합니다. | 
| log\$1rotation\$1age | 60 | 몇 분 후에 로그 파일이 자동으로 교체됩니다. 이 값을 1분에서 1,440분 사이의 값으로 변경할 수 있습니다. 자세한 내용은 [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation) 섹션을 참조하세요. | 
| log\$1rotation\$1size | – | 로그 교체가 자동으로 이루어질 때의 크기(kB)입니다. 로그는 `log_rotation_age` 파라미터에 따라 교체되므로 기본적으로 이 파라미터는 사용되지 않습니다. 자세한 내용은 [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)를 참조하세요. | 
| rds.log\$1retention\$1period | 4320 | 지정된 시간(분)보다 오래된 PostgreSQL 로그가 삭제됩니다. 기본값인 4,320분으로 지정하면 3일이 지난 로그 파일이 삭제됩니다. 자세한 내용은 [로그 보존 기간 설정](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period) 섹션을 참조하세요. | 

애플리케이션 문제를 식별하기 위해 로그에서 쿼리 실패, 로그인 실패, 교착 상태 및 치명적인 서버 오류를 찾아볼 수 있습니다. 예를 들어, 레거시 애플리케이션을 Oracle에서 Amazon RDS PostgreSQL로 변환했지만 일부 쿼리가 올바르게 변환되지 않았다고 가정합시다. 이러한 잘못된 형식의 쿼리는 오류 메시지를 생성하고, 로그에서 오류 메시지를 찾아 문제를 식별할 수 있습니다. 쿼리 로깅에 대한 자세한 내용은 [ RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md) 섹션을 참조하세요.

다음 주제에서 PostgreSQL 로깅의 기본 세부 정보를 제어하는 다양한 파라미터에 관한 정보를 찾을 수 있습니다.

**Topics**
+ [로그 보존 기간 설정](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)
+ [로그 파일 회전 설정](#USER_LogAccess.Concepts.PostgreSQL.log_rotation)
+ [로그 대상 설정(`stderr`, `csvlog`)](#USER_LogAccess.Concepts.PostgreSQL.Log_Format)
+ [log\$1line\$1prefix 파라미터 이해하기](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix)

## 로그 보존 기간 설정
<a name="USER_LogAccess.Concepts.PostgreSQL.log_retention_period"></a>

`rds.log_retention_period` 파라미터는 RDS for PostgreSQL DB 인스턴스가 로그 파일을 보관하는 기간을 지정합니다. 기본 설정은 3일(4,320분)이지만 1일(1,440분)에서 7일(10,080분) 사이로 이 값을 설정할 수 있습니다. RDS for PostgreSQL DB 인스턴스에 일정 기간 동안 로그 파일을 보관할 수 있는 충분한 스토리지가 있는지 확인하세요.

로그를 정기적으로 Amazon CloudWatch Logs에 게시하여 로그가 에서 제거된 후에도 시스템 데이터를 보고 분석할 수 있도록 하는 것이 좋습니다. RDS for PostgreSQL DB 인스턴스  자세한 내용은 [Amazon CloudWatch Logs에 PostgreSQL 로그 게시](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs) 섹션을 참조하세요. 

## 로그 파일 회전 설정
<a name="USER_LogAccess.Concepts.PostgreSQL.log_rotation"></a>

Amazon RDS는 기본적으로 매시간 새 로그 파일을 생성합니다. 타이밍은 `log_rotation_age` 파라미터로 제어됩니다. 이 파라미터의 기본값은 60(분)이지만 1분에서 24시간(1,440분) 사이로 설정할 수 있습니다. 교체 시간이 되면 새 로그 파일이 생성됩니다. 파일의 이름은 `log_filename` 파라미터로 지정된 패턴에 따라 결정됩니다.

로그 파일은 `log_rotation_size` 파라미터에 지정된 대로 크기에 따라 교체될 수도 있습니다. 이 파라미터는 로그가 지정된 크기(KB)에 도달하면 교체되도록 지정합니다. RDS for PostgreSQL DB 인스턴스의 경우 `log_rotation_size`가 설정되지 않습니다. 즉, 지정된 값이 없습니다. 그러나 이 파라미터는 0\$12,097,151KB(킬로바이트) 사이로 설정할 수 있습니다.  

로그 파일 이름은 `log_filename` 파라미터에 지정된 파일 이름 패턴을 기반으로 합니다. 이 파라미터에 사용할 수 있는 설정은 다음과 같습니다.
+ `postgresql.log.%Y-%m-%d` - 로그 파일 이름의 기본 형식입니다. 로그 파일 이름에 년, 월, 일이 포함됩니다.
+ `postgresql.log.%Y-%m-%d-%H` - 로그 파일 이름 형식에 시간이 포함됩니다.

자세한 내용은 PostgreSQL 설명서의 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-AGE) 및 [https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-ROTATION-SIZE) 섹션을 참조하세요.

## 로그 대상 설정(`stderr`, `csvlog`)
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format"></a>

기본적으로 Amazon RDS PostgreSQL은 표준 오류(stderr) 형식으로 로그를 생성합니다. 이 형식이 `log_destination` 파라미터에 대한 기본 설정입니다. 각 메시지에는 `log_line_prefix` 파라미터에 지정된 패턴을 사용하여 접두사가 붙습니다. 자세한 내용은 [log\$1line\$1prefix 파라미터 이해하기](#USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix) 섹션을 참조하세요.

RDS for PostgreSQL도 로그를 `csvlog` 형식으로 생성할 수 있습니다. `csvlog`는 로그 데이터를 쉼표로 구분된 값(CSV) 데이터로 분석하는 데 유용합니다. 예를 들어 외부 테이블로 로그를 사용하기 위해 `log_fdw` 확장을 사용한다고 가정하겠습니다. `stderr` 로그 파일에 만들어진 외부 테이블에는 로그 이벤트 데이터가 있는 하나의 열이 포함되어 있습니다. `log_destination` 파라미터에 `csvlog`를 추가하면 외부 테이블의 여러 열에 대한 구분이 있는 CSV 형식의 로그 파일을 얻게 됩니다. 이제 로그를 더 쉽게 정렬하고 분석할 수 있습니다. `log_fdw`를 `csvlog`와 함께 사용하는 방법을 알아보려면 [log\$1fdw 확장으로 SQL을 사용하여 DB 로그에 액세스](CHAP_PostgreSQL.Extensions.log_fdw.md) 섹션을 참조하세요.

이 파라미터에 `csvlog`를 지정하는 경우 `stderr` 및 `csvlog` 파일이 모두 생성된다는 점에 유의하세요. `rds.log_retention_period` 및 로그 스토리지와 회전율에 영향을 주는 다른 설정을 고려하여 로그에서 사용하는 스토리지를 모니터링해야 합니다. `stderr` 및 `csvlog`를 사용하는 경우 로그에서 소비하는 스토리지가 두 배 이상 늘어납니다.

`log_destination`에 `csvlog`를 추가하고 `stderr`로만 되돌리려면 파라미터를 재설정해야 합니다. 이렇게 하려면 Amazon RDS 콘솔을 연 다음 인스턴스에 대한 사용자 지정 DB 파라미터 그룹을 엽니다. `log_destination` 파라미터를 선택하고 **파라미터 편집**을 선택한 다음 **재설정**을 선택합니다.

로깅 구성에 대한 자세한 내용은 [Amazon RDS 및 Aurora PostgreSQL 로그 작업: 1부](https://aws.amazon.com/blogs/database/working-with-rds-and-aurora-postgresql-logs-part-1/)를 참조하세요.

## log\$1line\$1prefix 파라미터 이해하기
<a name="USER_LogAccess.Concepts.PostgreSQL.Log_Format.log-line-prefix"></a>

`stderr` 로그 형식은 각 로그 메시지에 `log_line_prefix` 파라미터에 지정된 세부 정보를 접두사로 지정합니다. 기본값은 다음과 같습니다.

```
%t:%r:%u@%d:[%p]:t
```

Aurora PostgreSQL 버전 16부터는 다음을 선택할 수도 있습니다.

```
%m:%r:%u@%d:[%p]:%l:%e:%s:%v:%x:%c:%q%a
```

stderr로 전송되는 각 로그 항목에는 선택한 값에 따라 다음 정보가 포함됩니다.
+ `%t` - 밀리초 단위를 제외한 로그 항목 시간
+ `%m` - 밀리초 단위를 포함한 로그 항목 시간
+  `%r` - 원격 호스트 주소
+  `%u@%d` - 사용자 이름 @ 데이터베이스 이름
+  `[%p]` - 프로세스 ID(사용 가능한 경우)
+  `%l` - 세션당 로그 행 번호 
+  `%e` – SQL 오류 코드 
+  `%s` – 프로세스 시작 타임스탬프 
+  `%v` - 가상 트랜잭션 ID 
+  `%x` – 트랜잭션 ID 
+  `%c` – 세션 ID 
+  `%q` - 세션이 아닌 종결자 
+  `%a` – 애플리케이션 이름 

# RDS for PostgreSQL DB 인스턴스에 쿼리 로깅을 활성화합니다.
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

다음 테이블에 나열된 파라미터 중 일부를 설정하여 쿼리, 잠금을 기다리는 쿼리, 체크포인트 및 기타 여러 세부 정보를 포함하여 데이터베이스 활동에 대한 보다 자세한 정보를 수집할 수 있습니다. 이 주제에서는 쿼리 로깅에 중점을 둡니다.


| 파라미터 | 기본값 | 설명 | 
| --- | --- | --- | 
| log\$1connections | – | 성공한 연결을 모두 기록합니다.  | 
| log\$1disconnections | – | 각 세션의 끝과 기간을 로깅합니다.  | 
| log\$1checkpoints | 1 | 각 체크포인트를 기록합니다.  | 
| log\$1lock\$1waits | – | 오랜 잠금 대기 시간을 기록합니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. | 
| log\$1min\$1duration\$1sample | – | (밀리초) 문 샘플이 로그되는 최소 실행 시간을 설정합니다. 샘플 크기는 log\$1statement\$1sample\$1rate 파라미터를 사용하여 설정합니다. | 
| log\$1min\$1duration\$1statement | – | 지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다. | 
| log\$1statement | – | 기록할 문 유형을 설정합니다. 기본적으로 이 파라미터는 설정되어 있지 않지만 `all`, `ddl` 또는 `mod`로 변경하여 로깅하려는 SQL 문 유형을 지정할 수 있습니다. 이 파라미터에 `none` 이외의 다른 것을 지정하면 추가 단계를 수행하여 로그 파일에 암호가 노출되지 않도록 해야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요. | 
| log\$1statement\$1sample\$1rate | – | 로깅되도록 `log_min_duration_sample`에 지정된 시간을 초과하는 문의 비율로, 0.0에서 1.0 사이의 부동 소수점 값으로 표시됩니다. | 
| log\$1statement\$1stats | – | 누적 성능 통계를 서버 로그에 기록합니다. | 

## 로깅을 사용하여 성능이 느린 쿼리 찾기
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.using"></a>

SQL 문 및 쿼리를 로깅하여 성능이 느린 쿼리를 찾을 수 있습니다. 이 섹션에 설명된 대로 `log_statement` 및 `log_min_duration` 파라미터 설정을 수정하여 이 기능을 활성화합니다. RDS for PostgreSQL DB 인스턴스S에 대한 쿼리 로깅을 활성화하기 전에 로그에서 암호가 노출될 수 있는 사항과 위험을 완화하는 방법을 알고 있어야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요.

다음에서 `log_statement` 및 `log_min_duration` 파라미터에 대한 참조 정보를 확인할 수 있습니다.log\$1statement

이 파라미터는 로그에 전송해야 하는 SQL 문의 유형을 지정합니다. 기본값은 `none`입니다. 이 파라미터를 `all`, `ddl` 또는 `mod`로 변경할 경우 로그에 암호가 노출될 위험을 줄이려면 권장 조치를 취해야 합니다. 자세한 내용은 [쿼리 로깅 사용 시 암호 노출 위험 완화암호 노출 위험 완화](#USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk) 섹션을 참조하세요.

**모두**  
모든 문을 로깅합니다. 이 설정은 디버깅 용도로 사용하는 것이 좋습니다.

**ddl**  
모든 데이터 정의 언어(DDL) 문(CREATE, ALTER, DROP 등)을 로깅합니다.

**mod**  
NSERT, UPDATE, DELETE 등 데이터를 수정하는 모든 DDL 문과 데이터 조작 언어(DML) 문을 로깅합니다.

**없음**  
SQL 문이 로깅되지 않습니다. 로그에서 암호가 노출될 위험을 피하려면 이 설정을 사용하는 것이 좋습니다.log\$1min\$1duration\$1statement

지정된 시간 이상 실행되는 모든 SQL 문은 로깅됩니다. 이 파라미터는 기본적으로 설정되어 있지 않습니다. 이 파라미터를 활성화하면 최적화되지 않은 쿼리를 찾는 데 도움이 될 수 있습니다.

**–1–2147483647**  
문이 로깅되는 런타임의 밀리초(ms) 수입니다.

**쿼리 로깅 설정**

이 단계에서는 RDS for PostgreSQL DB 인스턴스가 사용자 지정 DB 파라미터 그룹을 사용한다고 가정합니다.

1. `log_statement` 파라미터를 `all`로 설정합니다. 다음 예에서는 이 파라미터가 설정에서 `postgresql.log`에 기록되는 정보를 보여줍니다.

   ```
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats:
   ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed
   ! [0.025146 s user, 0.000000 s system total]
   ! 36644 kB max resident size
   ! 0/8 [0/8] filesystem blocks in/out
   ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps
   ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent
   ! 19/0 [27/0] voluntary/involuntary context switches
   2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence
   FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s
   ORDER BY s.confidence DESC;
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1
   2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC;
   ----------------------- END OF LOG ----------------------
   ```

1. `log_min_duration_statement` 파라미터를 설정합니다. 다음 예제에서는 이 파라미터가 `postgresql.log`로 설정되어 있을 때 `1` 파일에 기록되는 정보를 보여줍니다.

   `log_min_duration_statement` 파라미터에 지정된 기간을 초과하는 쿼리가 로깅됩니다. 다음은 그 한 예입니다. Amazon RDS 콘솔에서 RDS for PostgreSQL DB 인스턴스에 대한 로그 파일을 볼 수 있습니다.

   ```
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments;
   2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms
   2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time
   2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB
   ----------------------- END OF LOG ----------------------
   ```

### 쿼리 로깅 사용 시 암호 노출 위험 완화
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging.mitigate-risk"></a>

암호가 노출되지 않도록 `log_statement`를 `none`으로 설정하는 것이 좋습니다. `log_statement`를 `all`, `ddl`, 또는 `mod`로 설정하는 경우 다음 단계 중 하나 이상을 수행하는 것이 좋습니다.
+ 클라이언트의 경우 민감한 정보를 암호화합니다. 자세한 내용은 PostgreSQL 설명서의 [암호화 옵션에 관한 문서](https://www.postgresql.org/docs/current/encryption-options.html)를 참조하세요. `CREATE` 및 `ALTER` 문의 `ENCRYPTED`(및 `UNENCRYPTED`) 옵션을 사용합니다. 자세한 내용은 PostgreSQL 설명서에서 [CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html)를 참조하세요.
+ RDS for PostgreSQL DB 인스턴스의 경우 PostgreSQL Auditing(pgAudit) 확장을 설정하고 사용합니다. 이 확장은 로그로 전송된 CREATE 및 ALTER 문에서 민감한 정보를 삭제합니다. 자세한 내용은 [pgAudit를 사용하여 데이터베이스 활동 로깅](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md) 섹션을 참조하세요.
+ CloudWatch 로그에 대한 액세스를 제한합니다.
+ IAM 등의 보다 강력한 인증 메커니즘을 사용합니다.

## Amazon CloudWatch Logs에 PostgreSQL 로그 게시
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

매우 내구력 있는 스토리지에 PostgreSQL 로그 레코드를 저장하려면 Amazon CloudWatch Logs를 사용하면 됩니다. CloudWatch Logs를 사용하면 로그 데이터에 대한 실시간 분석을 수행하고 CloudWatch를 통해 지표를 보고 경보를 생성할 수도 있습니다. 예를 들어, `log_statement`를 `ddl`로 설정하면 DDL 문이 실행될 때마다 경고하도록 경보를 설정할 수 있습니다. RDS for PostgreSQL DB 인스턴스를 생성하는 동안 PostgreSQL 로그가 CloudWatch Logs에 업로드되도록 선택할 수 있습니다. 이때 로그를 업로드하지 않도록 선택한 경우 나중에 인스턴스를 수정하여 해당 시점부터 로그 업로드를 시작하도록 할 수 있습니다. 즉, 기존 로그는 업로드되지 않습니다. 수정된 RDS for PostgreSQL DB 인스턴스에 생성된 새 로그만 업로드됩니다.

현재 사용 가능한 모든 RDS for PostgreSQL 버전에서는 CloudWatch Logs에 로그 파일 게시를 지원합니다. 자세한 내용은 Amazon RDS for PostgreSQL 릴리스 정보에서 [Amazon RDS for PostgreSQL 업데이트 내용](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html)을 참조하세요.**

CloudWatch Logs로 작업하려면 로그 그룹에 로그 데이터를 게시하도록 RDS for PostgreSQL DB 인스턴스를 구성하십시오.

RDS for PostgreSQL용 CloudWatch Logs에 다음 로그 유형을 게시할 수 있습니다.
+ PostgreSQL 로그
+ 업그레이드 로그 
+ IAM 데이터베이스 인증 오류 로그

구성을 완료하고 나면 Amazon RDS에서 CloudWatch 로그 그룹 내 로그 스트림에 로그 이벤트를 게시합니다. 예를 들면 PostgreSQL 로그 데이터가 로그 그룹 `/aws/rds/instance/my_instance/postgresql` 안에 저장됩니다. 로그를 보려면 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

### 콘솔
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CON"></a>

**콘솔을 사용하여 PostgreSQL 로그를 CloudWatch Logs에 게시하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 수정할 DB 인스턴스를 선택한 다음 **수정**을 선택합니다.

1. **로그 내보내기** 섹션에서 CloudWatch Logs에 게시하기 시작할 로그를 선택합니다.

   **로그 내보내기** 섹션은 CloudWatch Logs에 게시하는 기능을 지원하는 PostgreSQL 버전에서만 제공됩니다.

1. [**Continue**]를 선택한 후, 요약 페이지에서 [**Modify DB Instance**]를 선택합니다.

### AWS CLI
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.CLI"></a>

AWS CLI를 통해 PostgreSQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 명령을 호출할 수 있습니다.
+ `--db-instance-identifier`
+ `--cloudwatch-logs-export-configuration`

**참고**  
`--cloudwatch-logs-export-configuration` 옵션에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `--apply-immediately` 및 `--no-apply-immediately` 옵션은 지정해도 아무런 효과가 없습니다.

또한 다음 CLI 명령을 호출하여 PostgreSQL 로그를 게시할 수도 있습니다.
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)

다음 옵션으로 CLI 명령 중 하나를 실행합니다.
+ `--db-instance-identifier`
+ `--enable-cloudwatch-logs-exports`
+ `--db-instance-class`
+ `--engine`

실행하는 CLI 명령에 따라 다른 옵션이 필요할 수 있습니다.

**Example 로그를 CloudWatch Logs에 게시하도록 인스턴스 수정**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 기존 PostgreSQL DB 인스턴스를 수정합니다. `--cloudwatch-logs-export-configuration` 값은 JSON 객체입니다. 이 객체에 대한 키는 `EnableLogTypes`이며, 해당 값은 `postgresql` 및 `upgrade`의 조합을 사용하는 문자열의 배열입니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql", "upgrade"]}'
```
Windows의 경우:  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql","upgrade"]}'
```

**Example 로그를 CloudWatch Logs에 게시하도록 인스턴스 생성**  
다음 예에서는 CloudWatch Logs에 로그 파일을 게시하도록 PostgreSQL DB 인스턴스를 생성합니다. `--enable-cloudwatch-logs-exports` 값은 문자열의 JSON 배열입니다. 문자열은 `postgresql` 및 `upgrade`의 조합일 수 있습니다.  
대상 LinuxmacOS, 또는Unix:  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' \
4.     --db-instance-class db.m4.large \
5.     --engine postgres
```
Windows의 경우:  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --enable-cloudwatch-logs-exports '["postgresql","upgrade"]' ^
4.     --db-instance-class db.m4.large ^
5.     --engine postgres
```

### RDS API
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs.API"></a>

RDS API를 사용하여 PostgreSQL 로그를 게시할 수 있습니다. 다음 파라미터로 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 작업을 호출할 수 있습니다.
+ `DBInstanceIdentifier`
+ `CloudwatchLogsExportConfiguration`

**참고**  
`CloudwatchLogsExportConfiguration` 파라미터에 대한 변경 사항은 항상 DB 인스턴스에 즉시 적용됩니다. 따라서 `ApplyImmediately` 파라미터는 지정해도 아무런 효과가 없습니다.

또한 다음 RDS API 작업을 호출해 PostgreSQL 로그를 게시할 수 있습니다.
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

다음 파라미터로 RDS API 작업 중 하나를 실행합니다.
+ `DBInstanceIdentifier`
+ `EnableCloudwatchLogsExports`
+ `Engine`
+ `DBInstanceClass`

실행하는 작업에 따라 다른 파라미터가 필요할 수 있습니다.

 

# AWS CloudTrail에서 Amazon RDS API 호출 모니터링
<a name="logging-using-cloudtrail"></a>

AWS CloudTrail은 AWS 계정을 감사하는 데 도움이 되는 AWS 서비스입니다. AWS CloudTrail을 생성하면 AWS 계정에서 활성화됩니다. CloudTrail에 대한 자세한 내용은 [AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 참조하세요.

**Topics**
+ [CloudTrail를 Amazon RDS와 통합](#service-name-info-in-cloudtrail)
+ [Amazon RDS 로그 파일 항목](#understanding-service-name-entries)

## CloudTrail를 Amazon RDS와 통합
<a name="service-name-info-in-cloudtrail"></a>

모든 Amazon RDS 작업은 CloudTrail에 의해 로깅됩니다. CloudTrail은 Amazon RDS에서 사용자, 역할 또는 AWS 서비스가 수행한 작업의 기록을 제공합니다.

### CloudTrail 이벤트
<a name="service-name-info-in-cloudtrail.events"></a>

CloudTrail은 Amazon RDS에 대한 API 호출을 이벤트로 캡처합니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. 이벤트에는 Amazon RDS 콘솔 호출과 Amazon RDS API 작업에 대한 코드 호출이 포함됩니다.

Amazon RDS 작업은 **이벤트 기록(Event history)**의 CloudTrail 이벤트에 기록됩니다. CloudTrail 콘솔을 사용하여 AWS 리전에서 지난 90일간 기록된 API 활동 및 이벤트를 확인할 수 있습니다. 자세한 내용은 [CloudTrail 이벤트 기록에서 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

### CloudTrail 추적
<a name="service-name-info-in-cloudtrail.trails"></a>

Amazon RDS에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 생성합니다. 추적은 지정된 Amazon S3 버킷에 이벤트를 전송할 수 있도록 하는 구성입니다. CloudTrail은 일반적으로 계정 활동 15분 이내에 로그 파일을 전송합니다.

**참고**  
트레일을 구성하지 않은 경우에도 CloudTrail 콘솔의 **이벤트 기록**에서 최신 이벤트를 볼 수 있습니다.

AWS 계정에 대해 두 가지 추적 유형(모든 리전에 적용되는 추적 또는 한 리전에 적용되는 추적)을 생성할 수 있습니다. 콘솔에서 추적을 생성하면 기본적으로 모든 지역에 추적이 적용됩니다.

또는 CloudTrail 로그에서 수집된 이벤트 데이터를 추가 분석 및 처리하도록 다른 AWS서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하세요.
+ [추적 생성 개요](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 지원 서비스 및 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail에 대한 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [여러 리전에서 CloudTrail 로그 파일 수신](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및[ 여러 계정에서 CloudTrail 로그 파일 수신](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

## Amazon RDS 로그 파일 항목
<a name="understanding-service-name-entries"></a>

CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. CloudTrail 로그 파일은 퍼블릭 API 호출에 대한 순서 지정된 스택 추적이 아니기 때문에 특정 순서로 표시되지 않습니다.

다음은 `CreateDBInstance` 작업을 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다.

```
{
    "eventVersion": "1.04",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AKIAIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/johndoe",
        "accountId": "123456789012",
        "accessKeyId": "AKIAI44QH8DHBEXAMPLE",
        "userName": "johndoe"
    },
    "eventTime": "2018-07-30T22:14:06Z",
    "eventSource": "rds.amazonaws.com",
    "eventName": "CreateDBInstance",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.2.0",
    "userAgent": "aws-cli/1.15.42 Python/3.6.1 Darwin/17.7.0 botocore/1.10.42",
    "requestParameters": {
        "enableCloudwatchLogsExports": [
            "audit",
            "error",
            "general",
            "slowquery"
        ],
        "dBInstanceIdentifier": "test-instance",
        "engine": "mysql",
        "masterUsername": "myawsuser",
        "allocatedStorage": 20,
        "dBInstanceClass": "db.m1.small",
        "masterUserPassword": "****"
    },
    "responseElements": {
        "dBInstanceArn": "arn:aws:rds:us-east-1:123456789012:db:test-instance",
        "storageEncrypted": false,
        "preferredBackupWindow": "10:27-10:57",
        "preferredMaintenanceWindow": "sat:05:47-sat:06:17",
        "backupRetentionPeriod": 1,
        "allocatedStorage": 20,
        "storageType": "standard",
        "engineVersion": "8.0.28",
        "dbInstancePort": 0,
        "optionGroupMemberships": [
            {
                "status": "in-sync",
                "optionGroupName": "default:mysql-8-0"
            }
        ],
        "dBParameterGroups": [
            {
                "dBParameterGroupName": "default.mysql8.0",
                "parameterApplyStatus": "in-sync"
            }
        ],
        "monitoringInterval": 0,
        "dBInstanceClass": "db.m1.small",
        "readReplicaDBInstanceIdentifiers": [],
        "dBSubnetGroup": {
            "dBSubnetGroupName": "default",
            "dBSubnetGroupDescription": "default",
            "subnets": [
                {
                    "subnetAvailabilityZone": {"name": "us-east-1b"},
                    "subnetIdentifier": "subnet-cbfff283",
                    "subnetStatus": "Active"
                },
                {
                    "subnetAvailabilityZone": {"name": "us-east-1e"},
                    "subnetIdentifier": "subnet-d7c825e8",
                    "subnetStatus": "Active"
                },
                {
                    "subnetAvailabilityZone": {"name": "us-east-1f"},
                    "subnetIdentifier": "subnet-6746046b",
                    "subnetStatus": "Active"
                },
                {
                    "subnetAvailabilityZone": {"name": "us-east-1c"},
                    "subnetIdentifier": "subnet-bac383e0",
                    "subnetStatus": "Active"
                },
                {
                    "subnetAvailabilityZone": {"name": "us-east-1d"},
                    "subnetIdentifier": "subnet-42599426",
                    "subnetStatus": "Active"
                },
                {
                    "subnetAvailabilityZone": {"name": "us-east-1a"},
                    "subnetIdentifier": "subnet-da327bf6",
                    "subnetStatus": "Active"
                }
            ],
            "vpcId": "vpc-136a4c6a",
            "subnetGroupStatus": "Complete"
        },
        "masterUsername": "myawsuser",
        "multiAZ": false,
        "autoMinorVersionUpgrade": true,
        "engine": "mysql",
        "cACertificateIdentifier": "rds-ca-2015",
        "dbiResourceId": "db-ETDZIIXHEWY5N7GXVC4SH7H5IA",
        "dBSecurityGroups": [],
        "pendingModifiedValues": {
            "masterUserPassword": "****",
            "pendingCloudwatchLogsExports": {
                "logTypesToEnable": [
                    "audit",
                    "error",
                    "general",
                    "slowquery"
                ]
            }
        },
        "dBInstanceStatus": "creating",
        "publiclyAccessible": true,
        "domainMemberships": [],
        "copyTagsToSnapshot": false,
        "dBInstanceIdentifier": "test-instance",
        "licenseModel": "general-public-license",
        "iAMDatabaseAuthenticationEnabled": false,
        "performanceInsightsEnabled": false,
        "vpcSecurityGroups": [
            {
                "status": "active",
                "vpcSecurityGroupId": "sg-f839b688"
            }
        ]
    },
    "requestID": "daf2e3f5-96a3-4df7-a026-863f96db793e",
    "eventID": "797163d3-5726-441d-80a7-6eeb7464acd4",
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

앞의 예의 `userIdentity` 요소에 표시된 것처럼 모든 이벤트 또는 로그 항목에는 요청을 생성한 사용자에 대한 정보가 포함됩니다. 자격 증명 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 요청을 루트로 했는지 아니면 IAM 사용자 보안 인증 정보로 했는지 여부.
+ 역할 또는 페더레이션 사용자의 임시 보안 인증을 사용하여 요청이 생성되었는지 여부.
+ 다른 AWS 서비스에서 요청했는지.

`userIdentity`에 대한 자세한 내용은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하십시오. `CreateDBInstance` 및 기타 Amazon RDS 작업에 대한 자세한 내용은 [Amazon RDS API 참조](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/)를 참조하세요.

# 데이터베이스 활동 스트림을 사용하여 Amazon RDS 모니터링
<a name="DBActivityStreams"></a><a name="das"></a>

데이터베이스 활동 스트림을 사용하면 데이터베이스 활동 스트림을 거의 실시간으로 모니터링할 수 있습니다.

**Topics**
+ [데이터베이스 활동 스트림 개요](#DBActivityStreams.Overview)
+ [Oracle 데이터베이스 통합 감사 구성](DBActivityStreams.configuring-auditing.md)
+ [Amazon RDS for Microsoft SQL Server에 대한 감사 정책 구성](DBActivityStreams.configuring-auditing-SQLServer.md)
+ [데이터베이스 활동 스트림 시작](DBActivityStreams.Enabling.md)
+ [Amazon RDS에 대한 데이터베이스 활동 스트림 수정](DBActivityStreams.Modifying.md)
+ [데이터베이스 활동 스트림 상태 가져오기](DBActivityStreams.Status.md)
+ [데이터베이스 활동 스트림 중지](DBActivityStreams.Disabling.md)
+ [데이터베이스 활동 스트림 모니터링](DBActivityStreams.Monitoring.md)
+ [데이터베이스 활동 스트림의 IAM 정책 예제](DBActivityStreams.ManagingAccess.md)

## 데이터베이스 활동 스트림 개요
<a name="DBActivityStreams.Overview"></a>

Amazon RDS 데이터베이스 관리자는 데이터베이스를 보호하고 규정 준수 및 규제 요건을 충족해야 합니다. 한 가지 전략은 데이터베이스 활동 스트림을 모니터링 도구와 통합하는 것입니다. 이렇게 하면 데이터베이스에서 감사 활동에 대한 경보를 모니터링하고 설정할 수 있습니다.

보안 위협은 외부 및 내부 위협입니다. 내부 위협으로부터 보호하기 위해 데이터베이스 활동 스트림 기능을 구성하여 데이터 스트림에 대한 관리자 액세스를 제어할 수 있습니다. Amzon RDS DBA는 스트림의 수집, 전송, 저장 및 처리에 대한 액세스 권한이 없습니다.

**Contents**
+ [데이터베이스 활동 스트림 작동 방식](#DBActivityStreams.Overview.how-they-work)
+ [Oracle 데이터베이스 및 SQL Server 데이터베이스에서의 감사](#DBActivityStreams.Overview.auditing)
  + [Oracle 데이터베이스의 통합 감사](#DBActivityStreams.Overview.unified-auditing)
  + [Microsoft SQL Server에서의 감사](#DBActivityStreams.Overview.SQLServer-auditing)
  + [Oracle Database 및 SQL Server에 대한 기본이 아닌 감사 필드](#DBActivityStreams.Overview.unified-auditing.non-native)
  + [DB 파라미터 그룹 재정의](#DBActivityStreams.Overview.unified-auditing.parameter-group)
+ [데이터베이스 활동 스트림에 대한 비동기식 모드](#DBActivityStreams.Overview.sync-mode)
+ [데이터베이스 활동 스트림의 요구 사항 및 제한 사항](#DBActivityStreams.Overview.requirements)
+ [리전 및 버전 사용 가능 여부](#DBActivityStreams.RegionVersionAvailability)
+ [데이터베이스 활동 스트림이 지원되는 DB 인스턴스 클래스](#DBActivityStreams.Overview.requirements.classes)

### 데이터베이스 활동 스트림 작동 방식
<a name="DBActivityStreams.Overview.how-they-work"></a>

Amazon RDS는 활동을 Amazon Kinesis 데이터 스트림에 거의 실시간으로 푸시합니다. Kinesis 스트림이 자동으로 생성됩니다. Kinesis에서 Amazon Data Firehose 및 AWS Lambda와 같은 AWS 서비스를 구성하여 스트림을 사용하고 데이터를 저장할 수 있습니다.

**중요**  
Amazon RDS에서 데이터베이스 활동 스트림은 무료 기능이지만, Amazon Kinesis는 데이터 스트림에 대한 요금을 부과합니다. 자세한 내용은 [Amazon Kinesis Data Streams 요금](https://aws.amazon.com/kinesis/data-streams/pricing/)을 참조하세요.

규정 준수 관리용 애플리케이션이 데이터베이스 활동 스트림을 사용하도록 구성할 수 있습니다. 이 애플리케이션은 스트림을 사용하여  데이터베이스에 대한 경보를 생성하고 활동 감사를 수행할 수 있습니다.

Amazon RDS는 다중 AZ 배포에서 데이터베이스 활동 스트림을 지원합니다. 이 경우 데이터베이스 활동 스트림은 기본 인스턴스와 대기 인스턴스를 모두 감사합니다.

### Oracle 데이터베이스 및 SQL Server 데이터베이스에서의 감사
<a name="DBActivityStreams.Overview.auditing"></a>

감사는 구성된 데이터베이스 작업의 모니터링 및 기록입니다. Amazon RDS는 기본적으로 데이터베이스 활동을 캡처하지 않습니다. 사용자가 데이터베이스에서 직접 감사 정책을 생성하고 관리합니다.

**Topics**
+ [Oracle 데이터베이스의 통합 감사](#DBActivityStreams.Overview.unified-auditing)
+ [Microsoft SQL Server에서의 감사](#DBActivityStreams.Overview.SQLServer-auditing)
+ [Oracle Database 및 SQL Server에 대한 기본이 아닌 감사 필드](#DBActivityStreams.Overview.unified-auditing.non-native)
+ [DB 파라미터 그룹 재정의](#DBActivityStreams.Overview.unified-auditing.parameter-group)

#### Oracle 데이터베이스의 통합 감사
<a name="DBActivityStreams.Overview.unified-auditing"></a>

Oracle 데이터베이스에서 *통합 감사 정책*은 사용자 동작의 측면을 감사하는 데 사용할 수 있는 명명된 감사 설정 그룹입니다. 정책은 단일 사용자의 활동을 감사하는 것만큼 간단할 수 있습니다. 또한 조건을 사용하는 복잡한 감사 정책을 생성할 수도 있습니다.

Oracle 데이터베이스는 `SYS` 감사 레코드를 포함한 감사 레코드를 *통합 감사 추적*에 기록합니다. 예를 들어, `INSERT` 문 중에 오류가 발생하는 경우 표준 감사는 오류 번호와 실행된 SQL을 보여줍니다. 감사 추적은 `AUDSYS` 스키마에 있는 읽기 전용 테이블에 상주합니다. `UNIFIED_AUDIT_TRAIL` 데이터 사전 보기를 쿼리하여 이러한 레코드에 액세스합니다.

일반적으로 데이터베이스 활동 스트림을 다음과 같이 구성합니다.

1. `CREATE AUDIT POLICY` 명령을 사용하여 Oracle 데이터베이스 감사 정책을 생성합니다.

   Oracle 데이터베이스는 감사 레코드를 생성합니다.

1. `AUDIT POLICY` 명령을 사용하여 감사 정책을 활성화합니다.

1. 데이터베이스 활동 스트림을 구성합니다.

   Oracle 데이터베이스 감사 정책과 일치하 는 활동만 캡처되어 Amazon Kinesis 데이터 스트림으로 전송됩니다. 데이터베이스 활동 스트림이 활성화된 경우 Oracle 데이터베이스 관리자는 감사 정책을 변경하거나 감사 로그를 제거할 수 없습니다.

통합 감사 정책에 대해 자세히 알아보려면 *Oracle Database Security Guide*에서 [About Auditing Activities with Unified Audit Policies and AUDIT](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-audit-policies.html#GUID-2435D929-10AD-43C7-8A6C-5133170074D0)를 참조하세요.

#### Microsoft SQL Server에서의 감사
<a name="DBActivityStreams.Overview.SQLServer-auditing"></a>

데이터베이스 활동 스트림은 SQLAudit 기능을 사용하여 SQL Server 데이터베이스를 감사합니다.

RDS for SQL Server 인스턴스에는 다음이 포함되어 있습니다.
+ 서버 감사 - SQL Server 감사는 서버 또는 데이터베이스 수준 작업의 단일 인스턴스와 모니터링할 작업 그룹을 수집합니다. 서버 수준 감사인 `RDS_DAS_AUDIT` 및 `RDS_DAS_AUDIT_CHANGES`는 RDS에서 관리합니다.
+ 서버 감사 사양 - 서버 감사 사양은 서버 수준 이벤트를 기록합니다. `RDS_DAS_SERVER_AUDIT_SPEC` 사양을 수정할 수 있습니다. 이 사양은 서버 감사 `RDS_DAS_AUDIT`과 연결되어 있습니다. `RDS_DAS_CHANGES_AUDIT_SPEC` 사양은 RDS에서 관리합니다.
+ 데이터베이스 감사 사양 - 데이터베이스 감사 사양은 데이터베이스 수준 이벤트를 기록합니다. 데이터베이스 감사 사양 `RDS_DAS_DB_<name>`을 생성하여 `RDS_DAS_AUDIT` 서버 감사에 연결할 수 있습니다.

콘솔 또는 CLI를 사용하여 데이터베이스 활동 스트림을 구성할 수 있습니다. 일반적으로 데이터베이스 활동 스트림을 다음과 같이 구성합니다.

1. (선택 사항) `CREATE DATABASE AUDIT SPECIFICATION` 명령을 사용하여 데이터베이스 감사 사양을 생성하고 이를 `RDS_DAS_AUDIT` 서버 감사에 연결합니다.

1. (선택 사항) `ALTER SERVER AUDIT SPECIFICATION` 명령을 사용하여 서버 감사 사양을 수정하고 정책을 정의합니다.

1. 데이터베이스 및 서버 감사 정책을 활성화합니다. 예제:

   `ALTER DATABASE AUDIT SPECIFICATION [<Your database specification>] WITH (STATE=ON)`

   `ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC] WITH (STATE=ON)`

1. 데이터베이스 활동 스트림을 구성합니다.

   서버 및 데이터베이스 감사 정책과 일치하는 활동만 캡처되어 Amazon Kinesis 데이터 스트림으로 전송됩니다. 데이터베이스 활동 스트림이 활성화되고 정책이 잠겨 있는 경우 데이터베이스 관리자는 감사 정책을 변경하거나 감사 로그를 제거할 수 없습니다.
**중요**  
특정 데이터베이스에 대한 데이터베이스 감사 사양이 활성화되어 있고 정책이 잠긴 상태이면 데이터베이스를 삭제할 수 없습니다.

SQL Server 감사에 자세한 내용은 **Microsoft SQL Server 설명서의 [SQL Server Audit 구성 요소](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16)를 참조하세요.



#### Oracle Database 및 SQL Server에 대한 기본이 아닌 감사 필드
<a name="DBActivityStreams.Overview.unified-auditing.non-native"></a>

데이터베이스 활동 스트림을 시작하면 모든 데이터베이스 이벤트는 해당하는 활동 스트림 이벤트를 생성합니다. 예를 들어 데이터베이스 사용자는 `SELECT` 및 `INSERT` 문을 실행합니다. 데이터베이스는 이러한 이벤트를 감사하여 Amazon Kinesis 데이터 스트림으로 전송합니다.

이 이벤트는 스트림에서 JSON 객체로 표현됩니다. JSON 객체는 `databaseActivityEventList` 배열이 있는 `DatabaseActivityMonitoringRecord`를 포함합니다. 배열의 미리 정의된 필드는 `class`, `clientApplication` 및 `command`를 포함합니다.

기본적으로 활동 스트림은 엔진 기본 감사 필드를 포함하지 않습니다. `engineNativeAuditFields` JSON 객체에 이러한 추가 필드가 포함되도록 Amazon RDS for Oracle 및 SQL Server를 구성할 수 있습니다.

Oracle Database에서 통합 감사 추적의 대부분 이벤트는 RDS 데이터 활동 스트림의 필드에 매핑됩니다. 예를 들어, 통합 감사의 `UNIFIED_AUDIT_TRAIL.SQL_TEXT` 필드는 데이터베이스 활동 스트림의 `commandText` 필드에 매핑됩니다. 그러나 `OS_USERNAME`과 같은 Oracle 데이터베이스 감사 필드는 데이터베이스 활동 스트림에 있는 미리 정의된 필드에 매핑되지 않습니다.

SQL Server에서 SQLAudit에 의해 기록되는 대부분의 이벤트 필드는 RDS 데이터베이스 활동 스트림의 필드에 매핑됩니다. 예를 들어, 통합 감사의 `sys.fn_get_audit_file`에 있는 `code` 필드는 데이터베이스 활동 스트림의 `commandText` 필드에 매핑됩니다. 그러나 `permission_bitmask`와 같은 SQL Server 데이터베이스 감사 필드는 데이터베이스 활동 스트림에 있는 미리 정의된 필드에 매핑되지 않습니다.

databaseActivityEventList에 대한 자세한 내용은 [데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열](DBActivityStreams.AuditLog.databaseActivityEventList.md) 섹션을 참조하세요.

#### DB 파라미터 그룹 재정의
<a name="DBActivityStreams.Overview.unified-auditing.parameter-group"></a>

일반적으로 파라미터 그룹을 연결하여 RDS for Oracle에서 통합 감사를 활성화합니다. 그러나 데이터베이스 활동 스트림에는 추가 구성이 필요합니다. 고객 경험을 개선하기 위해 Amazon RDS는 다음을 수행합니다.
+ 활동 스트림을 활성화하면 RDS for Oracle은 파라미터 그룹의 감사 파라미터를 무시합니다.
+ 활동 스트림을 비활성화하면 RDS for Oracle은 감사 파라미터 무시를 중단합니다.

SQL Server에 대한 데이터베이스 활동 스트림은 SQL Audit 옵션에서 설정한 파라미터와는 독립적입니다.

### 데이터베이스 활동 스트림에 대한 비동기식 모드
<a name="DBActivityStreams.Overview.sync-mode"></a>

Amazon RDS의 활동 스트림은 항상 비동기식입니다. 데이터베이스 세션이 활동 스트림 이벤트를 생성하면 세션은 즉시 정상 활동으로 되돌아갑니다. Amazon RDS는 백그라운드에서 내구성 있는 레코드에 활동 스트림 이벤트를 생성합니다.

백그라운드 태스크에서 오류가 발생하면 Amazon RDS가 이벤트를 생성합니다. 이 이벤트는 활동 스트림 이벤트 레코드가 분실되었을 수있는 기간의 시작과 끝을 나타냅니다. 비동기 모드는 활동 스트림의 정확성보다 데이터베이스 성능을 우선시합니다.

### 데이터베이스 활동 스트림의 요구 사항 및 제한 사항
<a name="DBActivityStreams.Overview.requirements"></a>

RDS에서 데이터베이스 활동 스트림에는 다음과 같은 요구 사항과 제한 사항이 있습니다.
+ 데이터베이스 활동 스트림에는 Amazon Kinesis를 사용해야 합니다.
+ 데이터베이스 활동 스트림은 항상 암호화되므로 AWS Key Management Service(AWS KMS)를 사용해야 합니다.
+ Amazon Kinesis 데이터 스트림에 추가 암호화를 적용하는 것은 이미 AWS KMS 키를 사용하여 암호화된 데이터베이스 활동 스트림과 호환되지 않습니다.
+ 사용자가 직접 감사 정책을 생성하고 관리합니다. Amazon Aurora와 달리 RDS for Oracle은 기본적으로 데이터베이스 활동을 캡처하지 않습니다.
+ 사용자가 직접 감사 정책 또는 사양을 생성하고 관리합니다. Amazon Aurora와 달리 Amazon RDS는 기본적으로 데이터베이스 활동을 캡처하지 않습니다.
+ 다중 AZ 배포에서 기본 DB 인스턴스에서만 데이터베이스 활동 스트림을 시작합니다. 활동 스트림은 기본 DB 인스턴스와 대기 DB 인스턴스를 모두 자동으로 감사합니다. 장애 조치 중에는 추가 단계가 필요 없습니다.
+ DB 인스턴스의 이름을 변경해도 새 Kinesis 스트림이 생성되지는 않습니다.
+ CDB는 RDS for Oracle에 대해 지원되지 않습니다.
+ 읽기 전용 복제본은 지원되지 않습니다.

### 리전 및 버전 사용 가능 여부
<a name="DBActivityStreams.RegionVersionAvailability"></a>

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전마다 다릅니다. 데이터베이스 활동 스트림의 버전 및 지역 가용성에 대한 자세한 내용은 [Amazon RDS에서 데이터베이스 활동 스트림을 지원하는 리전 및 DB 엔진](Concepts.RDS_Fea_Regions_DB-eng.Feature.DBActivityStreams.md) 단원을 참조하세요.

### 데이터베이스 활동 스트림이 지원되는 DB 인스턴스 클래스
<a name="DBActivityStreams.Overview.requirements.classes"></a>

RDS for Oracle의 경우 다음 DB 인스턴스 클래스와 함께 데이터베이스 활동 스트림을 사용할 수 있습니다.
+ db.m4.\$1large
+ db.m5.\$1large
+ db.m5d.\$1large
+ db.m6i.\$1large
+ db.r4.\$1large
+ db.r5.\$1large
+ db.r5.\$1large.tpc\$1.mem\$1x
+ db.r5b.\$1large
+ db.r5b.\$1large.tpc\$1.mem\$1x
+ db.r5d.\$1large
+ db.r6i.\$1large
+ db.r6i.\$1large.tpc\$1.mem\$1x
+ db.x2idn.\$1large
+ db.x2iedn.\$1large
+ db.x2iezn.\$1large
+ db.z1d.\$1large

RDS for sQL Server의 경우 다음 DB 인스턴스 클래스와 함께 데이터베이스 활동 스트림을 사용할 수 있습니다.
+ db.m4.\$1large
+ db.m5.\$1large
+ db.m5d.\$1large
+ db.m6i.\$1large
+ db.r4.\$1large
+ db.r5.\$1large
+ db.r5b.\$1large
+ db.r5d.\$1large
+ db.r6i.\$1large
+ db.x1e.\$1large
+ db.x2iedn.\$1large
+ db.z1d.\$1large

인스턴스 클래스 유형에 대한 자세한 내용은 [DB 인스턴스 클래스](Concepts.DBInstanceClass.md) 섹션을 참조하세요.

# Oracle 데이터베이스 통합 감사 구성
<a name="DBActivityStreams.configuring-auditing"></a>

데이터베이스 활동 스트림에 사용할 통합 감사를 구성하는 경우 다음과 같은 상황이 발생할 수 있습니다.
+ Oracle 데이터베이스에 통합 감사가 구성되지 않았습니다.

  이 경우 `CREATE AUDIT POLICY` 명령을 사용하여 새 정책을 생성하고 `AUDIT POLICY` 명령을 사용하여 정책을 활성화합니다. 다음 예시에서는 특정 권한 및 역할을 가진 사용자를 모니터링하는 정책을 만들고 활성화합니다.

  ```
  CREATE AUDIT POLICY table_pol
  PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE
  ROLES emp_admin, sales_admin;
  
  AUDIT POLICY table_pol;
  ```

  전체 지침은 Oracle 데이터베이스 문서에서 [Configuring Audit Policies](https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-audit-policies.html#GUID-22CDB667-5AA2-4051-A262-FBD0236763CB)를 참조하세요.
+ 통합 감사는 Oracle 데이터베이스에 대해 구성됩니다.

  데이터베이스 활동 스트림을 활성화하면 RDS for Oracle에서 기존 감사 데이터를 자동으로 지웁니다. 또한 감사 추적 권한도 취소됩니다. RDS for Oracle은 더 이상 다음을 수행하지 않습니다.
  + 통합 감사 추적 레코드 삭제
  + 통합 감사 정책 추가, 삭제 또는 수정
  + 마지막으로 아카이빙된 타임스탬프 업데이트
**중요**  
데이터베이스 활동 스트림을 활성화하기 전에 감사 데이터를 백업하는 것이 좋습니다.

  `UNIFIED_AUDIT_TRAIL` 보기에 대한 설명은 [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/database/121/REFRN/GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D.htm#REFRN29162)을 참조하세요. Oracle Support 계정이 있는 경우 [How To Purge The UNIFIED AUDIT TRAIL](https://support.oracle.com/knowledge/Oracle%20Database%20Products/1582627_1.html)을 참조하세요.

# Amazon RDS for Microsoft SQL Server에 대한 감사 정책 구성
<a name="DBActivityStreams.configuring-auditing-SQLServer"></a>

SQL Server 데이터베이스 인스턴스에는 Amazon RDS에서 관리하는 서버 감사(`RDS_DAS_AUDIT`)가 있습니다. 정책을 정의하여 서버 감사 사양(`RDS_DAS_SERVER_AUDIT_SPEC`)에 서버 이벤트를 기록할 수 있습니다. 데이터베이스 감사 사양(예: `RDS_DAS_DB_<name>`)을 생성하고 데이터베이스 이벤트를 기록하는 정책을 정의할 수 있습니다. 서버 및 데이터베이스 수준 감사 작업 그룹 목록은 **Microsoft SQL Server 설명서의 [SQL Server 감사 작업 그룹 및 작업](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-action-groups-and-actions)을 참조하세요.

기본 서버 정책은 실패한 로그인과 데이터베이스 활동 스트림에 대한 데이터베이스 또는 서버 감사 사양의 변경만 모니터링합니다.

감사 및 감사 사양에 대한 제한 사항은 다음과 같습니다.
+ 데이터베이스 활동 스트림이 **잠긴 상태일 때는 서버 또는 데이터베이스 감사 사양을 수정할 수 없습니다.
+ 서버 감사 `RDS_DAS_AUDIT` 사양을 수정할 수 없습니다.
+ SQL Server 감사 `RDS_DAS_CHANGES` 또는 관련 서버 감사 사양 `RDS_DAS_CHANGES_AUDIT_SPEC`을 수정할 수 없습니다.
+ 데이터베이스 감사 사양을 만들 때는 `RDS_DAS_DB_<name>` 형식(예: `RDS_DAS_DB_databaseActions`)을 사용해야 합니다.

**중요**  
소규모 인스턴스 클래스의 경우 모든 데이터를 감사하지 않고 필요한 데이터만 감사하는 것이 좋습니다. 이렇게 하면 데이터베이스 활동 스트림이 이러한 인스턴스 클래스 성능에 미치는 영향을 줄일 수 있습니다.

다음 샘플 코드는 서버 감사 사양 `RDS_DAS_SERVER_AUDIT_SPEC`을 수정하고 로그아웃 및 성공적인 로그인 작업을 감사합니다.

```
ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC]
      WITH (STATE=OFF);
ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC]
      ADD (LOGOUT_GROUP),
      ADD (SUCCESSFUL_LOGIN_GROUP)
      WITH (STATE = ON );
```

다음 샘플 코드는 데이터베이스 감사 사양 `RDS_DAS_DB_database_spec`을 생성하여 서버 감사 `RDS_DAS_AUDIT`에 첨부합니다.

```
USE testDB;
CREATE DATABASE AUDIT SPECIFICATION [RDS_DAS_DB_database_spec]
     FOR SERVER AUDIT [RDS_DAS_AUDIT]
     ADD ( INSERT, UPDATE, DELETE  
          ON testTable BY testUser )  
     WITH (STATE = ON);
```

감사 사양을 구성한 후에는 사양 `RDS_DAS_SERVER_AUDIT_SPEC` 및 `RDS_DAS_DB_<name>`의 상태가 `ON`으로 설정되어 있는지 확인합니다. 이제 해당 사양이 감사 데이터를 데이터베이스 활동 스트림으로 보낼 수 있습니다.

# 데이터베이스 활동 스트림 시작
<a name="DBActivityStreams.Enabling"></a>

DB 인스턴스 에 대해 활동 스트림을 시작하면 감사 정책에 구성한 각 데이터베이스 활동 이벤트가 활동 스트림 이벤트를 생성합니다. `CONNECT` 및 `SELECT` 같은 SQL 명령은 액세스 이벤트를 생성합니다. `CREATE` 및 `INSERT` 같은 SQL 명령은 변경 이벤트를 생성합니다.

**중요**  
Oracle DB 인스턴스에 대해 활동 스트림을 활성화하면 기존 감사 데이터를 지웁니다. 또한 감사 추적 권한도 취소됩니다. 스트림이 활성화된 경우 RDS for Oracle은 더 이상 다음 작업을 수행할 수 없습니다.  
통합 감사 추적 레코드 삭제
통합 감사 정책 추가, 삭제 또는 수정
마지막으로 아카이빙된 타임스탬프 업데이트

------
#### [ Console ]

**데이터베이스 활동 스트림을 시작하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 활동 스트림을 시작하려는 Amazon RDS 데이터베이스 인스턴스를 선택합니다. 다중 AZ 배포에서 기본 인스턴스에서만 스트림을 시작합니다. 활동 스트림은 기본 및 대기 DB 인스턴스를 모두 감사합니다.

1. **작업**의 경우 **Start activity stream(활동 스트림 시작)**을 선택합니다.

   **데이터베이스 활동 스트림 시작: ***이름* 창이 나타납니다. 여기서 *이름*은 사용자의 RDS 인스턴스입니다.

1. 다음 설정을 입력합니다.
   + **AWS KMS key**의 경우, AWS KMS keys 목록에서 키를 선택합니다.

     RDS for Oracle이 KMS 키를 사용하여 키를 암호화하면 암호화된 키가 데이터베이스 활동을 암호화합니다. 기본 키가 아닌 KMS 키를 선택합니다. 암호화 키 및 AWS KMS에 대한 자세한 내용은 *AWS Key Management Service 개발자 안내서에서 *[AWS Key Management Service란 무엇입니까?](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)를 참조하세요.
   + **데이터베이스 활동 이벤트**에서 **엔진 고유 감사 필드 활성화**를 선택하여 엔진 고유의 감사 필드를 포함합니다.
   + [**즉시(Immediately))**를 선택합니다.

     [**즉시(Immediately)**]를 선택하면 RDS 인스턴스가 바로 다시 시작됩니다. [**다음 유지 관리 기간 중(During the next maintenance window)**]을 선택하면 RDS 인스턴스는 즉시 다시 시작되지 않습니다. 이 경우 데이터베이스 활동 스트림은 다음 유지 관리 기간까지 시작되지 않습니다.

1. **데이터베이스 활동 스트림 시작**을 선택합니다.

   데이터베이스에 대한 상태는 활동 스트림이 시작 중임을 보여줍니다.
**참고**  
`You can't start a database activity stream in this configuration` 오류가 발생하는 경우 RDS 인스턴스가 지원되는 인스턴스 클래스를 사용하고 있는지 [데이터베이스 활동 스트림이 지원되는 DB 인스턴스 클래스](DBActivityStreams.md#DBActivityStreams.Overview.requirements.classes)에서 확인하세요.

------
#### [ AWS CLI ]

DB 인스턴스에 대해 데이터베이스 활동 스트림을 시작하려면 [start-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/start-activity-stream.html) AWS CLI 명령을 사용하여 데이터베이스를 구성합니다.
+ `--resource-arn arn` - DB 인스턴스의 Amazon 리소스 이름(ARN)을 지정합니다.
+ `--kms-key-id key` - 데이터베이스 활동 스트림에서 메시지를 암호화하기 위한 KMS 키 식별자를 지정합니다. AWS KMS 키 식별자는 AWS KMS key의 키 ARN, 키 ID, 별칭 ARN 또는 별칭 이름입니다.
+ `--engine-native-audit-fields-included` - 데이터 스트림에 엔진별 감사 필드를 포함합니다. 이러한 필드를 제외하려면 `--no-engine-native-audit-fields-included`(default)을 지정합니다.

다음 예에서는 비동기 모드에서 DB 인스턴스에 대한 데이터베이스 활동 스트림을 시작합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds start-activity-stream \
    --mode async \
    --kms-key-id my-kms-key-arn \
    --resource-arn my-instance-arn \
    --engine-native-audit-fields-included \
    --apply-immediately
```

Windows의 경우:

```
aws rds start-activity-stream ^
    --mode async ^
    --kms-key-id my-kms-key-arn ^
    --resource-arn my-instance-arn ^
    --engine-native-audit-fields-included ^
    --apply-immediately
```

------
#### [ Amazon RDS API ]

DB 인스턴스에 대해 데이터베이스 활동 스트림을 시작하려면 [StartActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StartActivityStream.html) 작업을 사용하여 인스턴스를 구성합니다.

아래 파라미터를 사용하여 작업을 호출하세요.
+ `Region`
+ `KmsKeyId`
+ `ResourceArn`
+ `Mode`
+ `EngineNativeAuditFieldsIncluded`

------

# Amazon RDS에 대한 데이터베이스 활동 스트림 수정
<a name="DBActivityStreams.Modifying"></a>

활동 스트림이 시작될 때 Amazon RDS 감사 정책을 사용자 지정하는 것이 좋습니다. 활동 스트림을 중지하여 시간과 데이터를 잃지 않으려면 *감사 정책 상태*를 다음 설정 중 하나로 변경할 수 있습니다.

**잠김(기본값)**  
데이터베이스의 감사 정책은 읽기 전용입니다.

**잠금 해제됨**  
데이터베이스의 감사 정책은 읽기/쓰기가 가능합니다.

기본 단계는 다음과 같습니다.

1. 감사 정책 상태를 잠금 해제된 상태로 수정합니다.

1. 감사 정책을 사용자 정의합니다.

1. 감사 정책 상태를 잠김 상태로 수정합니다.

## 콘솔
<a name="DBActivityStreams.Modifying-collapsible-section-E1"></a>

**활동 스트림의 감사 정책 상태를 수정하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. **작업**에서는 **데이터베이스 활동 스트림 수정**을 선택합니다.

   **데이터베이스 활동 스트림 시작: *name*** 창이 나타납니다. 여기서 *name*은 사용자의 RDS 인스턴스입니다.

1. 다음 옵션 중 하나를 선택합니다.  
**잠김**  
감사 정책을 잠그면 읽기 전용으로 바뀝니다. 정책을 잠금 해제하거나 활동 스트림을 중지하지 않는 한 감사 정책을 편집할 수 없습니다.  
**잠금 해제됨**  
감사 정책을 잠금 해제하면 읽기/쓰기가 가능합니다. 활동 스트림이 시작되는 동안 감사 정책을 편집할 수 있습니다.

1. **DB 활동 스트림 수정**을 선택합니다.

   Amazon RDS 데이터베이스에 대한 상태는 **활동 스트림이 구성 중**임을 보여줍니다.

1. (선택 사항) DB 인스턴스 링크를 선택합니다. 그런 다음 **구성** 탭을 선택합니다.

   이 **감사 정책 상태** 필드는 다음 값 중 하나를 표시합니다.
   + **잠김**
   + **잠금 해제됨**
   + **잠금 정책**
   + **잠금 해제 정책**

## AWS CLI
<a name="DBActivityStreams.Modifying-collapsible-section-E2"></a>

데이터베이스 인스턴스의 활동 스트림 상태를 수정하려면 [modify-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-activity-stream.html) AWS CLI 명령을 사용하세요.


****  

| 옵션 | 필수? | Description | 
| --- | --- | --- | 
|  `--resource-arn my-instance-ARN`  |  예  |  RDS 데이터베이스 인스턴스의 Amazon 리소스 이름(ARN)입니다.  | 
|  `--audit-policy-state`  |  아니요  |  인스턴스의 데이터베이스 활동 스트림에 대한 감사 정책의 새 상태는 `locked` 또는 `unlocked`입니다.  | 

다음 예는 *my-instance-ARN*에서 시작된 활동 스트림에 대한 감사 정책을 잠금 해제합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-activity-stream \
    --resource-arn my-instance-ARN \
    --audit-policy-state unlocked
```

Windows의 경우:

```
aws rds modify-activity-stream ^
    --resource-arn my-instance-ARN ^
    --audit-policy-state unlocked
```

다음 예에서는 *my-instance* 인스턴스를 설명합니다. 부분 샘플 출력은 감사 정책이 잠금 해제되었음을 보여줍니다.

```
aws rds describe-db-instances --db-instance-identifier my-instance

{
    "DBInstances": [
        {
            ...
            "Engine": "oracle-ee",
            ...
            "ActivityStreamStatus": "started",
            "ActivityStreamKmsKeyId": "ab12345e-1111-2bc3-12a3-ab1cd12345e",
            "ActivityStreamKinesisStreamName": "aws-rds-das-db-AB1CDEFG23GHIJK4LMNOPQRST",
            "ActivityStreamMode": "async",
            "ActivityStreamEngineNativeAuditFieldsIncluded": true, 
            "ActivityStreamPolicyStatus": "unlocked",
            ...
        }
    ]
}
```

## RDS API
<a name="DBActivityStreams.Modifying-collapsible-section-E3"></a>

데이터베이스 활동 스트림의 정책 상태를 수정하려면 [ModifyActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyActivityStream.html) 작업을 사용합니다.

아래 파라미터를 사용하여 작업을 호출하세요.
+ `AuditPolicyState`
+ `ResourceArn`

# 데이터베이스 활동 스트림 상태 가져오기
<a name="DBActivityStreams.Status"></a>

콘솔 또는 AWS CLI를 사용하여 Amazon RDS 데이터베이스 인스턴스에 대한 활동 스트림의 상태를 가져올 수 있습니다.

## 콘솔
<a name="DBActivityStreams.Status-collapsible-section-S1"></a>

**데이터베이스 활동 스트림 상태 가져오기**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 [**데이터베이스(Databases)**]를 선택하고 DB 인스턴스 링크를 선택합니다.

1. **구성** 탭을 선택하고 **Database activity stream(데이터베이스 활동 스트림)**에서 상태를 확인하십시오.

## AWS CLI
<a name="DBActivityStreams.Status-collapsible-section-S2"></a>

 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 요청에 대한 응답으로 데이터베이스 인스턴스에 대한 활동 스트림 구성을 가져올 수 있습니다.

다음 예는 *my-instance*를 설명합니다.

```
aws rds --region my-region describe-db-instances --db-instance-identifier my-db
```

다음 예에서는 JSON 응답을 보여 줍니다. 다음 필드가 표시됩니다.
+ `ActivityStreamKinesisStreamName`
+ `ActivityStreamKmsKeyId`
+ `ActivityStreamStatus`
+ `ActivityStreamMode`
+ `ActivityStreamPolicyStatus`



```
{
    "DBInstances": [
        {
            ...
            "Engine": "oracle-ee",
            ...
            "ActivityStreamStatus": "starting",
            "ActivityStreamKmsKeyId": "ab12345e-1111-2bc3-12a3-ab1cd12345e",
            "ActivityStreamKinesisStreamName": "aws-rds-das-db-AB1CDEFG23GHIJK4LMNOPQRST",
            "ActivityStreamMode": "async",
            "ActivityStreamEngineNativeAuditFieldsIncluded": true, 
            "ActivityStreamPolicyStatus": locked",
            ...
        }
    ]
}
```

## RDS API
<a name="DBActivityStreams.Status-collapsible-section-S3"></a>

 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 작업에 대한 응답으로 데이터베이스에 대한 활동 스트림 구성을 가져올 수 있습니다.

# 데이터베이스 활동 스트림 중지
<a name="DBActivityStreams.Disabling"></a>

콘솔 또는 AWS CLI를 사용하여 활동 스트림을 중지할 수 있습니다.

Amazon RDS 데이터베이스 인스턴스를 삭제하면 활동 스트림이 중지되고 기본 Amazon Kinesis 스트림이 자동으로 삭제됩니다.

## 콘솔
<a name="DBActivityStreams.Disabling-collapsible-section-D1"></a>

**활동 스트림을 끄려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 데이터베이스 활동 스트림을 중지하려는 데이터베이스를 선택하세요.

1. **작업**의 경우 **Stop activity stream(작업 스트림 중지)**을 선택합니다. **Database Activity Stream(데이터베이스 활동 스트림)** 창이 나타납니다.

   1. [**즉시(Immediately))**를 선택합니다.

      [**즉시(Immediately)**]를 선택하면 RDS 인스턴스가 바로 다시 시작됩니다. [**다음 유지 관리 기간 중(During the next maintenance window)**]을 선택하면 RDS 인스턴스는 즉시 다시 시작되지 않습니다. 이 경우 데이터베이스 활동 스트림은 다음 유지 관리 기간까지 중지되지 않습니다.

   1. [**Continue**]를 선택합니다.

## AWS CLI
<a name="DBActivityStreams.Disabling-collapsible-section-D2"></a>

데이터베이스에 대한 데이터베이스 활동 스트림을 중지하려면 AWS CLI 명령 [stop-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/stop-activity-stream.html)을 사용하여 DB 인스턴스를 구성하세요. `--region` 파라미터를 사용하여 DB 인스턴스에 대한 AWS 리전을 식별합니다. `--apply-immediately` 파라미터는 선택 항목입니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds --region MY_REGION \
    stop-activity-stream \
    --resource-arn MY_DB_ARN \
    --apply-immediately
```

Windows의 경우:

```
aws rds --region MY_REGION ^
    stop-activity-stream ^
    --resource-arn MY_DB_ARN ^
    --apply-immediately
```

## RDS API
<a name="DBActivityStreams.Disabling-collapsible-section-D3"></a>

데이터베이스에 대해 데이터베이스 활동 스트림을 중지하려면 [StopActivityStream](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_StopActivityStream.html) 작업을 사용하여 DB 인스턴스를 구성합니다. `Region` 파라미터를 사용하여 DB 인스턴스에 대한 AWS 리전을 식별합니다. `ApplyImmediately` 파라미터는 선택 항목입니다.

# 데이터베이스 활동 스트림 모니터링
<a name="DBActivityStreams.Monitoring"></a>

데이터베이스 활동 스트림은 활동을 모니터링하고 보고합니다. 활동 스트림이 수집되어 Amazon Kinesis에 전송됩니다. Kinesis에서 활동 스트림을 모니터링하거나 다른 서비스 및 애플리케이션이 추가 분석을 위해 활동 스트림을 사용할 수 있습니다. AWS CLI 명령 `describe-db-instances` 또는 RDS API `DescribeDBInstances` 작업을 사용하여 기본 Kinesis 스트림 이름을 찾을 수 있습니다.

Amazon RDS는 다음과 같이 Kinesis 스트림을 관리합니다.
+ Amazon RDS는 24시간 보존 기간으로 Kinesis 스트림을 자동으로 생성합니다.
+  Amazon RDS는 필요한 경우 Kinesis 스트림 크기를 조정합니다.
+  데이터베이스 활동 스트림을 중지하거나 DB 인스턴스를 삭제하면 Amazon RDS에서 Kinesis 스트림을 삭제합니다.

다음 활동 범주가 모니터링되고 활동 스트림 감사 로그에 기록됩니다.
+ **SQL 명령** – 모든 SQL 명령이 감사되고 PL/SQL에서 준비된 문, 내장 함수 및 함수도 제공됩니다. 저장 프로시저에 대한 호출이 감사됩니다. 저장 프로시저 또는 함수 내에서 발급된 모든 SQL 문도 감사됩니다.
+ **다른 데이터베이스 정보** – 모니터링되는 활동에는 전체 SQL 문, DML 명령의 영향을 받은 행의 행 수, 액세스된 객체 및 고유한 데이터베이스 이름이 포함됩니다. 데이터베이스 활동 스트림은 바인딩 변수와 저장 프로시저 파라미터도 모니터링합니다.
**중요**  
각 문의 전체 SQL 텍스트는 중요한 데이터를 포함하여 활동 스트림 감사 로그에 표시됩니다. 그러나 데이터베이스 사용자 암호는 다음 SQL 문에서와 같이 Oracle이 컨텍스트에서 판별할 수 있는 경우 수정됩니다.  

  ```
  ALTER ROLE role-name WITH password
  ```
+ **연결 정보** – 모니터링되는 활동에는 세션 및 네트워크 정보, 서버 프로세스 ID 및 종료 코드가 포함됩니다.

DB 인스턴스를 모니터링하는 동안 활동 스트림에 오류가 발생하면 RDS 이벤트를 통해 사용자에게 알립니다.

다음 섹션에서는 데이터베이스 활동 스트림에 액세스하고, 이를 감사 및 처리할 수 있습니다.

**Topics**
+ [Amazon Kinesis에서 활동 스트림에 액세스](DBActivityStreams.KinesisAccess.md)
+ [데이터베이스 활동 스트림에 대한 감사 로그 내용 및 예제](DBActivityStreams.AuditLog.md)
+ [데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열](DBActivityStreams.AuditLog.databaseActivityEventList.md)
+ [AWS SDK를 사용하여 데이터베이스 활동 스트림 처리](DBActivityStreams.CodeExample.md)

# Amazon Kinesis에서 활동 스트림에 액세스
<a name="DBActivityStreams.KinesisAccess"></a>

데이터베이스에 대해 활동 스트림을 활성화하면 Kinesis 스트림이 생성됩니다. Kinesis에서 데이터베이스 활동을 실시간으로 모니터링할 수 있습니다. 데이터베이스 활동을 추가 분석하려면 Kinesis 스트림을 소비자 애플리케이션에 연결하면 됩니다. 또한 IBM의 Security Guardium 또는 Imperva의 SecureSphere Database Audit and Protection과 같은 규정 준수 관리 애플리케이션에 스트림을 연결할 수 있습니다.

RDS 콘솔 또는 Kinesis 콘솔에서 Kinesis 스트림에 액세스할 수 있습니다.

**RDS 콘솔을 사용하여 Kinesis에서 활동 스트림에 액세스하는 방법**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 활동 스트림을 시작한 Amazon RDS 데이터베이스 인스턴스를 선택합니다.

1. **Configuration**(구성)을 선택합니다.

1. **데이터베이스 활동 스트림**에서 **Kinesis 스트림** 아래의 링크를 선택합니다.

1. Kinesis 콘솔에서 **모니터링**을 선택하여 데이터베이스 활동 관찰을 시작합니다.

**Kinesis 콘솔을 사용하여 Kinesis에서 활동 스트림에 액세스하는 방법**

1. [https://console.aws.amazon.com/kinesis](https://console.aws.amazon.com/kinesis)에서 Kinesis 콘솔을 엽니다.

1. Kinesis 스트림 목록에서 활동 스트림을 선택합니다.

   활동 스트림의 이름에는 접두사 `aws-rds-das-db-`와 그 뒤의 데이터베이스의 리소스 ID가 포함됩니다. 다음은 예제입니다.

   ```
   aws-rds-das-db-NHVOV4PCLWHGF52NP
   ```

   Amazon RDS 콘솔을 사용하여 데이터베이스의 리소스 ID를 찾으려면 데이터베이스 목록에서 DB 인스턴스를 선택한 다음 **구성(Configuration)** 탭을 선택합니다.

   AWS CLI를 사용하여 활동 스트림의 전체 Kinesis 스트림 이름을 찾으려면 [describe-db-instances CLI](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 요청을 사용하고 응답에서 `ActivityStreamKinesisStreamName` 값을 기록합니다.

1. 데이터베이스 활동을 관찰하려면 **모니터링**을 선택하십시오.

Amazon Kinesis 사용에 대한 자세한 내용은 [Amazon Kinesis Data Streams이란 무엇입니까?](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)를 참조하십시오.

# 데이터베이스 활동 스트림에 대한 감사 로그 내용 및 예제
<a name="DBActivityStreams.AuditLog"></a>

모니터링되는 이벤트는 데이터베이스 활동 스트림에 JSON 문자열로 표시됩니다. 구조는 `DatabaseActivityMonitoringRecord`를 포함하는 JSON 객체로 구성되며, 여기에는 `databaseActivityEventList` 활동 이벤트 배열이 포함됩니다.

**참고**  
데이터베이스 활동 스트림의 경우 `paramList` JSON 배열에는 최대 절전 모드 애플리케이션의 null 값이 포함되지 않습니다.

**Topics**
+ [활동 스트림 감사 로그 예제](#DBActivityStreams.AuditLog.Examples)
+ [DatabaseActivityMonitoringRecords JSON 객체](#DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords)
+ [databaseActivityEvents JSON 객체](#DBActivityStreams.AuditLog.databaseActivityEvents)

## 활동 스트림 감사 로그 예제
<a name="DBActivityStreams.AuditLog.Examples"></a>

다음은 활동 이벤트 레코드의 해독된 JSON 감사 로그 샘플입니다.

**Example CONNECT SQL 문 의 활동 이벤트 레코드**  
다음 활동 이벤트 레코드는 Oracle DB의 JDBC 씬 클라이언트(`clientApplication`)에서 `CONNECT` SQL 문(`command`)을 사용하여 로그인한 것을 보여줍니다.  

```
{
    "class": "Standard",
    "clientApplication": "JDBC Thin Client",
    "command": "LOGON",
    "commandText": null,
    "dbid": "0123456789",
    "databaseName": "ORCL",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:15:36.233787",
    "netProtocol": "tcp",
    "objectName": null,
    "objectType": null,
    "paramList": [],
    "pid": 17904,
    "remoteHost": "123.456.789.012",
    "remotePort": "25440",
    "rowCount": null,
    "serverHost": "987.654.321.098",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 987654321,
    "startTime": null,
    "statementId": 1,
    "substatementId": null,
    "transactionId": "0000000000000000",
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": "CREATE SESSION",
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DBID": 123456789
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((ADDRESS\u003d(PROTOCOL\u003dtcp)(HOST\u003d205.251.233.183)(PORT\u003d25440))));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "a1b2c3d4e5f6.amazon.com",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "unknown",
        "OS_USERNAME": "sumepate",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 1,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5124715
    }
}
```
다음 활동 이벤트 레코드는 SQL Server DB의 로그인 실패를 보여줍니다.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "LOGIN",
            "clientApplication": "Microsoft SQL Server Management Studio",
            "command": "LOGIN FAILED",
            "commandText": "Login failed for user 'test'. Reason: Password did not match that for the login provided. [CLIENT: local-machine]",
            "databaseName": "",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 0,
            "logTime": "2022-10-06 21:34:42.7113072+00",
            "netProtocol": null,
            "objectName": "",
            "objectType": "LOGIN",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 0,
            "startTime": null,
            "statementId": "0x1eb0d1808d34a94b9d3dcf5432750f02",
            "substatementId": 1,
            "transactionId": "0",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 0,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "",
                "target_server_principal_name": "",
                "schema_name": "",
                "is_column_permission": false,
                "object_id": 0,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "<action_info "xmlns=\"http://schemas.microsoft.com/sqlserver/2008/sqlaudit_data\"><pooled_connection>0</pooled_connection><error>0x00004818</error><state>8</state><address>local machine</address><PasswordFirstNibbleHash>B</PasswordFirstNibbleHash></action_info>"-->,
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000000",
                "data_sensitivity_information": "",
                "session_server_principal_name": "",
                "connection_id": "98B4F537-0F82-49E3-AB08-B9D33B5893EF",
                "audit_schema_version": 1,
                "database_principal_id": 0,
                "server_principal_sid": null,
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```
데이터베이스 활동 스트림이 활성화되지 않은 경우 JSON 문서의 마지막 필드는 `"engineNativeAuditFields": { }`입니다.

**Example CREATE TABLE 문의 활동 이벤트 레코드**  
다음 예시는 Oracle 데이터베이스에 대한 `CREATE TABLE` 이벤트를 보여줍니다.  

```
{
    "class": "Standard",
    "clientApplication": "sqlplus@ip-12-34-5-678 (TNS V1-V3)",
    "command": "CREATE TABLE",
    "commandText": "CREATE TABLE persons(\n    person_id NUMBER GENERATED BY DEFAULT AS IDENTITY,\n    first_name VARCHAR2(50) NOT NULL,\n    last_name VARCHAR2(50) NOT NULL,\n    PRIMARY KEY(person_id)\n)",
    "dbid": "0123456789",
    "databaseName": "ORCL",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:22:49.535239",
    "netProtocol": "beq",
    "objectName": "PERSONS",
    "objectType": "TEST",
    "paramList": [],
    "pid": 17687,
    "remoteHost": "123.456.789.0",
    "remotePort": null,
    "rowCount": null,
    "serverHost": "987.654.321.01",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 1234567890,
    "startTime": null,
    "statementId": 43,
    "substatementId": null,
    "transactionId": "090011007F0D0000",
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": "CREATE SEQUENCE, CREATE TABLE",
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((PROTOCOL\u003dbeq)(HOST\u003d123.456.789.0)));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "ip-10-13-0-122",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "pts/1",
        "OS_USERNAME": "rdsdb",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 12,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5133083
    }
}
```
다음 예시는 SQL Server 데이터베이스의 `CREATE TABLE` 이벤트를 보여줍니다.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "SCHEMA",
            "clientApplication": "Microsoft SQL Server Management Studio - Query",
            "command": "ALTER",
            "commandText": "Create table [testDB].[dbo].[TestTable2](\r\ntextA varchar(6000),\r\n    textB varchar(6000)\r\n)",
            "databaseName": "testDB",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 1,
            "logTime": "2022-10-06 21:44:38.4120677+00",
            "netProtocol": null,
            "objectName": "dbo",
            "objectType": "SCHEMA",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 84,
            "startTime": null,
            "statementId": "0x5178d33d56e95e419558b9607158a5bd",
            "substatementId": 1,
            "transactionId": "4561864",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 2,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "dbo",
                "target_server_principal_name": "",
                "schema_name": "",
                "is_column_permission": false,
                "object_id": 1,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "",
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000000",
                "data_sensitivity_information": "",
                "session_server_principal_name": "test",
                "connection_id": "EE1FE3FD-EF2C-41FD-AF45-9051E0CD983A",
                "audit_schema_version": 1,
                "database_principal_id": 1,
                "server_principal_sid": "0x010500000000000515000000bdc2795e2d0717901ba6998cf4010000",
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```

**Example SELECT 문의 활동 이벤트 레코드**  
다음 예시는 Oracle DB에 대한 `SELECT` 이벤트를 보여줍니다.  

```
{
    "class": "Standard",
    "clientApplication": "sqlplus@ip-12-34-5-678 (TNS V1-V3)",
    "command": "SELECT",
    "commandText": "select count(*) from persons",
    "databaseName": "1234567890",
    "dbProtocol": "oracle",
    "dbUserName": "TEST",
    "endTime": null,
    "errorMessage": null,
    "exitCode": 0,
    "logTime": "2021-01-15 00:25:18.850375",
    "netProtocol": "beq",
    "objectName": "PERSONS",
    "objectType": "TEST",
    "paramList": [],
    "pid": 17687,
    "remoteHost": "123.456.789.0",
    "remotePort": null,
    "rowCount": null,
    "serverHost": "987.654.321.09",
    "serverType": "oracle",
    "serverVersion": "19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3",
    "serviceName": "oracle-ee",
    "sessionId": 1080639707,
    "startTime": null,
    "statementId": 44,
    "substatementId": null,
    "transactionId": null,
    "engineNativeAuditFields": {
        "UNIFIED_AUDIT_POLICIES": "TEST_POL_EVERYTHING",
        "FGA_POLICY_NAME": null,
        "DV_OBJECT_STATUS": null,
        "SYSTEM_PRIVILEGE_USED": null,
        "OLS_LABEL_COMPONENT_TYPE": null,
        "XS_SESSIONID": null,
        "ADDITIONAL_INFO": null,
        "INSTANCE_ID": 1,
        "DV_COMMENT": null,
        "RMAN_SESSION_STAMP": null,
        "NEW_NAME": null,
        "DV_ACTION_NAME": null,
        "OLS_PROGRAM_UNIT_NAME": null,
        "OLS_STRING_LABEL": null,
        "RMAN_SESSION_RECID": null,
        "OBJECT_PRIVILEGES": null,
        "OLS_OLD_VALUE": null,
        "XS_TARGET_PRINCIPAL_NAME": null,
        "XS_NS_ATTRIBUTE": null,
        "XS_NS_NAME": null,
        "DBLINK_INFO": null,
        "AUTHENTICATION_TYPE": "(TYPE\u003d(DATABASE));(CLIENT ADDRESS\u003d((PROTOCOL\u003dbeq)(HOST\u003d123.456.789.0)));",
        "OBJECT_EDITION": null,
        "OLS_PRIVILEGES_GRANTED": null,
        "EXCLUDED_USER": null,
        "DV_ACTION_OBJECT_NAME": null,
        "OLS_LABEL_COMPONENT_NAME": null,
        "EXCLUDED_SCHEMA": null,
        "DP_TEXT_PARAMETERS1": null,
        "XS_USER_NAME": null,
        "XS_ENABLED_ROLE": null,
        "XS_NS_ATTRIBUTE_NEW_VAL": null,
        "DIRECT_PATH_NUM_COLUMNS_LOADED": null,
        "AUDIT_OPTION": null,
        "DV_EXTENDED_ACTION_CODE": null,
        "XS_PACKAGE_NAME": null,
        "OLS_NEW_VALUE": null,
        "DV_RETURN_CODE": null,
        "XS_CALLBACK_EVENT_TYPE": null,
        "USERHOST": "ip-12-34-5-678",
        "GLOBAL_USERID": null,
        "CLIENT_IDENTIFIER": null,
        "RMAN_OPERATION": null,
        "TERMINAL": "pts/1",
        "OS_USERNAME": "rdsdb",
        "OLS_MAX_READ_LABEL": null,
        "XS_PROXY_USER_NAME": null,
        "XS_DATASEC_POLICY_NAME": null,
        "DV_FACTOR_CONTEXT": null,
        "OLS_MAX_WRITE_LABEL": null,
        "OLS_PARENT_GROUP_NAME": null,
        "EXCLUDED_OBJECT": null,
        "DV_RULE_SET_NAME": null,
        "EXTERNAL_USERID": null,
        "EXECUTION_ID": null,
        "ROLE": null,
        "PROXY_SESSIONID": 0,
        "DP_BOOLEAN_PARAMETERS1": null,
        "OLS_POLICY_NAME": null,
        "OLS_GRANTEE": null,
        "OLS_MIN_WRITE_LABEL": null,
        "APPLICATION_CONTEXTS": null,
        "XS_SCHEMA_NAME": null,
        "DV_GRANTEE": null,
        "XS_COOKIE": null,
        "DBPROXY_USERNAME": null,
        "DV_ACTION_CODE": null,
        "OLS_PRIVILEGES_USED": null,
        "RMAN_DEVICE_TYPE": null,
        "XS_NS_ATTRIBUTE_OLD_VAL": null,
        "TARGET_USER": null,
        "XS_ENTITY_TYPE": null,
        "ENTRY_ID": 13,
        "XS_PROCEDURE_NAME": null,
        "XS_INACTIVITY_TIMEOUT": null,
        "RMAN_OBJECT_TYPE": null,
        "SYSTEM_PRIVILEGE": null,
        "NEW_SCHEMA": null,
        "SCN": 5136972
    }
}
```
다음 예시는 SQL Server DB에 대한 `SELECT` 이벤트를 보여줍니다.  

```
{
    "type": "DatabaseActivityMonitoringRecord",
    "clusterId": "",
    "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q",
    "databaseActivityEventList": [
        {
            "class": "TABLE",
            "clientApplication": "Microsoft SQL Server Management Studio - Query",
            "command": "SELECT",
            "commandText": "select * from [testDB].[dbo].[TestTable]",
            "databaseName": "testDB",
            "dbProtocol": "SQLSERVER",
            "dbUserName": "test",
            "endTime": null,
            "errorMessage": null,
            "exitCode": 1,
            "logTime": "2022-10-06 21:24:59.9422268+00",
            "netProtocol": null,
            "objectName": "TestTable",
            "objectType": "TABLE",
            "paramList": null,
            "pid": null,
            "remoteHost": "local machine",
            "remotePort": null,
            "rowCount": 0,
            "serverHost": "172.31.30.159",
            "serverType": "SQLSERVER",
            "serverVersion": "15.00.4073.23.v1.R1",
            "serviceName": "sqlserver-ee",
            "sessionId": 62,
            "startTime": null,
            "statementId": "0x03baed90412f564fad640ebe51f89b99",
            "substatementId": 1,
            "transactionId": "4532935",
            "type": "record",
            "engineNativeAuditFields": {
                "target_database_principal_id": 0,
                "target_server_principal_id": 0,
                "target_database_principal_name": "",
                "server_principal_id": 2,
                "user_defined_information": "",
                "response_rows": 0,
                "database_principal_name": "dbo",
                "target_server_principal_name": "",
                "schema_name": "dbo",
                "is_column_permission": true,
                "object_id": 581577110,
                "server_instance_name": "EC2AMAZ-NFUJJNO",
                "target_server_principal_sid": null,
                "additional_information": "",
                "duration_milliseconds": 0,
                "permission_bitmask": "0x00000000000000000000000000000001",
                "data_sensitivity_information": "",
                "session_server_principal_name": "test",
                "connection_id": "AD3A5084-FB83-45C1-8334-E923459A8109",
                "audit_schema_version": 1,
                "database_principal_id": 1,
                "server_principal_sid": "0x010500000000000515000000bdc2795e2d0717901ba6998cf4010000",
                "user_defined_event_id": 0,
                "host_name": "EC2AMAZ-NFUJJNO"
            }
        }
    ]
}
```

## DatabaseActivityMonitoringRecords JSON 객체
<a name="DBActivityStreams.AuditLog.DatabaseActivityMonitoringRecords"></a>

데이터베이스 작업 이벤트 레코드는 다음 정보가 포함된 JSON 객체에 있습니다.


****  

| JSON 필드 | 데이터 형식 | 설명 | 
| --- | --- | --- | 
|  `type`  | string |  JSON 레코드 형식입니다. 이 값은 `DatabaseActivityMonitoringRecords`입니다.  | 
| version | string |  데이터베이스 작업 모니터링 레코드의 버전입니다. Oracle DB는 버전 1.3을 사용하고 SQL Server는 버전 1.4를 사용합니다. 이러한 엔진 버전에는 engineNativeAuditFields JSON 객체가 도입됩니다.  | 
|  [databaseActivityEvents](#DBActivityStreams.AuditLog.databaseActivityEvents)  | 문자열 |  작업 이벤트를 포함하는 JSON 객체입니다.  | 
| 키 | 문자열 | [databaseActivityEventList JSON 배열](DBActivityStreams.AuditLog.databaseActivityEventList.md)를 해독하는 데 사용되는 암호화 키  | 

## databaseActivityEvents JSON 객체
<a name="DBActivityStreams.AuditLog.databaseActivityEvents"></a>

`databaseActivityEvents` JSON 객체에는 다음과 같은 정보가 포함되어 있습니다.

### JSON 레코드의 최상위 필드
<a name="DBActivityStreams.AuditLog.topLevel"></a>

 감사 로그의 각 이벤트는 JSON 형식의 레코드 내에 래핑됩니다. 이 레코드에는 다음 필드가 포함되어 있습니다.

**type**  
 이 필드는 항상 값이 `DatabaseActivityMonitoringRecords`입니다.

**version**  
 이 필드는 데이터베이스 활동 스트림 데이터 프로토콜 또는 계약 버전을 나타냅니다. 이는 사용 가능한 필드를 정의합니다.

**databaseActivityEvents**  
 하나 이상의 활동 이벤트를 나타내는 암호화된 문자열입니다. base64 바이트 배열로 표현됩니다. 문자열을 해독하면 결과는 이 단원의 예제와 같이 필드가 있는 JSON 형식의 레코드입니다.

**키**  
 `databaseActivityEvents` 문자열을 암호화하는 데 사용되는 암호화된 데이터 키입니다. 이 키는 데이터베이스 활동 스트림을 시작할 때 제공한 AWS KMS key와(과) 동일합니다.

 다음 예제에서는 이 레코드의 형식을 보여줍니다.

```
{
  "type":"DatabaseActivityMonitoringRecords",
  "version":"1.3",
  "databaseActivityEvents":"encrypted audit records",
  "key":"encrypted key"
}
```

```
           "type":"DatabaseActivityMonitoringRecords",
           "version":"1.4",
           "databaseActivityEvents":"encrypted audit records",
           "key":"encrypted key"
```

`databaseActivityEvents` 필드의 내용을 해독하려면 다음 단계를 수행합니다.

1.  데이터베이스 활동 스트림을 시작할 때 제공한 키를 사용하여 `key` JSON 필드의 값을 복호화합니다. 이렇게 하면 데이터 암호화 키가 일반 텍스트로 반환됩니다.

1.  Base64로 `databaseActivityEvents` JSON 필드의 값을 디코딩하여 감사 페이로드의 암호화 텍스트를 이진 형식으로 가져옵니다.

1.  첫 번째 단계에서 디코딩한 데이터 암호화 키를 사용하여 이진 암호화 텍스트를 해독합니다.

1.  해독된 페이로드의 압축을 풉니다.
   +  암호화된 페이로드가 `databaseActivityEvents` 필드에 있습니다.
   +  `databaseActivityEventList` 필드에는 감사 레코드 배열이 포함되어 있습니다. 배열의 `type` 필드는 `record` 또는 `heartbeat`일 수 있습니다.

감사 로그 활동 이벤트 레코드는 다음 정보가 포함된 JSON 객체입니다.


****  

| JSON 필드 | 데이터 형식 | 설명 | 
| --- | --- | --- | 
|  `type`  | string |  JSON 레코드 형식입니다. 이 값은 `DatabaseActivityMonitoringRecord`입니다.  | 
| instanceId | string | DB 인스턴스 리소스 식별자입니다. DB 인스턴스 속성 DbiResourceId에 해당합니다. | 
|  [databaseActivityEventList JSON 배열](DBActivityStreams.AuditLog.databaseActivityEventList.md)   | string |  활동 감사 레코드 또는 하트비트 메시지의 배열입니다.  | 

# 데이터베이스 활동 스트림에 대한 databaseActivityEventList JSON 배열
<a name="DBActivityStreams.AuditLog.databaseActivityEventList"></a>

감사 로그 페이로드는 암호화된 `databaseActivityEventList` JSON 배열입니다. 다음 표에는 감사 로그의 복호화된 `DatabaseActivityEventList` 배열에 있는 각 활동 이벤트의 필드가 알파벳 순으로 나열되어 있습니다. 

Oracle 데이터베이스에서 통합 감사가 활성화된 경우 이 새 감사 추적에 감사 레코드가 채워집니다. `UNIFIED_AUDIT_TRAIL` 보기는 감사 추적에서 감사 레코드를 검색하여 감사 레코드를 테이블 형식으로 표시합니다. 데이터베이스 활동 스트림을 시작하려면 `UNIFIED_AUDIT_TRAIL`의 열이 `databaseActivityEventList` 배열의 필드에 매핑됩니다.

**중요**  
이벤트 구조는 변경될 수 있습니다. Amazon RDS는 향후 활동 이벤트에 새 필드를 추가할 수 있습니다. JSON 데이터를 구문 분석하는 애플리케이션에서 코드는 알 수 없는 필드 이름에 대해 무시할 수 있는지 또는 적절한 작업을 수행할 수 있는지 확인합니다.

## Amazon RDS for Oracle에 대한 databaseActivityEventList 필드
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.ro"></a>

Amazon RDS for Oracle에 대한 `databaseActivityEventList` 필드는 다음과 같습니다.


| 필드 | 데이터 형식 | 소스 | 설명 | 
| --- | --- | --- | --- | 
|  `class`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `AUDIT_TYPE` 열  |  활동 이벤트의 클래스입니다. 이는 `UNIFIED_AUDIT_TRAIL` 보기의 `AUDIT_TYPE` 열에 해당합니다. Amazon RDS for Oracle에 대한 유효한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html) 자세한 내용은 Oracle 문서의 [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/UNIFIED_AUDIT_TRAIL.html#GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D)을 참조하세요.  | 
|  `clientApplication`  |  string  |  `CLIENT_PROGRAM_NAME`의 `UNIFIED_AUDIT_TRAIL`  |  클라이언트가 보고한 대로 클라이언트가 연결에 사용한 애플리케이션입니다. 클라이언트는 이 정보를 제공할 필요가 없으므로 값은 null일 수 있습니다. 샘플 값은 `JDBC Thin Client`입니다.  | 
|  `command`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `ACTION_NAME` 열  |  사용자가 실행한 작업 이름입니다. 전체 작업을 이해하려면 명령 이름과 `AUDIT_TYPE` 값을 숙지합니다. 샘플 값은 `ALTER DATABASE`입니다.  | 
|  `commandText`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `SQL_TEXT` 열  |  이벤트와 연결된 SQL 문 샘플 값은 `ALTER DATABASE BEGIN BACKUP`입니다.  | 
|  `databaseName`  |  string  |  `V$DATABASE`의 `NAME` 열  |  데이터베이스의 이름입니다.  | 
|  `dbid`  |  숫자  |  `UNIFIED_AUDIT_TRAIL`의 `DBID` 열  |  데이터베이스의 숫자 식별자입니다. 샘플 값은 `1559204751`입니다.  | 
|  `dbProtocol`  |  string  |  해당 사항 없음  |  데이터베이스 프로토콜. 이 베타에서 값은 `oracle`입니다.  | 
|  `dbUserName`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `DBUSERNAME` 열  |  작업이 감사된 데이터베이스 사용자의 이름입니다. 샘플 값은 `RDSADMIN`입니다.  | 
|  `endTime`  |  string  |  해당 사항 없음  |  이 필드는 RDS for Oracle에 사용되지 않으며 항상 null입니다.  | 
|  `engineNativeAuditFields`  |  객체  |  `UNIFIED_AUDIT_TRAIL`  |  기본적으로 이 객체는 비어 있습니다. `--engine-native-audit-fields-included` 옵션을 사용하여 활동 스트림을 시작하면 이 객체에는 다음과 같은 열과 값이 포함됩니다. <pre>ADDITIONAL_INFO<br />APPLICATION_CONTEXTS<br />AUDIT_OPTION<br />AUTHENTICATION_TYPE<br />CLIENT_IDENTIFIER<br />CURRENT_USER<br />DBLINK_INFO<br />DBPROXY_USERNAME<br />DIRECT_PATH_NUM_COLUMNS_LOADED<br />DP_BOOLEAN_PARAMETERS1<br />DP_TEXT_PARAMETERS1<br />DV_ACTION_CODE<br />DV_ACTION_NAME<br />DV_ACTION_OBJECT_NAME<br />DV_COMMENT<br />DV_EXTENDED_ACTION_CODE<br />DV_FACTOR_CONTEXT<br />DV_GRANTEE<br />DV_OBJECT_STATUS<br />DV_RETURN_CODE<br />DV_RULE_SET_NAME<br />ENTRY_ID<br />EXCLUDED_OBJECT<br />EXCLUDED_SCHEMA<br />EXCLUDED_USER<br />EXECUTION_ID<br />EXTERNAL_USERID<br />FGA_POLICY_NAME<br />GLOBAL_USERID<br />INSTANCE_ID<br />KSACL_SERVICE_NAME<br />KSACL_SOURCE_LOCATION<br />KSACL_USER_NAME<br />NEW_NAME<br />NEW_SCHEMA<br />OBJECT_EDITION<br />OBJECT_PRIVILEGES<br />OLS_GRANTEE<br />OLS_LABEL_COMPONENT_NAME<br />OLS_LABEL_COMPONENT_TYPE<br />OLS_MAX_READ_LABEL<br />OLS_MAX_WRITE_LABEL<br />OLS_MIN_WRITE_LABEL<br />OLS_NEW_VALUE<br />OLS_OLD_VALUE<br />OLS_PARENT_GROUP_NAME<br />OLS_POLICY_NAME<br />OLS_PRIVILEGES_GRANTED<br />OLS_PRIVILEGES_USED<br />OLS_PROGRAM_UNIT_NAME<br />OLS_STRING_LABEL<br />OS_USERNAME<br />PROTOCOL_ACTION_NAME<br />PROTOCOL_MESSAGE<br />PROTOCOL_RETURN_CODE<br />PROTOCOL_SESSION_ID<br />PROTOCOL_USERHOST<br />PROXY_SESSIONID<br />RLS_INFO<br />RMAN_DEVICE_TYPE<br />RMAN_OBJECT_TYPE<br />RMAN_OPERATION<br />RMAN_SESSION_RECID<br />RMAN_SESSION_STAMP<br />ROLE<br />SCN<br />SYSTEM_PRIVILEGE<br />SYSTEM_PRIVILEGE_USED<br />TARGET_USER<br />TERMINAL<br />UNIFIED_AUDIT_POLICIES<br />USERHOST<br />XS_CALLBACK_EVENT_TYPE<br />XS_COOKIE<br />XS_DATASEC_POLICY_NAME<br />XS_ENABLED_ROLE<br />XS_ENTITY_TYPE<br />XS_INACTIVITY_TIMEOUT<br />XS_NS_ATTRIBUTE<br />XS_NS_ATTRIBUTE_NEW_VAL<br />XS_NS_ATTRIBUTE_OLD_VAL<br />XS_NS_NAME<br />XS_PACKAGE_NAME<br />XS_PROCEDURE_NAME<br />XS_PROXY_USER_NAME<br />XS_SCHEMA_NAME<br />XS_SESSIONID<br />XS_TARGET_PRINCIPAL_NAME<br />XS_USER_NAME</pre> 자세한 내용은 Oracle 데이터베이스 문서의 [UNIFIED\$1AUDIT\$1TRAIL](https://docs.oracle.com/database/121/REFRN/GUID-B7CE1C02-2FD4-47D6-80AA-CF74A60CDD1D.htm#REFRN29162)을 참조하세요.  | 
|  `errorMessage`  |  string  |  해당 사항 없음  |  이 필드는 RDS for Oracle에 사용되지 않으며 항상 null입니다.  | 
|  `exitCode`  |  숫자  |  `UNIFIED_AUDIT_TRAIL`의 `RETURN_CODE` 열  |  작업으로 인해 생성된 Oracle 데이터베이스 오류 코드입니다. 작업이 성공한 경우 값은 `0`입니다.  | 
|  `logTime`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `EVENT_TIMESTAMP_UTC` 열  |  감사 추적 항목 작성에 대한 타임스탬프입니다. 샘플 값은 `2020-11-27 06:56:14.981404`입니다.  | 
|  `netProtocol`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `AUTHENTICATION_TYPE` 열  |  네트워크 통신 프로토콜. 샘플 값은 `TCP`입니다.  | 
|  `objectName`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `OBJECT_NAME` 열  |  작업의 영향을 받는 객체의 이름입니다. 샘플 값은 `employees`입니다.  | 
|  `objectType`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `OBJECT_SCHEMA` 열  |  작업의 영향을 받는 객체의 스키마 이름입니다. 샘플 값은 `hr`입니다.  | 
|  `paramList`  |  목록  |  `UNIFIED_AUDIT_TRAIL`의 `SQL_BINDS` 열  |  해당되는 경우 `SQL_TEXT`와 관련된 경우 바인딩 변수 목록입니다. 샘플 값은 `parameter_1,parameter_2`입니다.  | 
|  `pid`  |  숫자  |  `UNIFIED_AUDIT_TRAIL`의 `OS_PROCESS` 열  |  Oracle 데이터베이스 프로세스의 운영 체제 프로세스 식별자입니다. 샘플 값은 `22396`입니다.  | 
|  `remoteHost`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `AUTHENTICATION_TYPE` 열  |  세션을 생성한 호스트의 클라이언트 IP 주소 또는 클라이언트 이름입니다. 샘플 값은 `123.456.789.123`입니다.  | 
|  `remotePort`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `AUTHENTICATION_TYPE` 열  |  클라이언트 포트 번호. Oracle 데이터베이스 환경의 일반적인 값은 `1521`입니다.  | 
|  `rowCount`  |  숫자  |  해당 사항 없음  |  이 필드는 RDS for Oracle에 사용되지 않으며 항상 null입니다.  | 
|  `serverHost`  |  string  |  데이터베이스 호스트  |  데이터베이스 서버 호스트 IP 주소. 샘플 값은 `123.456.789.123`입니다.  | 
|  `serverType`  |  string  |  해당 사항 없음  |  데이터베이스 서버 유형입니다. 이 값은 항상 `ORACLE`입니다.  | 
|  `serverVersion`  |  string  |  데이터베이스 호스트  |  Amazon RDS for Oracle 버전, RU(릴리스 업데이트) 및 RUR(릴리스 업데이트 버전) 샘플 값은 `19.0.0.0.ru-2020-01.rur-2020-01.r1.EE.3`입니다.  | 
|  `serviceName`  |  string  |  데이터베이스 호스트  |  서비스의 이름입니다. 샘플 값은 `oracle-ee`입니다.  | 
|  `sessionId`  |  숫자  |  `UNIFIED_AUDIT_TRAIL`의 `SESSIONID` 열  |  감사의 세션 식별자입니다. 예를 들면, `1894327130`입니다.  | 
|  `startTime`  |  string  |  해당 사항 없음  |  이 필드는 RDS for Oracle에 사용되지 않으며 항상 null입니다.  | 
|  `statementId`  |  숫자  |  `UNIFIED_AUDIT_TRAIL`의 `STATEMENT_ID` 열  |  각 문 실행에 대한 숫자 ID입니다. 문은 많은 작업을 일으킬 수 있습니다. 샘플 값은 `142197`입니다.  | 
|  `substatementId`  |  해당 사항 없음  |  해당 사항 없음  |  이 필드는 RDS for Oracle에 사용되지 않으며 항상 null입니다.  | 
|  `transactionId`  |  string  |  `UNIFIED_AUDIT_TRAIL`의 `TRANSACTION_ID` 열  |  객체가 수정된 트랜잭션의 식별자입니다. 샘플 값은 `02000800D5030000`입니다.  | 

## Amazon RDS for SQL Server에 대한 databaseActivityEventList 필드
<a name="DBActivityStreams.AuditLog.databaseActivityEventList.rss"></a>

Amazon RDS for SQL Server에 대한 `databaseActivityEventList` 필드는 다음과 같습니다.


| 필드 | 데이터 형식 | 소스 | 설명 | 
| --- | --- | --- | --- | 
|  `class`  |  문자열  |  ` sys.fn_get_audit_file.class_type`이 `sys.dm_audit_class_type_map.class_type_desc`에 매핑됨  |  활동 이벤트의 클래스입니다. 자세한 내용은 Microsoft 설명서의 [SQL Server Audit(데이터베이스 엔진)](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16)를 참조하세요.  | 
|  `clientApplication`  |  문자열  |  `sys.fn_get_audit_file.application_name`  |  클라이언트가 보고한 대로 클라이언트가 연결하는 애플리케이션(SQL Server 버전 14 이상). SQL Server 버전 13에서는 이 필드가 null입니다.  | 
|  `command`  |  문자열  |  `sys.fn_get_audit_file.action_id`이 `sys.dm_audit_actions.name`에 매핑됨  |  SQL 문의 일반 범주입니다. 이 필드의 값은 클래스의 값에 따라 달라집니다.  | 
|  `commandText`  |  문자열  |  `sys.fn_get_audit_file.statement`  |  이 필드는 SQL 문을 나타냅니다.  | 
|  `databaseName`  |  문자열  |  `sys.fn_get_audit_file.database_name`  |  데이터베이스 이름  | 
|  `dbProtocol`  |  문자열  |  해당 사항 없음  |  데이터베이스 프로토콜. 이 값은 `SQLSERVER`입니다.  | 
|  `dbUserName`  |  문자열  |  `sys.fn_get_audit_file.server_principal_name`  |  클라이언트 인증을 위한 데이터베이스 사용자.  | 
|  `endTime`  |  문자열  |  해당 사항 없음  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `engineNativeAuditFields`  |  객체  |  `sys.fn_get_audit_file`에서 이 열에 나열되지 않은 각 필드.  |  기본적으로 이 객체는 비어 있습니다. `--engine-native-audit-fields-included` 옵션을 사용하여 활동 스트림을 시작하면 이 객체에는 이 JSON 맵에서 반환되지 않는 다른 네이티브 엔진 감사 필드가 포함됩니다.  | 
|  `errorMessage`  |  문자열  |  해당 사항 없음  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `exitCode`  |  정수  |  `sys.fn_get_audit_file.succeeded`  |  이벤트를 시작한 작업의 성공 여부를 나타냅니다. 이 필드는 null일 수 없습니다. 로그인 이벤트를 제외한 모든 이벤트의 경우 이 필드는 권한 검사의 성공 또는 실패 여부를 보고하지만 작업의 성공 또는 실패 여부는 보고하지 않습니다. 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
|  `logTime`  |  문자열  |  `sys.fn_get_audit_file.event_time`  |  SQL Server에서 기록되는 이벤트 타임스탬프입니다.  | 
|  `netProtocol`  |  문자열  |  해당 사항 없음  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `objectName`  |  문자열  |  `sys.fn_get_audit_file.object_name`  |  SQL 문이 하나의 객체에서 작동하는 경우 데이터베이스 객체의 이름.  | 
|  `objectType`  |  문자열  |  `sys.fn_get_audit_file.class_type`이 `sys.dm_audit_class_type_map.class_type_desc`에 매핑됨  |  SQL 문이 하나의 객체 유형에서 작동하는 경우 데이터베이스 객체의 유형.  | 
|  `paramList`  |  문자열  |  해당 사항 없음  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `pid`  |  정수  |  N/A  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `remoteHost`  |  문자열  |  `sys.fn_get_audit_file.client_ip`  |  SQL 문을 실행한 클라이언트의 IP 주소 또는 호스트 이름(SQL Server 버전 14 이상). SQL Server 버전 13에서는 이 필드가 null입니다.  | 
|  `remotePort`  |  정수  |  N/A  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `rowCount`  |  정수  |  `sys.fn_get_audit_file.affected_rows`  |  SQL 문에 의해 영향을 받는 테이블 행 수(SQL Server 버전 14 이상). 이 필드는 SQL Server 버전 13에 있습니다.  | 
|  `serverHost`  |  문자열  |  데이터베이스 호스트  |  호스트 데이터베이스 서버의 IP 주소.  | 
|  `serverType`  |  문자열  |  해당 사항 없음  |  데이터베이스 서버 유형입니다. 이 값은 `SQLSERVER`입니다.  | 
|  `serverVersion`  |  문자열  |  데이터베이스 호스트  |  데이터베이스 서버 버전(예: SQL Server 2017의 경우 15.00.4073.23.v1.R1)  | 
|  `serviceName`  |  문자열  |  데이터베이스 호스트  |  서비스의 이름입니다. 예시 값은 `sqlserver-ee`입니다.  | 
|  `sessionId`  |  정수  |  `sys.fn_get_audit_file.session_id`  |  세션의 고유 식별자.  | 
|  `startTime`  |  문자열  |  해당 사항 없음  |  이 필드는 Amazon RDS for SQL Server에서 사용되지 않으며 값은 null입니다.  | 
|  `statementId`  |  문자열  |  `sys.fn_get_audit_file.sequence_group_id`  |  클라이언트의 SQL 문에 대한 고유 식별자. 생성되는 이벤트마다 식별자가 다릅니다. 샘플 값은 `0x38eaf4156267184094bb82071aaab644`입니다.  | 
|  `substatementId`  |  정수  |  `sys.fn_get_audit_file.sequence_number`  |  문의 시퀀스 번호를 결정하는 식별자. 이 식별자는 대용량 레코드를 여러 레코드로 분할할 때 유용합니다.  | 
|  `transactionId`  |  정수  |  `sys.fn_get_audit_file.transaction_id`  |  트랜잭션의 식별자. 활성 트랜잭션이 없으면 값은 0입니다.  | 
|  `type`  |  문자열  |  데이터베이스 활동 스트림 생성됨  |  이벤트의 유형입니다. 값은 `record` 또는 `heartbeat`입니다.  | 

# AWS SDK를 사용하여 데이터베이스 활동 스트림 처리
<a name="DBActivityStreams.CodeExample"></a>

AWS SDK를 사용하여 프로그래밍 방식으로 활동 스트림을 처리할 수 ​​있습니다. 다음은 제대로 작동하는 Java 및 Python 예시로, 인스턴스 기반 활성화를 위해 데이터베이스 활동 스트림을 사용하는 방법을 보여줍니다.

------
#### [ Java ]

```
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.zip.GZIPInputStream;

import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.encryptionsdk.AwsCrypto;
import com.amazonaws.encryptionsdk.CryptoInputStream;
import com.amazonaws.encryptionsdk.jce.JceMasterKey;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.InvalidStateException;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException;
import com.amazonaws.services.kinesis.clientlibrary.exceptions.ThrottlingException;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessor;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorCheckpointer;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker.Builder;
import com.amazonaws.services.kinesis.model.Record;
import com.amazonaws.services.kms.AWSKMS;
import com.amazonaws.services.kms.AWSKMSClientBuilder;
import com.amazonaws.services.kms.model.DecryptRequest;
import com.amazonaws.services.kms.model.DecryptResult;
import com.amazonaws.util.Base64;
import com.amazonaws.util.IOUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class DemoConsumer {

    private static final String STREAM_NAME = "aws-rds-das-[instance-external-resource-id]"; // aws-rds-das-db-ABCD123456
    private static final String APPLICATION_NAME = "AnyApplication"; //unique application name for dynamo table generation that holds kinesis shard tracking
    private static final String AWS_ACCESS_KEY = "[AWS_ACCESS_KEY_TO_ACCESS_KINESIS]";
    private static final String AWS_SECRET_KEY = "[AWS_SECRET_KEY_TO_ACCESS_KINESIS]";
    private static final String RESOURCE_ID = "[external-resource-id]"; // db-ABCD123456
    private static final String REGION_NAME = "[region-name]"; //us-east-1, us-east-2...
    private static final BasicAWSCredentials CREDENTIALS = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);
    private static final AWSStaticCredentialsProvider CREDENTIALS_PROVIDER = new AWSStaticCredentialsProvider(CREDENTIALS);

    private static final AwsCrypto CRYPTO = new AwsCrypto();
    private static final AWSKMS KMS = AWSKMSClientBuilder.standard()
            .withRegion(REGION_NAME)
            .withCredentials(CREDENTIALS_PROVIDER).build();

    class Activity {
        String type;
        String version;
        String databaseActivityEvents;
        String key;
    }

    class ActivityEvent {
        @SerializedName("class") String _class;
        String clientApplication;
        String command;
        String commandText;
        String databaseName;
        String dbProtocol;
        String dbUserName;
        String endTime;
        String errorMessage;
        String exitCode;
        String logTime;
        String netProtocol;
        String objectName;
        String objectType;
        List<String> paramList;
        String pid;
        String remoteHost;
        String remotePort;
        String rowCount;
        String serverHost;
        String serverType;
        String serverVersion;
        String serviceName;
        String sessionId;
        String startTime;
        String statementId;
        String substatementId;
        String transactionId;
        String type;
    }

    class ActivityRecords {
        String type;
        String clusterId; // note that clusterId will contain an empty string on RDS Oracle and RDS SQL Server
        String instanceId;
        List<ActivityEvent> databaseActivityEventList;
    }

    static class RecordProcessorFactory implements IRecordProcessorFactory {
        @Override
        public IRecordProcessor createProcessor() {
            return new RecordProcessor();
        }
    }

    static class RecordProcessor implements IRecordProcessor {

        private static final long BACKOFF_TIME_IN_MILLIS = 3000L;
        private static final int PROCESSING_RETRIES_MAX = 10;
        private static final long CHECKPOINT_INTERVAL_MILLIS = 60000L;
        private static final Gson GSON = new GsonBuilder().serializeNulls().create();

        private static final Cipher CIPHER;
        static {
            Security.insertProviderAt(new BouncyCastleProvider(), 1);
            try {
                CIPHER = Cipher.getInstance("AES/GCM/NoPadding", "BC");
            } catch (NoSuchAlgorithmException | NoSuchPaddingException | NoSuchProviderException e) {
                throw new ExceptionInInitializerError(e);
            }
        }

        private long nextCheckpointTimeInMillis;

        @Override
        public void initialize(String shardId) {
        }

        @Override
        public void processRecords(final List<Record> records, final IRecordProcessorCheckpointer checkpointer) {
            for (final Record record : records) {
                processSingleBlob(record.getData());
            }

            if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
                checkpoint(checkpointer);
                nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
            }
        }

        @Override
        public void shutdown(IRecordProcessorCheckpointer checkpointer, ShutdownReason reason) {
            if (reason == ShutdownReason.TERMINATE) {
                checkpoint(checkpointer);
            }
        }

        private void processSingleBlob(final ByteBuffer bytes) {
            try {
                // JSON $Activity
                final Activity activity = GSON.fromJson(new String(bytes.array(), StandardCharsets.UTF_8), Activity.class);

                // Base64.Decode
                final byte[] decoded = Base64.decode(activity.databaseActivityEvents);
                final byte[] decodedDataKey = Base64.decode(activity.key);

                Map<String, String> context = new HashMap<>();
                context.put("aws:rds:db-id", RESOURCE_ID);

                // Decrypt
                final DecryptRequest decryptRequest = new DecryptRequest()
                        .withCiphertextBlob(ByteBuffer.wrap(decodedDataKey)).withEncryptionContext(context);
                final DecryptResult decryptResult = KMS.decrypt(decryptRequest);
                final byte[] decrypted = decrypt(decoded, getByteArray(decryptResult.getPlaintext()));

                // GZip Decompress
                final byte[] decompressed = decompress(decrypted);
                // JSON $ActivityRecords
                final ActivityRecords activityRecords = GSON.fromJson(new String(decompressed, StandardCharsets.UTF_8), ActivityRecords.class);

                // Iterate throught $ActivityEvents
                for (final ActivityEvent event : activityRecords.databaseActivityEventList) {
                    System.out.println(GSON.toJson(event));
                }
            } catch (Exception e) {
                // Handle error.
                e.printStackTrace();
            }
        }

        private static byte[] decompress(final byte[] src) throws IOException {
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(src);
            GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream);
            return IOUtils.toByteArray(gzipInputStream);
        }

        private void checkpoint(IRecordProcessorCheckpointer checkpointer) {
            for (int i = 0; i < PROCESSING_RETRIES_MAX; i++) {
                try {
                    checkpointer.checkpoint();
                    break;
                } catch (ShutdownException se) {
                    // Ignore checkpoint if the processor instance has been shutdown (fail over).
                    System.out.println("Caught shutdown exception, skipping checkpoint." + se);
                    break;
                } catch (ThrottlingException e) {
                    // Backoff and re-attempt checkpoint upon transient failures
                    if (i >= (PROCESSING_RETRIES_MAX - 1)) {
                        System.out.println("Checkpoint failed after " + (i + 1) + "attempts." + e);
                        break;
                    } else {
                        System.out.println("Transient issue when checkpointing - attempt " + (i + 1) + " of " + PROCESSING_RETRIES_MAX + e);
                    }
                } catch (InvalidStateException e) {
                    // This indicates an issue with the DynamoDB table (check for table, provisioned IOPS).
                    System.out.println("Cannot save checkpoint to the DynamoDB table used by the Amazon Kinesis Client Library." + e);
                    break;
                }
                try {
                    Thread.sleep(BACKOFF_TIME_IN_MILLIS);
                } catch (InterruptedException e) {
                    System.out.println("Interrupted sleep" + e);
                }
            }
        }
    }

    private static byte[] decrypt(final byte[] decoded, final byte[] decodedDataKey) throws IOException {
        // Create a JCE master key provider using the random key and an AES-GCM encryption algorithm
        final JceMasterKey masterKey = JceMasterKey.getInstance(new SecretKeySpec(decodedDataKey, "AES"),
                "BC", "DataKey", "AES/GCM/NoPadding");
        try (final CryptoInputStream<JceMasterKey> decryptingStream = CRYPTO.createDecryptingStream(masterKey, new ByteArrayInputStream(decoded));
             final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            IOUtils.copy(decryptingStream, out);
            return out.toByteArray();
        }
    }

    public static void main(String[] args) throws Exception {
        final String workerId = InetAddress.getLocalHost().getCanonicalHostName() + ":" + UUID.randomUUID();
        final KinesisClientLibConfiguration kinesisClientLibConfiguration =
                new KinesisClientLibConfiguration(APPLICATION_NAME, STREAM_NAME, CREDENTIALS_PROVIDER, workerId);
        kinesisClientLibConfiguration.withInitialPositionInStream(InitialPositionInStream.LATEST);
        kinesisClientLibConfiguration.withRegionName(REGION_NAME);
        final Worker worker = new Builder()
                .recordProcessorFactory(new RecordProcessorFactory())
                .config(kinesisClientLibConfiguration)
                .build();

        System.out.printf("Running %s to process stream %s as worker %s...\n", APPLICATION_NAME, STREAM_NAME, workerId);

        try {
            worker.run();
        } catch (Throwable t) {
            System.err.println("Caught throwable while processing data.");
            t.printStackTrace();
            System.exit(1);
        }
        System.exit(0);
    }

    private static byte[] getByteArray(final ByteBuffer b) {
        byte[] byteArray = new byte[b.remaining()];
        b.get(byteArray);
        return byteArray;
    }
}
```

------
#### [ Python ]

```
import base64
import json
import zlib
import aws_encryption_sdk
from aws_encryption_sdk import CommitmentPolicy
from aws_encryption_sdk.internal.crypto import WrappingKey
from aws_encryption_sdk.key_providers.raw import RawMasterKeyProvider
from aws_encryption_sdk.identifiers import WrappingAlgorithm, EncryptionKeyType
import boto3

REGION_NAME = '<region>'                    # us-east-1
RESOURCE_ID = '<external-resource-id>'      # db-ABCD123456
STREAM_NAME = 'aws-rds-das-' + RESOURCE_ID  # aws-rds-das-db-ABCD123456

enc_client = aws_encryption_sdk.EncryptionSDKClient(commitment_policy=CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT)

class MyRawMasterKeyProvider(RawMasterKeyProvider):
    provider_id = "BC"

    def __new__(cls, *args, **kwargs):
        obj = super(RawMasterKeyProvider, cls).__new__(cls)
        return obj

    def __init__(self, plain_key):
        RawMasterKeyProvider.__init__(self)
        self.wrapping_key = WrappingKey(wrapping_algorithm=WrappingAlgorithm.AES_256_GCM_IV12_TAG16_NO_PADDING,
                                        wrapping_key=plain_key, wrapping_key_type=EncryptionKeyType.SYMMETRIC)

    def _get_raw_key(self, key_id):
        return self.wrapping_key


def decrypt_payload(payload, data_key):
    my_key_provider = MyRawMasterKeyProvider(data_key)
    my_key_provider.add_master_key("DataKey")
    decrypted_plaintext, header = enc_client.decrypt(
        source=payload,
        materials_manager=aws_encryption_sdk.materials_managers.default.DefaultCryptoMaterialsManager(master_key_provider=my_key_provider))
    return decrypted_plaintext


def decrypt_decompress(payload, key):
    decrypted = decrypt_payload(payload, key)
    return zlib.decompress(decrypted, zlib.MAX_WBITS + 16)


def main():
    session = boto3.session.Session()
    kms = session.client('kms', region_name=REGION_NAME)
    kinesis = session.client('kinesis', region_name=REGION_NAME)

    response = kinesis.describe_stream(StreamName=STREAM_NAME)
    shard_iters = []
    for shard in response['StreamDescription']['Shards']:
        shard_iter_response = kinesis.get_shard_iterator(StreamName=STREAM_NAME, ShardId=shard['ShardId'],
                                                         ShardIteratorType='LATEST')
        shard_iters.append(shard_iter_response['ShardIterator'])

    while len(shard_iters) > 0:
        next_shard_iters = []
        for shard_iter in shard_iters:
            response = kinesis.get_records(ShardIterator=shard_iter, Limit=10000)
            for record in response['Records']:
                record_data = record['Data']
                record_data = json.loads(record_data)
                payload_decoded = base64.b64decode(record_data['databaseActivityEvents'])
                data_key_decoded = base64.b64decode(record_data['key'])
                data_key_decrypt_result = kms.decrypt(CiphertextBlob=data_key_decoded,
                                                      EncryptionContext={'aws:rds:db-id': RESOURCE_ID})
                print (decrypt_decompress(payload_decoded, data_key_decrypt_result['Plaintext']))
            if 'NextShardIterator' in response:
                next_shard_iters.append(response['NextShardIterator'])
        shard_iters = next_shard_iters


if __name__ == '__main__':
    main()
```

------

# 데이터베이스 활동 스트림의 IAM 정책 예제
<a name="DBActivityStreams.ManagingAccess"></a>

데이터베이스 활동 스트림에 대한 적절한 AWS Identity and Access Management(IAM) 역할 권한이 있는 사용자는 DB인스턴스에 대한 활동 스트림 설정을 작성, 시작, 중지하고 수정할 수 있습니다. 이러한 작업은 스트림의 감사 로그에 포함됩니다. 규정을 준수하는 최선의 방법은 DBA에 이러한 권한을 제공하지 않는 것입니다.

IAM 정책을 사용하여 데이터베이스 활동 스트림에 대한 액세스를 설정합니다. Amazon RDS 인증에 대한 자세한 내용은 [Amazon RDS의 자격 증명 및 액세스 관리](UsingWithRDS.IAM.md) 섹션을 참조하세요. IAM 정책 생성에 대한 자세한 내용은 [IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용](UsingWithRDS.IAMDBAuth.IAMPolicy.md) 단원을 참조하십시오.

**Example 데이터베이스 활동 스트림 구성을 허용하는 정책**  
사용자에게 활동 스트림을 수정할 수 있는 세분화된 액세스를 제공하려면 IAM 정책에서 서비스별 작업 컨텍스트 키 `rds:StartActivityStream` 및 `rds:StopActivityStream`을 사용하세요. 다음 IAM 정책 예제는 사용자 또는 역할이 활동 스트림을 구성할 수 있도록 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ConfigureActivityStreams",
            "Effect": "Allow",
            "Action": [
                "rds:StartActivityStream",
                "rds:StopActivityStream"
            ],
            "Resource": "*"
        }
    ]
}
```

**Example 데이터베이스 활동 스트림 시작을 허용하는 정책**  
다음 IAM 정책 예제는 사용자 또는 역할이 활동 스트림을 시작할 수 있도록 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"AllowStartActivityStreams",
            "Effect":"Allow",
            "Action":"rds:StartActivityStream",
            "Resource":"*"
        }
    ]
}
```

**Example 데이터베이스 활동 스트림 중지를 허용하는 정책**  
다음 IAM 정책 예제는 사용자 또는 역할이 활동 스트림을 중지할 수 있도록 허용합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"AllowStopActivityStreams",
            "Effect":"Allow",
            "Action":"rds:StopActivityStream",
            "Resource":"*"
        }
     ]
}
```

**Example 데이터베이스 활동 스트림 시작을 거부하는 정책**  
다음 IAM 정책 예제는 사용자 또는 역할이 활동 스트림을 시작하지 못하게 합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"DenyStartActivityStreams",
            "Effect":"Deny",
            "Action":"rds:StartActivityStream",
            "Resource":"*"
        }
     ]
}
```

**Example 데이터베이스 활동 스트림 중지를 거부하는 정책**  
다음 IAM 정책 예제는 사용자 또는 역할이 활동 스트림을 중지하지 못하게 합니다.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"DenyStopActivityStreams",
            "Effect":"Deny",
            "Action":"rds:StopActivityStream",
            "Resource":"*"
        }
    ]
}
```

# Amazon GuardDuty RDS Protection을 이용한 위협 모니터링
<a name="guard-duty-rds-protection"></a>

Amazon GuardDuty는 AWS 환경 내 계정, 컨테이너, 워크로드 및 데이터를 보호하는 데 도움이 되는 위협 감지 서비스입니다. GuardDuty는 기계 학습(ML) 모델, 이상 및 위협 감지 기능을 통해 다양한 로그 소스와 런타임 활동을 지속적으로 모니터링하여 사용자 환경의 잠재적 보안 위험과 악의적 활동을 식별하고 우선순위를 지정합니다.

GuardDuty RDS Protection은 Amazon RDS 데이터베이스에 대한 잠재적 액세스 위협 관련 로그인 이벤트를 분석하고 프로파일링합니다. RDS Protection을 켜면 GuardDuty는 RDS 데이터베이스에서 RDS 로그인 이벤트를 사용합니다. RDS Protection은 이러한 이벤트를 모니터링하고 잠재적인 내부자 위협 또는 외부 행위자가 있는지 프로파일링합니다.

GuardDuty RDS Protection 활성화에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [GuardDuty RDS Protection](https://docs.aws.amazon.com/guardduty/latest/ug/rds-protection.html)을 참조하세요.

RDS Protection이 성공하거나 실패한 로그인 시도에서의 비정상적인 패턴과 같은 잠재적 위협을 탐지하면, GuardDuty는 손상되었을지도 모르는 데이터베이스 관련 세부 정보가 포함된 새 탐지 결과를 생성합니다. Amazon GuardDuty 콘솔의 결과 요약 섹션에서 결과 세부 정보를 볼 수 있습니다. 결과 세부 정보는 결과 유형에 따라 달라집니다. 기본 세부 정보, 리소스 유형 및 리소스 역할에 따라 결과에 사용할 수 있는 정보의 종류가 결정됩니다. 일반적으로 사용할 수 있는 검색 결과 세부 정보 및 검색 유형에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*에서 [Finding details](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings-summary.html)(결과 세부 정보) 및 [GuardDuty RDS Protection finding types](https://docs.aws.amazon.com/guardduty/latest/ug/findings-rds-protection.html)(GuardDuty RDS Protection 결과 유형)를 각각 참조하세요.

RDS Protection 기능은 이 기능을 사용할 수 있는 모든 AWS 리전의 AWS 계정에 대해 켜거나 해제할 수 있습니다. RDS Protection이 활성화되지 않은 경우 GuardDuty는 손상되었을지도 모르는 RDS 데이터베이스를 탐지하거나 보안 침해 관련 세부 정보를 제공하지 않습니다.

기존 GuardDuty 계정은 30일 평가판 기간으로 RDS Protection을 활성화할 수 있습니다. 새 GuardDuty 계정의 경우 RDS Protection이 이미 활성화되어 있으며 30일 무료 평가판 기간에 포함되어 있습니다. 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Estimating GuardDuty cost](https://docs.aws.amazon.com/guardduty/latest/ug/monitoring_costs.html)(GuardDuty 비용 추정)를 참조하세요.

GuardDuty가 아직 RDS Protection을 지원하지 않는 AWS 리전에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Region-specific feature availability](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html#gd-regional-feature-availability)를 참조하세요.

GuardDuty RDS 보호가 지원하는 RDS 데이터베이스 버전에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*에 나와 있는 [Supported Amazon Aurora, Amazon RDS, and Aurora Limitless databases](https://docs.aws.amazon.com/guardduty/latest/ug/rds-protection.html#rds-pro-supported-db)를 참조하시기 바랍니다.