

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

# 監控 Amazon RDS 資料庫執行個體中的事件、日誌和串流
<a name="CHAP_Monitor_Logs_Events"></a>

當您監控 Amazon RDS 資料庫和其他 AWS 解決方案時，您的目標是維護下列項目：
+ 可靠性
+ 可用性
+ 效能
+ 安全

[監控 Amazon RDS 執行個體中的指標](CHAP_Monitoring.md) 解釋如何使用指標監控執行個體。完整的解決方案也必須監控資料庫事件、日誌檔案和活動串流。 AWS 為您提供下列監控工具：
+ *Amazon EventBridge* 為無伺服器事件匯流排服務，可讓您輕鬆將應用程式與來自各種來源的資料互相連線。EventBridge 可從您自己的應用程式、Software-as-a-Service(SaaS) 應用程式 AWS 和服務提供即時資料串流。EventBridge 會將該資料路由傳送至目標，例如 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 儲存貯體。您可以識別呼叫的使用者和帳戶 AWS、進行呼叫的來源 IP 地址，以及呼叫的時間。如需詳細資訊，請參閱[「AWS CloudTrail 使用者指南」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。
+ *資料庫活動串流*是一項 Amazon RDS 功能，提供有關您資料庫執行個體的近乎即時活動串流。 Amazon RDS會將活動推送至 Amazon Kinesis 資料串流。系統會自動建立 Kinesis 串流。從 Kinesis，您可以設定 Amazon Data Firehose 和 等 AWS 服務 AWS Lambda ，以取用串流並存放資料。

**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 與 整合 AWS 服務 ，以在 RDS 主控台中顯示日誌、事件和資料庫活動串流的相關資訊。

RDS 資料庫執行個體的**日誌和事件**索引標籤會顯示以下資訊：
+ **Amazon CloudWatch alarms** (Amazon CloudWatch 警示)：顯示您為 的資料庫執行個體設定的任何指標警示。如果您尚未設定警示，則可以在 RDS 主控台中加以建立。如需詳細資訊，請參閱 [使用 Amazon CloudWatch 監控 Amazon RDS 指標](monitoring-cloudwatch.md)。
+ **Recent events** (最近事件)：顯示 RDS 資料庫執行個體的事件摘要 (環境變更)。如需詳細資訊，請參閱[檢視 Amazon RDS 事件](USER_ListEvents.md)。
+ **Logs** (日誌)：顯示 的資料庫執行個體產生的資料庫日誌檔案。如需詳細資訊，請參閱[監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。

**Configuration** (組態) 索引標籤會顯示資料庫活動串流的資訊。

**在 RDS 主控台中檢視 資料庫執行個體的日誌、事件和串流**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想要監控的 資料庫執行個體的名稱。

   資料庫頁面隨即出現。下列範例顯示名為 `orclb` 的 Oracle 資料庫。  
![\[顯示「監控」索引標籤的資料庫頁面\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-with-monitoring-tab.png)

1. 選擇 **Logs & events (日誌和事件)**。

   此時將顯示「日誌和事件」區段。  
![\[顯示「日誌和事件」索引標籤的資料庫頁面\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/oracle-logs-and-events-subpage.png)

1. 選擇 **Configuration (組態)**。

   下列範例顯示資料庫執行個體的資料庫活動串流的狀態。  
![\[Enhanced Monitoring (增強型監控)\]](http://docs.aws.amazon.com/zh_tw/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 會產生一個事件。Amazon RDS 會近乎即時地將事件傳遞至 EventBridge。

**注意**  
Amazon RDS 會全力發出事件。我們建議您避免編寫會根據通知事件的順序或存在的程式，因為這些事件可能會被移出序列或遺漏。

Amazon RDS 記錄與下列資源相關的事件：
+ 資料庫執行個體

  如需資料庫執行個體事件清單，請參閱 [資料庫執行個體事件](USER_Events.Messages.md#USER_Events.Messages.instance)。
+ 資料庫參數群組

  如需有關資料庫參數群組事件的列表，請參閱 [資料庫參數群組事件](USER_Events.Messages.md#USER_Events.Messages.parameter-group)。
+ 資料庫安全群組

  如需有關資料庫安全群組事件的清單，請參閱 [資料庫安全群組事件](USER_Events.Messages.md#USER_Events.Messages.security-group)。
+ 資料庫快照

  如需資料庫快照事件的清單，請參閱 [資料庫快照事件](USER_Events.Messages.md#USER_Events.Messages.snapshot)。
+ RDS Proxy 事件

  如需 RDS Proxy 事件的清單，請參閱 [RDS Proxy 事件](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 管理主控台 的下列部分存取事件：
+ **事件**索引標籤，顯示過去 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 天內的事件。

**注意**  
如果您需要長時間儲存事件，則可將 Amazon RDS 事件傳送至 EventBridge。如需詳細資訊，請參閱[建立由 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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Events** (事件)。

   可用的事件隨即會出現在清單中。

1. (選用) 輸入搜尋詞來篩選結果。

   下列範例所顯示的事件清單，是依字元 **stopped** 篩選的結果。  
![\[列出資料庫事件\]](http://docs.aws.amazon.com/zh_tw/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
```

下列範例輸出顯示資料庫執行個體已遭停止。

```
{
    "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"
        }
    ]
}
```

如要檢視過去 10080 分鐘 (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
```

下列範例顯示資料庫執行個體 *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>

如果要檢視過去 14 天內的所有 Amazon RDS 執行個體事件，請呼叫 [DescribeEvents](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEvents.html) RDS API 操作，並將 `Duration` 參數設定為 `20160`。

# 使用 Amazon RDS 事件通知
<a name="USER_Events"></a>

Amazon RDS 使用 Amazon Simple Notification Service (Amazon SNS) 在 Amazon RDS 事件發生時提供通知。這些通知可以採用任何 Amazon SNS 在 AWS 區域中支援的通知形式，例如電子郵件、文字訊息或呼叫 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 parameter group (資料庫參數群組)
+ 資料庫安全群組
+ RDS Proxy
+ 自訂引擎版本

例如，如果您訂閱指定資料庫執行個體的備份類別，當發生會影響資料庫執行個體的備份相關事件時，您將會收到通知。如果您訂閱資料庫執行個體的組態變更類別，當資料庫執行個體變更時，您將會收到通知。當事件通知訂閱變更時，您也會收到通知。

您可能會想要建立數個不同的訂閱。例如，您可能會建立一個訂閱以接收所有資料庫執行個體的所有事件通知，並建立另一個訂閱以僅包含資料庫執行個體子集的重要事件。對於第二個訂閱，請在篩選條件中指定一或多個資料庫執行個體。

## 訂閱 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 主控台會以您的訂閱狀態更新 **My Event Subscriptions** (我的事件訂閱) 區段。

1. Amazon RDS 會將通知傳送到您在建立訂閱時提供的地址。

若要了解使用 Amazon SNS 時的 Identity and Access Management，請參閱《*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 來處理資料庫執行個體的事件通知。如需詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[搭配使用 AWS Lambda 與 Amazon RDS](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 主控台中，為 **Enabled** (啟用) 選擇 **No** (否)。或者，您可以使用 AWS CLI 或 Amazon RDS API `false` 將 `Enabled` 參數設定為 。

## 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 來記錄資料庫執行個體狀態變更](rds-cloud-watch-events.md#log-rds-instance-state)。

**Topics**
+ [資料庫執行個體事件的範例](#rds-cloudwatch-events.db-instances)
+ [資料庫參數群組事件的範例](#rds-cloudwatch-events.db-parameter-groups)
+ [資料庫快照事件範例](#rds-cloudwatch-events.db-snapshots)

### 資料庫執行個體事件的範例
<a name="rds-cloudwatch-events.db-instances"></a>

以下是 JSON 格式的資料庫執行個體事件範例。此事件顯示 RDS 對名為 `my-db-instance` 的執行個體執行了多可用區域容錯移轉。事件 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"
  }
}
```

### 資料庫參數群組事件的範例
<a name="rds-cloudwatch-events.db-parameter-groups"></a>

以下是 JSON 格式的資料庫參數群組事件範例。事件顯示參數群組 `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"
  }
}
```

### 資料庫快照事件範例
<a name="rds-cloudwatch-events.db-snapshots"></a>

以下是 JSON 格式的資料庫快照事件範例。此事件會顯示刪除名為 `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 政策的範例。它將主題限制為名稱符合指定字首的資料庫執行個體。若要使用此政策，請指定下列值：
+ `Resource` – Amazon SNS 主題的 Amazon Resource Name (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 訂閱該主題。您也將必須保留主題的 Amazon Resource Name (ARN)，因為在提交 CLI 命令或 API 操作時會用到它。如需建立和訂閱 SNS 主題的詳細資訊，請參閱《Amazon Simple Notification Service 開發人員指南》**中的 [Amazon SNS 入門](https://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html)。

您可以指定想要收到通知的來源類型，以及觸發事件的 Amazon RDS 來源。

**Source type** (來源類型)  
來源類型。例如：**Source type** (來源類型) 可能是 **Instances** (執行個體)。您必須選擇來源類型。

**要包含的*資源***  
正在產生事件的 Amazon RDS 資源。例如，您可以選擇 **Select specific instances** (選取特定執行個體) 然後選擇 **myDBInstane1**。

下表說明了指定或不指定**要包含的*資源***時的結果。


|  要包含的資源  |  描述  |  範例  | 
| --- | --- | --- | 
|  指定  |  RDS 只會通知您指定資源的所有資料庫執行個體事件。  | 如果您的 Source type (來源類型) 是 Instances (執行個體)，您的資源是 myDBInstance1，RDS 只會通知您有關 myDBInstance1。 | 
|  未指定  |  您會收到所有 Amazon RDS 資源中指定來源類型事件的通知。  |  如果您的 **Source type** (來源類型) 是 **Instances** (執行個體)，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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Event subscriptions** (事件訂閱)。

1. 在 **Event subscriptions (事件訂閱)** 窗格中，選擇 **Create event subscription (建立事件訂閱)**。

1. 輸入您的訂閱詳細資訊，如下所示：

   1. 在 **Name (名稱)** 中，輸入事件通知訂閱的名稱。

   1. 對於 **Send notification to:** (傳送通知給：)，執行以下其中一項：
      + 選擇 **New email topic** (新的電子郵件主題)。輸入電子郵件主題的名稱和收件者清單。建議您將事件訂閱設定為與主要帳戶聯絡人相同的電子郵件地址。建議、服務事件和個人健康訊息會使用不同的通道傳送。訂閱相同電子郵件地址可確保所有郵件都合併在一個位置。
      + 選擇 **Amazon Resource Name (ARN)**。然後在 Amazon SNS 主題中選擇現有 Amazon SNS ARN。

        如果您想要使用已為伺服器端加密 (SSE) 啟用的主題，請授予 Amazon RDS 存取 AWS KMS key 所需的許可。如需詳細資訊，請參閱《*Amazon Simple Notification Service 開發人員指南*》中的[啟用 AWS 服務的事件來源與加密主題之間的相容性](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html#compatibility-with-aws-services)。

   1. 在 **Source type (來源類型)** 中選擇來源類型。例如，選擇 **Instances** (執行個體) 或 **Parameter groups** (參數群組)。

   1. 選擇您要接收通知的事件類型和資源。

      下列範例設定名為 `testinst` 之資料庫執行個體的事件通知。  
![\[輸入來源類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/event-source.png)

   1. 選擇 **Create** (建立)。

Amazon RDS 主控台顯示正在建立訂閱。

![\[列出資料庫事件通知訂閱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EventNotification-Create2.png)


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

使用 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) 命令來訂閱 RDS 事件通知。包含下列必要參數：
+ `--subscription-name`
+ `--sns-topic-arn`

**Example**  
針對 Linux、macOS 或 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 標籤，將中繼資料新增至資源。您可以使用關於資料庫執行個體的表示法。如需標記 Amazon RDSAurora 資源的詳細資訊，請參閱 [標記 Amazon RDS 資源](USER_Tagging.md)。

根據預設，Amazon SNS 和 Amazon EventBridge 會接收傳送給它們的每則訊息。SNS 和 EventBridge 可以篩選訊息並將通知傳送到偏好的通訊模式，例如電子郵件、簡訊或呼叫 HTTP 端點。

**注意**  
透過電子郵件或簡訊傳送的通知不會有事件標籤。

下表顯示傳送到主題訂閱者的 RDS 事件的訊息屬性。


| Amazon RDS 事件屬性 |  Description  | 
| --- | --- | 
| EventID |  RDS 事件訊息的識別碼，例如 RDS-EVENT-0006。  | 
| 資源 |  發出事件之資源的 ARN 識別符，例如 `arn:aws:rds:ap-southeast-2:123456789012:db:database-1`。  | 

RDS 標籤提供受服務事件影響之資源的相關資料。當通知傳送至 SNS 或 EventBridge 時，RDS 會在訊息內文中新增標籤的目前狀態。

如需有關 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 承載型標籤的詳細資訊，請參閱 [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 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1.  在導覽窗格中，選擇 **Event subscriptions** (事件訂閱)。**Event subscriptions (事件訂閱)** 窗格顯示所有事件通知訂閱。  
![\[列出資料庫事件通知訂閱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EventNotification-ListSubs.png)

   

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

使用 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) 命令來列出您目前的 Amazon RDS 事件通知訂閱。

**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 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 事件通知訂閱。

# 修改 Amazon RDS 事件通知訂閱
<a name="USER_Events.Modifying"></a>

在您建立訂閱之後，您可以變更訂閱名稱、來源識別碼、類別或主題 ARN。

## 主控台
<a name="USER_Events.Modifying.Console"></a>

**修改 Amazon RDS 事件通知訂閱**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1.  在導覽窗格中，選擇 **Event subscriptions** (事件訂閱)。

1.  在 **Event subscriptions (事件訂閱)** 窗格中，選擇您要修改的訂閱，然後選擇 **Edit (編輯)**。

1.  在 **Target (目標)** 或 **Source (來源)** 區段中，對訂閱進行變更。

1. 選擇**編輯**。Amazon RDS 主控台顯示正在修改訂閱。  
![\[列出資料庫事件通知訂閱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EventNotification-Modify2.png)

   

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

使用 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) 命令來修改 Amazon RDS 事件通知訂閱。包含下列必要參數：
+ `--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` 訂閱。  
對於 Linux、macOS 或 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 API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AddSourceIdentifierToSubscription.html) 將來源識別碼新增至 Amazon RDS 事件通知訂閱。包含下列必要參數：
+ `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` 訂閱中移除。  
對於 Linux、macOS 或 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 API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RemoveSourceIdentifierFromSubscription.html) 命令將來源識別碼從 Amazon RDS 事件通知訂閱中移除。包含下列必要參數：
+ `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)。

![\[列出資料庫事件通知類別\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EventNotification-Categories.png)




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

使用 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) 命令來列出 Amazon RDS 事件通知訂閱類別。此命令沒有要求的參數。

**Example**  

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

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

使用 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 事件通知訂閱類別。此命令沒有要求的參數。

# 刪除 Amazon RDS 事件通知訂閱
<a name="USER_Events.Deleting"></a>

您可以刪除不再需要的訂閱。該主題的所有訂閱者將不會再收到該訂閱指定的事件通知。

## 主控台
<a name="USER_Events.Deleting.Console"></a>

**刪除 Amazon RDS 事件通知訂閱**

1. 登入 AWS 管理主控台，開啟位於 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1.  在導覽窗格中，選擇 **DB Event Subscriptions** (資料庫事件訂閱)。

1.  在 **My DB Event Subscriptions (我的資料庫事件訂閱)** 窗格中，選擇您要刪除的訂閱。

1. 選擇 **刪除**。

1. Amazon RDS 主控台顯示正在刪除訂閱。  
![\[刪除事件通知訂閱\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EventNotification-Delete.png)

   

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

使用 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) 命令來刪除 Amazon RDS 事件通知訂閱。包含下列必要參數：
+ `--subscription-name`

**Example**  
以下範例刪除訂閱 `myrdssubscription`。  

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

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

使用 RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteEventSubscription.html) 命令來刪除 Amazon RDS 事件通知訂閱。包含下列必要參數：
+ `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 來記錄資料庫執行個體狀態變更](#log-rds-instance-state)

## 建立規則以將 Amazon RDS 事件傳送至 Amazon EventBridge
<a name="rds-cloudwatch-events.sending-to-cloudwatch-events"></a>

您可編寫簡單的規則，來指示您在意的 Amazon RDS 事件，以及事件符合規則時所要自動執行的動作。您可以設定各種目標，例如接收 JSON 格式事件的 AWS Lambda 函數或 Amazon SNS 主題。例如，您可以設定 Amazon RDS 在每當建立或刪除資料庫執行個體時傳送事件到 Amazon EventBridge。如需詳細資訊，請參閱 [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. 在導覽窗格的 **Events (事件)** 中，選擇 **Rules (規則)**。

1. 選擇**建立規則**。

1. 針對 **Event Source (事件來源)**，請執行下列動作：

   1. 選擇 **Event Pattern (事件模式)**。

   1. 對於 **Service Name** (服務名稱)，選擇 **Relational Database Service (RDS)** (關聯式資料庫服務)。

   1. 若為 **Event Type (事件類型)**，選擇觸發事件的 Amazon RDS 資源類型。例如，若的資料庫執行個體觸發事件，請選擇 **RDS 資料庫執行個體事件**。

1. 針對**目標**，選擇**新增目標**，然後選擇在偵測到所選類型的事件時要採取行動 AWS 的服務。

1. 在此區段的其他欄位中，輸入此目標類型的特定資訊 (如有需要)。

1. 對於許多目標類型而言，EventBridge 需要許可才能將事件傳送到目標。在這些情況下，EventBridge 可建立執行事件所需的 IAM 角色。
   + 若要自動建立 IAM 角色，請選擇 **Create a new role for this specific resource (為此特定資源建立新角色)**。
   + 若要使用您之前建立的 IAM 角色，請選擇 **Use existing role (使用現有角色)**。

1. 您也可以選擇重複操作步驟 5 到 7，為此規則新增其他目標。

1. 選擇 **Configure details (設定詳細資訊)**。針對 **Rule definition (規則定義)**，請輸入規則的名稱和描述。

   規則名稱在此區域內必須是唯一的。

1. 選擇 **Create rule (建立規則)**。

如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》**中的[建立由事件觸發的 EventBridge 規則](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/Create-CloudWatch-Events-Rule.html)。

## 教學課程：使用 Amazon EventBridge 來記錄資料庫執行個體狀態變更
<a name="log-rds-instance-state"></a>

在本教學課程中，您會建立 AWS Lambda 函數，記錄 Amazon RDS 執行個體的狀態變更。然後，您建立一個規則，在現有 RDS 資料庫執行個體的狀態變更時執行該函數。本教學假設您擁有可以暫時關閉的小型執行中測試執行個體。

**重要**  
請勿在執行生產資料庫執行個體上執行本教學課程。

**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. 在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 AWS Lambda 主控台。

1. 如果您是第一次使用 Lambda，將會看到歡迎頁面。選擇 **Get Started Now (立即開始)**。否則，請選擇 **Create function (建立函數)**。

1. 選擇 **Author from scratch** (從頭開始撰寫)。

1. 在 **Create function (建立函數)** 頁面上，執行下列動作：

   1. 輸入 Lambda 函數的名稱和描述。例如，將函數命名為 **RDSInstanceStateChange**。

   1. 在 **Runtime** (執行時間) 中，選取 **Node.js 16x**。

   1. 對於 **Architecture** (架構)，選擇 **x86\$164**。

   1. 對於 **Execution role** (執行角色)，執行下列任何一項：
      + 選擇 **Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)**。
      + 針對 **Existing role (現有角色)**，選擇 **Use an existing role** (使用現有的角色)。選擇您想使用的角色。

   1. 選擇 **Create function** (建立函式)。

1. 在 **RDSInstanceStateChange** 頁面，執行下列動作：

   1. 在 **Code source** (程式碼來源) 中，選取 **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. 選擇 **Rule with an event pattern** (具有事件模式的規則)，然後選擇 **Next** (下一步)。

1. 在**事件來源**欄位中，選擇 **AWS 事件或 EventBridge 合作夥伴事件**。

1. 向下捲動到 **Event pattern** (事件模式) 區段中。

1. 在 **Event source (事件來源)**，選擇 **AWS 服務**。

1. 對於 **AWS Service** (服務)，選擇 **Relational Database Service (RDS)** (關聯式資料庫服務)。

1. 對於 **Event type** (事件類型)，選擇 **RDS DB Instance Event** (RDS 資料庫執行個體事件)。

1. 保留預設事件模式。然後選擇**下一步**。

1. 在**目標類型**欄位中，選擇 **AWS 服務**。

1. 對於 **Select a target** (選取目標)，選擇 **Lambda function** (Lambda 函數)。

1. 針對 **Function** (函數)，選擇您建立的 Lambda 函數。然後選擇**下一步**。

1. 在 **Configure tags** (設定標籤) 中，選擇 **Next** (下一步)。

1. 檢閱規則中的步驟。然後，選擇 **Create role** (建立角色)。

### 步驟 3：測試規則
<a name="rds-test-rule"></a>

若要測試您的規則，請關閉 RDS 資料庫執行個體。等待幾分鐘讓執行個體關閉，驗證您的 Lambda 函數是否被叫用。

**停用資料庫執行個體以測試您的規則**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 停止 RDS 資料庫執行個體。

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. 在導覽窗格中，選擇 **Log groups** (日誌群組)。

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**
+ [資料庫叢集事件](#USER_Events.Messages.cluster)
+ [資料庫叢集快照事件](#USER_Events.Messages.cluster-snapshot)
+ [資料庫執行個體事件](#USER_Events.Messages.instance)
+ [資料庫參數群組事件](#USER_Events.Messages.parameter-group)
+ [資料庫安全群組事件](#USER_Events.Messages.security-group)
+ [資料庫快照事件](#USER_Events.Messages.snapshot)
+ [RDS Proxy 事件](#USER_Events.Messages.rds-proxy)
+ [藍/綠部署事件](#USER_Events.Messages.BlueGreenDeployments)
+ [自訂引擎版本事件](#USER_Events.Messages.CEV)

## 資料庫叢集事件
<a name="USER_Events.Messages.cluster"></a>

下表顯示當資料庫叢集為來源類型時的事件類別和事件清單。

如需多可用區域資料庫叢集部署的詳細資訊，請參閱 [Amazon RDS 的多可用區域資料庫叢集部署](multi-az-db-clusters-concepts.md)。


|  類別  | RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  組態變更  | RDS-EVENT-0016 |  重設主要憑證。  | 無 | 
| 建立 | RDS-EVENT-0170 |  已建立資料庫叢集。  |  無  | 
|  容錯移轉  | RDS-EVENT-0069 |  叢集容錯移轉失敗，請檢查叢集執行個體的運作狀態，然後再試一次。  |  無  | 
|  容錯移轉  | RDS-EVENT-0070 |  再次提升上一個主要項目：*name*。  |  無  | 
|  容錯移轉  | RDS-EVENT-0071 |  已完成容錯移轉至資料庫執行個體：*name*。  |  無  | 
|  容錯移轉  | RDS-EVENT-0072 |  已啟動相同的 AZ 容錯移轉至資料庫執行個體：*name*。  |  無  | 
|  容錯移轉  | RDS-EVENT-0073 |  已啟動跨 AZ 容錯移轉至資料庫執行個體：*name*。  |  無  | 
| 失敗 | RDS-EVENT-0354 |  由於資源不相容，您無法建立資料庫叢集。*訊息*。  |  該*訊息*包含有關故障的詳細資料。  | 
| 失敗 | RDS-EVENT-0355 |  由於資源限制不足，無法建立資料庫叢集。*訊息*。  |  該*訊息*包含有關故障的詳細資料。  | 
|  維護  | RDS-EVENT-0156 |  資料庫叢集有可用的資料庫引擎次要版本升級。  |  無  | 
|  維護  | RDS-EVENT-0173 |  資料庫叢集引擎版本已升級。  | 已完成資料庫叢集的修補。 | 
|  維護  | 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 |  資料庫叢集升級前任務正在進行中。  | 無 | 
|  維護  | RDS-EVENT-0414 |  資料庫叢集升級後任務正在進行中。  | 無 | 
|  維護  | RDS-EVENT-0417 |  資料庫叢集引擎版本升級已開始。  | 無 | 
|  notification  | RDS-EVENT-0172 |  叢集已從 *name* 重新命名為 *name*。  |  無  | 
|  僅供讀取複本  | RDS-EVENT-0411 |  資料庫叢集引擎版本升級前檢查已失敗。  | 無 | 

## 資料庫叢集快照事件
<a name="USER_Events.Messages.cluster-snapshot"></a>

下表顯示當資料庫叢集快照為來源類型時的事件類別和事件清單。

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

## 資料庫執行個體事件
<a name="USER_Events.Messages.instance"></a>

下表顯示當資料庫執行個體為來源類型時的事件類別和事件清單。


|  Category  | RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  可用性  | RDS-EVENT-0004 |  資料庫執行個體關機。  | 無 | 
|  可用性  | RDS-EVENT-0006 |  資料庫執行個體已重新啟動。  | 無 | 
|  可用性  | RDS-EVENT-0022 |  重新啟動 mysql 時發生錯誤：*message*。  | 重新啟動 MySQL 時發生錯誤。 | 
|  可用性  | RDS-EVENT-0221 |  資料庫執行個體已達到儲存已滿閾值，且資料庫已關閉。您可以增加配置的儲存來解決這個問題。  | 無 | 
|  可用性  | RDS-EVENT-0222 |  資料庫執行個體 *name* 的可用儲存容量低至所配置儲存的 *percentage* [配置的儲存：*amount*，可用的儲存：*amount*]。如果可用儲存低於 *amount*，則資料庫會關閉以防止損毀。您可以增加配置的儲存來解決這個問題。  | 僅適用於資料庫執行個體耗用超過 90% 的配置儲存體時的 RDS for MySQL。使用可用儲存空間指標來監控資料庫執行個體的儲存空間。如需詳細資訊，請參閱[Amazon RDS 資料庫執行個體儲存體](CHAP_Storage.md)。 | 
|  可用性  | RDS-EVENT-0330 |  專用交易日誌磁碟區的可用儲存容量對於資料庫執行個體*名稱*而言太低。日誌磁碟區可用儲存體是配置儲存體的*百分比*。[配置儲存體：*數量*、免費儲存體：*數量*] 如果可用儲存體低於*數量*，資料庫將會關閉以防止損毀。您可以停用專用交易日誌磁碟區來解決此問題。  |  如需詳細資訊，請參閱[專用日誌磁碟區 (DLV)](CHAP_Storage.md#CHAP_Storage.dlv)。  | 
|  可用性  | RDS-EVENT-0331 |  專用交易日誌磁碟區的可用儲存容量對於資料庫執行個體*名稱*而言太低。日誌磁碟區可用儲存體是佈建儲存體的*百分比*。[佈建儲存體：*數量*、免費儲存體：*數量*] 您可以停用專用交易日誌磁碟區來解決此問題。  |  如需詳細資訊，請參閱[專用日誌磁碟區 (DLV)](CHAP_Storage.md#CHAP_Storage.dlv)。  | 
|  可用性  | RDS-EVENT-0396 |  Amazon RDS 已排定在內部使用者密碼輪換之後，在此執行個體的下一個維護時段為此僅供讀取複本重新開機。  |  無  | 
| 可用性 | RDS-EVENT-0419 | Amazon RDS 無法存取資料庫執行個體*名稱*的 KMS 加密金鑰。此資料庫將進入無法存取的狀態。如需進一步的詳細資訊，請參閱 Amazon RDS 文件中的疑難排解一節。 | 無 | 
|  備份  | RDS-EVENT-0001 |  備份資料庫執行個體。  | 無 | 
|  備份  | RDS-EVENT-0002 |  已完成資料庫執行個體備份。  | 無 | 
|  備份  | RDS-EVENT-0086  |  我們無法將選項群組 *name* 與資料庫執行個體 *name* 建立關聯。確認您的資料庫執行個體類別和組態支援選項群組 *name*。若是如此，請驗證所有選項群組設定並重試。  |  如需詳細資訊，請參閱「[使用選項群組](USER_WorkingWithOptionGroups.md)」。 | 
|  設定更改  | RDS-EVENT-0011 |  已更新為使用 DBParameterGroup *名稱*。  | 無 | 
|  組態變更  | RDS-EVENT-0012 |  套用修改至資料庫執行個體類別。  | 無 | 
|  組態變更  | RDS-EVENT-0014 |  將修改套用至資料庫執行個體類別已完成。  | 無 | 
|  組態變更  | RDS-EVENT-0016 |  重設主要憑證。  | 無 | 
|  組態變更  | RDS-EVENT-0017 |  將修改套用至配置的儲存已完成。  | 無 | 
|  組態變更  | RDS-EVENT-0018 |  正在將修改套用至配置的儲存。  | 無 | 
|  組態變更  | RDS-EVENT-0024 |  正在套用修改以轉換為多可用區域資料庫執行個體。  | 無 | 
|  組態變更  | RDS-EVENT-0025 |  套用修改以轉換為多可用區域資料庫執行個體已完成。  | 無 | 
|  組態變更  | RDS-EVENT-0028 |  已停用自動備份。  | 無 | 
|  組態變更  | RDS-EVENT-0029 |  套用修改以轉換為標準 (單一可用區域) 資料庫執行個體已完成。  | 無 | 
|  組態變更  | RDS-EVENT-0030 |  正在套用修改以轉換為標準 (單一可用區域) 資料庫執行個體。  | 無 | 
|  組態變更  | RDS-EVENT-0032 |  已啟用自動備份。  | 無 | 
|  組態變更  | RDS-EVENT-0033 |  有 *number* 個使用者符合主要使用者名稱；僅重設未繫結至特定主機的使用者。  | 無 | 
|  組態變更  | RDS-EVENT-0067 |  無法重設您的密碼。錯誤資訊：*message*。  | 無 | 
|  組態變更  | RDS-EVENT-0078 |  監控間隔已變更為 *number*。  |  增強型監控組態已變更。 | 
|  組態變更  | RDS-EVENT-0092 |  已完成資料庫參數群組的更新。  | 無 | 
|  組態變更  | 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 將繼續升級您的資料庫執行個體，並移除此外掛程式。  |  從 MySQL 8.3.0 開始，不支援 memcached 外掛程式。如需詳細資訊，請參閱 [MySQL 8.3.0 中的變更 (2024-01-16，創新版本)](https://dev.mysql.com/doc/relnotes/mysql/8.3/en/news-8-3-0.html)。  | 
|  建立  | RDS-EVENT-0005 |  已建立資料庫執行個體。  | 無 | 
|  刪除  | RDS-EVENT-0003 |  已刪除資料庫執行個體。  | 無 | 
|  容錯移轉  | RDS-EVENT-0013 |  多可用區域執行個體容錯移轉已啟動。  | 導致備用資料庫執行個體提升的多可用區域容錯移轉已啟動。 | 
|  容錯移轉  | RDS-EVENT-0015 |  多可用區域容錯移轉至備用完成 - DNS 傳播可能需要幾分鐘的時間。  | 導致備用資料庫執行個體提升的多可用區域容錯移轉已完成。DNS 傳輸到新的主要資料庫執行個體可能需要幾分鐘的時間。 | 
|  容錯移轉  | RDS-EVENT-0034 |  自資料庫執行個體最近發生的容錯移轉後，放棄使用者請求的容錯移轉。  | Amazon RDS 不會因為資料庫執行個體最近發生的容錯移轉，而嘗試請求的容錯移轉。 | 
|  容錯移轉  | RDS-EVENT-0049 | 多可用區域執行個體容錯移轉已完成。 | 無 | 
|  容錯移轉  | RDS-EVENT-0050 |  多可用區域執行個體啟用已啟動。  | 多可用區域啟用已在資料庫執行個體成功復原之後開始。如果 Amazon RDS 將主要資料庫執行個體提升為與先前主要資料庫執行個體相同的可用區域，則會發生此事件。 | 
|  容錯移轉  | RDS-EVENT-0051 |  多可用區域執行個體啟用已完成。  | 多可用區域啟用已完成。現在應可存取您的資料庫。 | 
|  容錯移轉  | RDS-EVENT-0065 |  已從部分容錯移轉復原。  | 無 | 
|  失敗  | RDS-EVENT-0031 |  資料庫執行個體進入 *name* 狀態。RDS 建議您啟動時間點還原。  | 因為不相容的組態或基礎儲存問題，資料庫執行個體已失敗。開始資料庫執行個體的時間點還原。 | 
|  失敗  | RDS-EVENT-0035 |  資料庫執行個體進入 *state*。*message*。  | 資料庫執行個體有無效的參數。例如，如果此執行個體類別與記憶體相關的參數設定過高造成資料庫叢集無法啟動，則您的動作將為修改記憶體參數並重新啟動資料庫執行個體。 | 
|  失敗  | RDS-EVENT-0036 |  資料庫執行個體處於 *state*。*message*。  | 資料庫執行個體位於不相容的網路中。部分指定的子網路 ID 無效或不存在。 | 
|  失敗  | RDS-EVENT-0058 |  Statspack 安裝失敗。*message*。  | 建立 Oracle Statspack 使用者帳戶 `PERFSTAT` 時發生錯誤。新增 `STATSPACK` 選項之前，請捨棄帳戶。 | 
|  失敗  | RDS-EVENT-0079 |  Amazon RDS 無法建立用於增強型監控的憑證，且此功能已停用。這可能是因為 rds-monitoring-role 不存在，且未在您的帳戶中正確設定所致。如需進一步的詳細資訊，請參閱 Amazon RDS 文件中的疑難排解一節。  |  若沒有增強型監控 IAM 角色，無法啟用增強型監控。如需建立 IAM 角色的相關資訊，請參閱 [為 Amazon RDS 增強型監控建立 IAM 角色](USER_Monitoring.OS.Enabling.md#USER_Monitoring.OS.IAMRole)。  | 
|  失敗  | RDS-EVENT-0080 |  Amazon RDS 無法在您的執行個體上設定增強型監控：*name*，且此功能已停用。這可能是因為 rds-monitoring-role 不存在，且未在您的帳戶中正確設定所致。如需進一步的詳細資訊，請參閱 Amazon RDS 文件中的疑難排解一節。  |  因為組態變更期間發生錯誤，所以增強型監控已停用。可能是未正確設定增強型監控 IAM 角色。如需建立增強型監控 IAM 角色的相關資訊，請參閱 [為 Amazon RDS 增強型監控建立 IAM 角色](USER_Monitoring.OS.Enabling.md#USER_Monitoring.OS.IAMRole)。  | 
|  失敗  | RDS-EVENT-0081 |  Amazon RDS 無法為 *name* 選項建立憑證。這是因為未在您的帳戶中正確設定 *name* IAM 角色所致。如需進一步的詳細資訊，請參閱 Amazon RDS 文件中的疑難排解一節。  |  您用來為 SQL Server 原生備份與還原存取 Amazon S3 儲存貯體的 IAM 角色設定不正確。如需更多詳細資訊，請參閱 [設定原生備份與還原](SQLServer.Procedural.Importing.Native.Enabling.md)。  | 
|  失敗  | RDS-EVENT-0165 |  RDS Custom 資料庫執行個體在支援周邊外面。  |  您必須負責修正讓 RDS Custom 資料庫執行個體進入 `unsupported-configuration` 狀態的組態問題。如果問題出在 AWS 基礎設施，您可以使用 主控台或 AWS CLI 進行修正。如果問題與作業系統或資料庫組態相關，您可以登入主機進行修正。如需詳細資訊，請參閱[RDS Custom 支援周邊](custom-concept.md#custom-troubleshooting.support-perimeter)。 | 
|  失敗  | RDS-EVENT-0188  |  資料庫執行個體處於無法升級的狀態。*message*  |  由於與資料字典相關的不相容性，Amazon RDS 無法升級 MySQL 資料庫執行個體。資料庫執行個體因為嘗試升級至 8.0 版失敗而復原至 MySQL 5.7 版，或因為嘗試升級至 8.4 版失敗而復原至 MySQL 8.0 版。如需詳細資訊，請參閱[在升級失敗後復原](USER_UpgradeDBInstance.MySQL.Major.md#USER_UpgradeDBInstance.MySQL.Major.RollbackAfterFailure)。  | 
|  失敗  | RDS-EVENT-0219 |  資料庫執行個體處於無效狀態。無需採取任何動作。稍後將重試自動擴展。  | 無 | 
|  失敗  | RDS-EVENT-0220 |  資料庫執行個體處於先前擴展儲存操作的冷卻期。我們正在最佳化您的資料庫執行個體。這至少需要 6 個小時。無需採取任何動作。自動擴展將在冷靜期後重試。  | 無 | 
|  失敗  | RDS-EVENT-0223 |  儲存自動擴展無法擴展儲存，原因如下：*reason*。  | 無 | 
|  失敗  | RDS-EVENT-0224 |  儲存自動擴展已觸發將達到或超出最大儲存閾值的擱置擴展儲存任務。增加最大儲存閾值。  | 無 | 
|  失敗  | RDS-EVENT-0237 |  資料庫執行個體具有目前在可用區域中無法使用的儲存類型。稍後將重試自動擴展。  | 無 | 
| 失敗 | RDS-EVENT-0254 |  此客戶帳戶的基礎儲存配額已超出限制。請增加允許的儲存配額，讓擴展可在執行個體上進行。  | 無 | 
|  失敗  |  RDS-EVENT-0278  |  資料庫執行個體建立失敗。*訊息*  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0279  |  RDS Custom 僅供讀取複本提升失敗。*訊息*  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0280  |  RDS Custom 無法升級資料庫執行個體，因為預先檢查失敗。*訊息*  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0281  |  RDS Custom 無法修改資料庫執行個體，因為預先檢查失敗。*訊息*  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0282  |  RDS Custom 無法修改資料庫執行個體，因為彈性 IP 權限不正確。請確認彈性 IP 地址已標記為 `AWSRDSCustom`。  |  無  | 
|  失敗  |  RDS-EVENT-0283  |  RDS Custom 無法修改資料庫執行個體，因為您的帳戶已達到彈性 IP 限制。釋放未使用的彈性 IP 或要求提高彈性 IP 地址限制的配額。  |  無  | 
|  失敗  |  RDS-EVENT-0284  |  RDS Custom 無法將執行個體轉換至高可用性，因為預先檢查失敗。*訊息*  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0285  |  RDS Custom 無法建立資料庫執行個體的最終快照，因為*訊息*。  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  |  RDS-EVENT-0421  |  RDS Custom 無法將資料庫執行個體轉換為多可用區域部署：*訊息*。執行個體將維持單一可用區域部署。如需 RDS Custom for Oracle 的多可用區域部署相關資訊，請參閱《RDS 使用者指南》。  |  該*訊息*包含有關故障的詳細資料。  | 
|  失敗  | RDS-EVENT-0306 |  儲存體組態升級失敗。請重試升級。  | 無 | 
|  失敗  | RDS-EVENT-0315 |  無法將不相容的網路資料庫 *name* 移至可用狀態：*message*  |  資料庫網路組態無效。無法將資料庫從不相容的網路移至可用的網路。  | 
| 失敗 | RDS-EVENT-0328 |  無法將主機加入網域。執行個體*執行個體名稱*的網域成員資格狀態已設定為「已失敗」。  | 無 | 
| 失敗 | RDS-EVENT-0329 |  無法將主機加入您的網域。在網域加入程序期間，Microsoft Windows 傳回了錯誤代碼*訊息*。驗證您的網路和許可組態，並發出重新嘗試加入網域的 `modify-db-instance` 請求。  | 使用自我管理 Active Directory 時，請參閱 [對自我管理 Active Directory 進行疑難排解](USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory.md)。 | 
| 失敗 | RDS-EVENT-0353 |  由於資源限制不足，無法建立資料庫執行個體。*訊息*。  |  該*訊息*包含有關故障的詳細資料。  | 
| 失敗 | RDS-EVENT-0356 |  RDS 無法在您的網域中設定 Kerberos 端點。這可能會阻止資料庫執行個體的 Kerberos 身分驗證。驗證資料庫執行個體和網域控制站之間的網路組態。  | 無 | 
| 失敗 | RDS-EVENT-0418 | Amazon RDS 無法存取資料庫執行個體*名稱*的 KMS 加密金鑰。這可能是由於金鑰遭停用或 Amazon RDS 無法存取該金鑰。如果繼續執行，資料庫將進入無法存取的狀態。如需進一步的詳細資訊，請參閱 Amazon RDS 文件中的疑難排解一節。 | 無 | 
| 失敗 | RDS-EVENT-0420 | Amazon RDS 現在可成功存取資料庫執行個體*名稱*的 KMS 加密金鑰。 | 無 | 
|  低儲存  | RDS-EVENT-0007 |  配置的儲存已用盡。請配置額外的儲存來解決此問題。  |  已經使用為資料庫執行個體分配的儲存。若要解決此問題，為此資料庫執行個體分配額外儲存空間。如需詳細資訊，請參閱 [RDS 常見問答集](https://aws.amazon.com/rds/faqs)。您可以使用 **Free Storage Space (可用儲存空間)** 指標來監控資料庫執行個體的儲存空間。  | 
|  低儲存  | RDS-EVENT-0089 |  資料庫執行個體 *name* 的可用儲存容量低至所佈建儲存體的 *percentage* [佈建的儲存體：*size*，可用的儲存體：*size*]。您可能想要增加已佈建的儲存體來解決此問題。  |  資料庫執行個體已消耗超過其分配儲存容量的 90%。您可以使用 **Free Storage Space (可用儲存空間)** 指標來監控資料庫執行個體的儲存空間。  | 
|  低儲存  | RDS-EVENT-0227 |  Aurora 叢集的儲存體極低，只剩下 *amount* TB。請採取措施來減少叢集上的儲存負載。  |  Aurora 儲存子系統的空間不足。  | 
|  維護  | RDS-EVENT-0026 |  正在將離線修補程式套用至資料庫執行個體。  |  資料庫執行個體的離線維護正在進行。資料庫執行個體目前無法使用。  | 
|  維護  | RDS-EVENT-0027 |  已完成將離線修補程式套用至資料庫執行個體。  |  資料庫執行個體的離線維護已完成。資料庫執行個體現在可用。  | 
|  維護  | RDS-EVENT-0047 |  已修補資料庫執行個體。  | 無 | 
|  維護  | RDS-EVENT-0155 |  資料庫執行個體有可用的資料庫引擎次要版本升級。  | 無 | 
|  維護  | RDS-EVENT-0178 |  資料庫執行個體升級正在進行中。  | 無 | 
|  維護  | RDS-EVENT-0264 |  資料庫引擎版本升級已開始預先檢查。  | 無 | 
|  維護  | RDS-EVENT-0265 |  資料庫引擎版本升級已完成預先檢查。  | 無 | 
|  維護  | RDS-EVENT-0266 |  資料庫執行個體的停機時間已開始。  | 無 | 
|  維護  | RDS-EVENT-0267 |  引擎版本升級已開始。  | 無 | 
|  維護  | RDS-EVENT-0268 |  引擎版本升級已完成。 | 無 | 
|  維護  | RDS-EVENT-0269 |  升級後任務正在進行中。 | 無 | 
|  維護  | RDS-EVENT-0270 |  資料庫引擎版本升級失敗。引擎版本升級復原成功。 | 無 | 
|  維護  | RDS-EVENT-0398 |  等待資料庫引擎版本升級在主要資料庫執行個體上完成。 | 在主要引擎版本升級期間，在僅供讀取複本上發出。 | 
|  維護  | RDS-EVENT-0399 |  等待資料庫引擎版本升級在僅供讀取複本上完成。 | 在主要引擎版本升級期間在來源資料庫引擎上發出。 | 
|  維護  | RDS-EVENT-0422 |  由於待定維護動作，RDS 將取代資料庫執行個體*名稱*的主機。 | 無 | 
|  維護，故障  | RDS-EVENT-0195 |  *message*  |  更新 Oracle 時區檔案失敗。如需詳細資訊，請參閱[Oracle 時區檔案自動升級](Appendix.Oracle.Options.Timezone-file-autoupgrade.md)。  | 
|  維護，通知  | RDS-EVENT-0191 |  時區檔案的新版本可用於更新。  |  當您更新 RDS for Oracle 資料庫引擎時，如果您尚未選擇時區檔案升級，且資料庫並未使用執行個體上可用的最新 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 資料庫執行個體正在使用最新的時區檔案版本，且下列任一陳述式為 true： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)。  | 
|  notification  | RDS-EVENT-0044 |  *message*  | 這是操作員發出的通知。如需詳細資訊，請參閱事件訊息。 | 
|  則通知  | RDS-EVENT-0048 |  延遲資料庫引擎升級，因為此執行個體具有需要先升級的僅供讀取複本。  | 資料庫執行個體的修補作業已延遲。 | 
|  則通知  | RDS-EVENT-0054 |  *message*  | 您正在使用的 MySQL 儲存空間引擎並非 InnoDB，此為 Amazon RDS 建議使用的 MySQL 儲存空間引擎。如需 MySQL 儲存引擎的相關資訊，請參閱 [支援的 RDS for MySQL 儲存引擎](MySQL.Concepts.FeatureSupport.md#MySQL.Concepts.Storage)。 | 
|  notification  | RDS-EVENT-0055 |  *message*  |  您擁有的資料庫執行個體表格數量已超過建議用於 Amazon RDS 的最佳實務。減少資料庫執行個體上的表格數量。如需建議最佳實務的詳細資訊，請參閱 [Amazon RDS 基本操作準則](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance)。  | 
|  則通知  | RDS-EVENT-0056 |  *message*  |  您的資料庫執行個體上的資料庫數量已超過建議用於 Amazon RDS 的最佳實務。減少資料庫執行個體上的資料庫數量。如需建議最佳實務的詳細資訊，請參閱 [Amazon RDS 基本操作準則](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance)。  | 
|  則通知  | RDS-EVENT-0064 |  TDE 加密金鑰已成功輪換。  | 如需建議最佳實務的詳細資訊，請參閱 [Amazon RDS 基本操作準則](CHAP_BestPractices.md#CHAP_BestPractices.DiskPerformance)。 | 
|  則通知  | RDS-EVENT-0084 |  無法將資料庫執行個體轉換為多可用區域：*message*。  |  您嘗試將資料庫執行個體轉換為多可用區域，但其包含多可用區域不支援的記憶體內檔案群組。如需更多詳細資訊，請參閱 [Amazon RDS for Microsoft SQL Server 的異地同步備份部署](USER_SQLServerMultiAZ.md)。  | 
|  則通知  | RDS-EVENT-0087 |  資料庫執行個體已停止。  | 無 | 
|  notification  | RDS-EVENT-0088 |  資料庫執行個體已啟動。  | 無 | 
|  notification  | RDS-EVENT-0154 |  資料庫執行個體由於超過允許停止的時間上限而正在啟動。  | 無 | 
|  notification  | RDS-EVENT-0157 |  無法修改資料庫執行個體類別。*message*。  |  RDS 無法修改資料庫執行個體類別，因為目標執行個體類別不支援來源資料庫執行個體上存在的資料庫數量。錯誤訊息顯示為：「執行個體有 *N* 個資料庫，但轉換後只支援 *N*。如需更多詳細資訊，請參閱 [Microsoft SQL Server 資料庫執行個體的限制](CHAP_SQLServer.md#SQLServer.Concepts.General.FeatureSupport.Limits)。  | 
|  則通知  | RDS-EVENT-0158 |  資料庫執行個體處於無法升級的狀態：*message*。  | 無 | 
|  則通知  | RDS-EVENT-0167 |  *message*  |  RDS Custom 支援周邊組態已變更。  | 
|  則通知  | RDS-EVENT-0189 |  RDS 資料庫執行個體的 gp2 爆量餘額點數不足。若要解決此問題，請降低 IOPS 使用量，或修改儲存設定以啟用更高的效能。  |  RDS 資料庫執行個體的 gp2 爆量餘額點數不足。若要解決此問題，請降低 IOPS 使用量，或修改儲存設定以啟用更高的效能。如需詳細資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的輸入/輸出[額度和爆量效能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#EBSVolumeTypes_gp2)。  | 
|  notification  | RDS-EVENT-0225 |  配置的儲存體大小 *amount* GB 正在接近最大儲存體閾值 *amount* GB。增加最大儲存閾值。  |  當配置的儲存體達到最大儲存體閾值的 80% 時，系統會叫用此事件。若要避免此事件，請增加最大儲存閾值。  | 
|  notification  | RDS-EVENT-0231 |  資料庫執行個體的儲存修改時發生內部錯誤。修改請求處於待定狀態，將於稍後重試。  |  僅供讀取複寫程序發生錯誤。如需更多詳細資訊，請參閱事件訊息。 此外，請參閱資料庫引擎僅供讀取複本的疑難排解一節。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/USER_Events.Messages.html)  | 
|  notification  | RDS-EVENT-0253 |  資料庫正在使用雙寫緩衝區。*message*。如需詳細資訊，請參閱 *name* 文件的 RDS Optimized Writes。  | RDS 最佳化寫入與執行個體儲存組態不相容。如需詳細資訊，請參閱[使用 RDS Optimized Writes 改善 MySQL 的寫入效能](rds-optimized-writes.md)及[使用 Amazon RDS Optimized Writes 改善 MariaDB 的寫入效能](rds-optimized-writes-mariadb.md)。 您可以執行儲存體組態升級，藉由[建立藍/綠部署](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/blue-green-deployments-creating.html)來啟用 Optimized Writes。 | 
|  notification  | RDS-EVENT-0297 |  資料庫執行個體 *name* 的儲存體組態支援 16384 GiB 的大小上限。執行儲存體組態升級，以支援大於 16384 GiB 的儲存體大小。  | 您無法將資料庫執行個體的配置儲存體大小增加至 16384 GiB 以上。若要克服此限制，請執行儲存體組態升級。如需詳細資訊，請參閱[升級資料庫執行個體的儲存體檔案系統](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem)。  | 
|  notification  | RDS-EVENT-0298 |  資料庫執行個體 *name* 的儲存體組態支援 2048 GiB 的資料表大小上限。執行儲存體組態升級，以支援大於 2048 GiB 的資料表大小。  | 具有此限制的 RDS MySQL 和 MariaDB 執行個體不能具有超過 2048 GiB 的資料表大小。若要克服此限制，請執行儲存體組態升級。如需詳細資訊，請參閱[升級資料庫執行個體的儲存體檔案系統](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.UpgradeFileSystem)。  | 
|  notification  | RDS-EVENT-0327 |  Amazon RDS 找不到秘密*秘密 ARN*。*訊息*。  | 無 | 
|  notification  | RDS-EVENT-0365 |  時區檔案已更新。重新啟動 RDS 執行個體，讓變更生效。  | 無 | 
|  notification  | RDS-EVENT-0385 |  叢集拓撲已更新。  |  資料庫執行個體的資料庫叢集有 DNS 變更。這包括新增或刪除新的資料庫執行個體，或發生容錯移轉時。  | 
|  notification  | RDS-EVENT-0403 |  資料庫工作負載導致系統的記憶體極低。為了協助緩解問題，RDS 會自動將 innodb\$1buffer\$1pool\$1size 的值設定為*數量*。  |  僅適用於 RDS for MySQL 和 RDS for MariaDB 資料庫執行個體。  | 
|  notification  | RDS-EVENT-0404 |  資料庫工作負載導致系統的記憶體極低。為了協助緩解問題，RDS 會自動將 shared\$1buffers 的值設定為*數量*。  |  僅適用於 RDS for PostgreSQL 資料庫執行個體。  | 
|  僅供讀取複本  | 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 |  資料庫執行個體的復原已啟動。復原時間依據恢復的資料量而有不同。  | 無 | 
|  復原  | RDS-EVENT-0021 |  資料庫執行個體的復原已完成。  | 無 | 
|  復原  | RDS-EVENT-0023 |  緊急快照請求：*message*。  |  已請求手動備份，但 Amazon RDS 目前正在建立資料庫快照。請在 Amazon RDS 完成資料庫快照後，再次提交請求。  | 
|  復原  | RDS-EVENT-0052 |  多可用區域執行個體復原已啟動。  | 復原時間依據恢復的資料量而有不同。 | 
|  復原  | RDS-EVENT-0053 |  多可用區域執行個體復原已完成。擱置容錯移轉或啟動。  | 此訊息表示 Amazon RDS 已備妥您的資料庫執行個體，以在必要時啟動次要執行個體的容錯移轉。 | 
|  復原  | RDS-EVENT-0066 |  重新建立鏡像時，執行個體將降級：*message*。  |  SQL Server 資料庫執行個體正在重新建立其鏡像。將會降低效能，直到鏡像重新建立完成。找到含有非 FULL 還原模型的資料庫。還原模型已變回 FULL，且已啟動鏡像還原。(<dbname>: <recovery model found>[,...])”  | 
|  復原  | RDS-EVENT-0166 |  *message*  |  RDS Custom 資料庫執行個體在支援周邊之內。  | 
|  復原  | RDS-EVENT-0361 |  待命資料庫執行個體的復原已啟動。  |  待命資料庫執行個體會在復原程序期間重建。資料庫效能會在復原程序期間受到影響。  | 
|  復原  | RDS-EVENT-0362 |  待命資料庫執行個體的復原已完成。  |  待命資料庫執行個體會在復原程序期間重建。資料庫效能會在復原程序期間受到影響。  | 
|  還原  | RDS-EVENT-0019 |  已從資料庫執行個體 *name* 還原至 *name*。  |  資料庫執行個體已從時間點備份還原。  | 
|  安全  | RDS-EVENT-0068 |  解密 hsm 分割區密碼以更新執行個體。  |  RDS 正在解密 AWS CloudHSM 分割區密碼，以更新資料庫執行個體。如需詳細資訊，請參閱《AWS CloudHSM 使用者指南》**中的[使用 AWS CloudHSM進行 Oracle 資料庫透明資料加密 (TDE)](https://docs.aws.amazon.com/cloudhsm/latest/userguide/oracle-tde.html)。  | 
|  安全性修補程式  | RDS-EVENT-0230 |  系統更新適用於您的資料庫執行個體。如需套用更新的相關資訊，請參閱《RDS 使用者指南》中的「維護資料庫執行個體」。  |  有新的作業系統更新可用。 新的次要版本作業系統更新適用於您的資料庫執行個體。如需套用更新的相關資訊，請參閱 [RDS 資料庫執行個體的作業系統更新](USER_UpgradeDBInstance.Maintenance.md#OS_Updates)。  | 
|  維護  | RDS-EVENT-0425 |  Amazon RDS 無法執行作業系統升級，因為指定的子網路中沒有可用的 IP 地址。選擇具有可用 IP 地址的子網路，然後再試一次。  |  無  | 
|  維護  | RDS-EVENT-0429 |  由於*區域*可用區域中*類型*執行個體類型的可用容量不足，Amazon RDS 無法執行作業系統升級  |  無  | 
|  維護  | RDS-EVENT-0501 |  Amazon RDS 資料庫執行個體的伺服器憑證需要輪換待定的維護動作。  |  資料庫執行個體的伺服器憑證需要輪換待定的維護動作。Amazon RDS 會在此維護期間重新啟動資料庫，以完成憑證輪換。若要排程此維護，請前往**維護與備份**索引標籤，然後選擇**立即套用**或**排程下一個維護時段**。如果未排定變更，Amazon RDS 會在您的維護動作中顯示的自動套用日期，自動將其套用至您的維護時段。  | 
|  維護  | RDS-EVENT-0502 |  Amazon RDS 已在下一個維護時段排定資料庫執行個體的伺服器憑證輪換。此維護需要重新啟動資料庫。  |  無  | 

## 資料庫參數群組事件
<a name="USER_Events.Messages.parameter-group"></a>

下表顯示當資料庫參數群組為來源類型時的事件類別和事件清單。


|  類別  | RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  組態變更  | RDS-EVENT-0037 |  已將參數 *name* 更新為 *value*，套用方法為 *method*。  |  無  | 

## 資料庫安全群組事件
<a name="USER_Events.Messages.security-group"></a>

下表顯示當資料庫安全群組為來源類型時的事件類別和事件清單。

**注意**  
資料庫安全群組是 EC2-Classic 的資源。EC2-Classic 在 2022 年 8 月 15 日淘汰。如果您還沒有從 EC2-Classic 遷移至 VPC，建議您盡快這麼做。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[從 EC2-Classic 遷移至 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)，以及部落格文章 [EC2-Classic Networking is Retiring – Here’s How to Prepare ](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/)。


|  Category  | RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  組態變更  | RDS-EVENT-0038 |  已將變更套用至安全群組。  |  無  | 
|  失敗  | RDS-EVENT-0039 |  正以 *user* 身分撤銷授權。  |  由 *user* 擁有的安全群組不存在。已撤銷安全群組的授權，因為它無效。  | 

## 資料庫快照事件
<a name="USER_Events.Messages.snapshot"></a>

下表顯示當資料庫快照為來源類型時的事件類別和事件清單。

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

## RDS Proxy 事件
<a name="USER_Events.Messages.rds-proxy"></a>

下表顯示 RDS Proxy 為來源類型時的事件類別和事件清單。


|  Category  | RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
| 組態變更 | RDS-EVENT-0204 |  RDS 已修改資料庫代理 *name*。  | 無 | 
| 組態變更 | RDS-EVENT-0207 |  RDS 已修改資料庫代理 *name* 的端點。  | 無 | 
| 組態變更 | RDS-EVENT-0213 |  RDS 偵測到新增了資料庫執行個體，並自動將其新增到資料庫代理 *name* 的目標群組。  | 無 | 
|  組態變更  | RDS-EVENT-0214 |  RDS 偵測到刪除了資料庫執行個體 *name*，並自動將其從資料庫代理 *name* 的目標群組 *name* 中移除。  | 無 | 
|  組態變更  | RDS-EVENT-0215 |  RDS 偵測到刪除了資料庫叢集 *name*，並自動將其從資料庫代理 *name* 的目標群組 *name* 中移除。  | 無 | 
|  建立  | RDS-EVENT-0203 |  RDS 已建立資料庫代理 *name*。  | 無 | 
|  建立  | RDS-EVENT-0206 |  RDS 已建立資料庫代理 *name* 的端點 *name*。  | 無 | 
| 刪除 | RDS-EVENT-0205 |  RDS 已刪除資料庫代理 *name*。  | 無 | 
|  刪除  | RDS-EVENT-0208 |  RDS 已刪除資料庫代理 *name* 的端點 *name*。  | 無 | 
|  失敗  | RDS-EVENT-0243 |  RDS 無法佈建代理 *name* 的容量，因為您的子網路中沒有足夠的可用 IP 地址：*name*。若要修正此問題，請確定您的子網路具有最低數量的未使用 IP 地址，如 RDS Proxy 文件所建議。  |  若要確定執行個體類別的建議數量，請參閱 [規劃 IP 地址容量](rds-proxy-network-prereqs.md#rds-proxy-network-prereqs.plan-ip-address)。  | 
|  失敗 | RDS-EVENT-0275 |  RDS 對部分連往資料庫代理*名稱*的連線進行限流。從用戶端到代理的同時連線要求數目已超過限制。  | 無 | 

## 藍/綠部署事件
<a name="USER_Events.Messages.BlueGreenDeployments"></a>

下表顯示當藍/綠部署為來源類型時的事件類別和事件清單。

如需藍/綠部署的詳細資訊，請參閱 [使用 Amazon RDS 藍/綠部署進行資料庫更新](blue-green-deployments.md)。


|  Category  | Amazon RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  建立  | RDS-EVENT-0244 |  藍/綠部署任務已完成。您可以在部署之後，於綠色環境中對資料庫進行其他修改。  | 無 | 
|  失敗  | RDS-EVENT-0245 |  因為*原因*，建立藍/綠部署失敗。  | 無 | 
|  刪除  | RDS-EVENT-0246 |  已刪除藍/綠部署。  | 無 | 
|  notification  | RDS-EVENT-0247 |  從 *blue* 至 *green* 的轉換已開始。  | 無 | 
|  notification  | RDS-EVENT-0248 |  已完成藍/綠部署上的切換。  | 無 | 
|  失敗  | RDS-EVENT-0249 |  已取消藍/綠部署上的切換。  | 無 | 
|  notification  | RDS-EVENT-0250  |  從主要/僅供讀取複本 *blue* 至 *green* 的轉換已開始。  | 無 | 
|  notification  | RDS-EVENT-0251  |  從主要/僅供讀取複本 *blue* 至 *green* 的轉換已完成。已將 *blue* 重新命名為 *blue-old*，並將 *green* 重新命名為 *blue*。  | 無 | 
|  失敗  | RDS-EVENT-0252  |  由於 *reason*，已取消從主要/僅供讀取複本 *blue* 至 *green* 的轉換。  | 無 | 
|  notification  | RDS-EVENT-0307  |  將 *blue* 轉換至 *green* 的序列同步已啟動。使用序列時轉換可能會導致停機時間延長。  | 無 | 
|  notification  | RDS-EVENT-0308  |  將 *blue* 轉換至 *green* 的序列同步已完成。  | 無 | 
|  失敗  | RDS-EVENT-0310  |  由於序列同步失敗，已取消將 *blue* 轉換至 *green* 的序列同步。  | 無 | 
| notification | RDS-EVENT-0405 |  正在初始化您的儲存磁碟區。  |  無  | 
| notification | RDS-EVENT-0406 |  您的儲存磁碟區已初始化。  |  無  | 
|  notification  | RDS-EVENT-0409  |  *message*  | 無 | 

## 自訂引擎版本事件
<a name="USER_Events.Messages.CEV"></a>

下表顯示自訂引擎版本為來源類型時的事件類別和事件清單。


|  Category  | Amazon RDS 事件 ID |  訊息  |  備註  | 
| --- | --- | --- | --- | 
|  建立  | RDS-EVENT-0316 |  正在準備建立自訂引擎版本 *name*。整個建立程序最多可能需要四個小時來完成。  | 無 | 
|  建立  | RDS-EVENT-0317 |  正在建立自訂引擎版本 *name*。  | 無 | 
|  建立  | RDS-EVENT-0318 |  正在驗證自訂引擎版本 *name*。  | 無 | 
|  建立  | RDS-EVENT-0319 |  已成功建立自訂引擎版本 *name*。  | 無 | 
|  建立  | RDS-EVENT-0320 |  由於內部問題，RDS 無法建立自訂引擎版本 *name*。我們正在解決問題，並在必要時與您聯絡。如需進一步協助，請聯絡 [AWS 付費支援/](https://console.aws.amazon.com/support/)。  | 無 | 
|  失敗  | RDS-EVENT-0198 |  無法建立自訂引擎版本 *name*。*message*  | 該*訊息*包含有關故障的詳細資料，例如遺失的檔案。 | 
|  失敗  | RDS-EVENT-0277 |  刪除自訂引擎版本*名稱*的過程失敗。*訊息*  | 該*訊息*包含有關故障的詳細資料。 | 
|  還原  | RDS-EVENT-0352 |  時間點還原支援的最大資料庫計數已變更。  | 該*訊息*包含有關事件的詳細資訊。 | 

# 監控 Amazon RDS 日誌檔案
<a name="USER_LogAccess"></a>

每個 RDS 資料庫引擎都會產生日誌，供您存取以進行稽核和疑難排解。日誌檔類型視您的資料庫引擎而定。

您可以使用 AWS 管理主控台、AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 來存取資料庫執行個體的資料庫日誌。您無法檢視、觀看或下載交易日誌。

**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 管理主控台 來檢視 Amazon RDS DB 引擎的資料庫日誌檔案。您可以使用 AWS CLI 或 Amazon RDS API 來列出可用於下載或監控的記錄檔案。

**注意**  
若您無法檢視現有 RDS for Oracle 資料庫執行個體的日誌檔案清單，請重新開啟執行個體以檢視清單。

## 主控台
<a name="USER_LogAccess.CON"></a>

**檢視資料庫日誌檔案**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。

1. 向下捲動至 **Logs (日誌)** 區段。

1. (選用) 輸入搜尋詞來篩選結果。

1. 選擇您想要檢視的日誌，然後選擇 **View (檢視)**。

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

若要檢視資料庫執行個體的可用執行個體日誌檔案，請使用 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` 的資料庫執行個體之日誌檔案列表。

**Example**  

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

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

若要列出資料庫執行個體的可用資料庫日誌檔案，請使用 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 管理主控台、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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。

1. 向下捲動至 **Logs (日誌)** 區段。

1. 在 **Logs (日誌)** 區段中，選擇您想要下載的日誌旁的按鈕，然後選擇 **Download (下載)**。

1. 開啟提供之連結的內容 (右鍵) 功能表，然後選擇 **Save Link As** (另存連結為)。輸入您要儲存日誌檔案的位置，然後選擇 **Save (儲存)**。  
![\[檢視日誌檔案\]](http://docs.aws.amazon.com/zh_tw/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**  
針對 Linux、macOS 或 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 管理主控台 來觀看日誌檔。RDS 每 5 秒會重新整理日誌的結尾。

**查看資料庫日誌檔案**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您想檢視的日誌檔案所在的資料庫執行個體的名稱。

1. 選擇 **Logs & events (日誌與事件)** 標籤。  
![\[選擇 Logs & events (日誌與事件) 標籤\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_logsEvents.png)

1. 在 **Logs (日誌)** 區段中，選擇日誌檔案，然後選擇 **Watch (監看)**。  
![\[選擇日誌\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch.png)

   RDS 會顯示日誌檔的尾端，如下列 MySQL 範例所示。  
![\[日誌檔的尾部\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/Monitoring_LogsEvents_watch_content.png)

# 將資料庫日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Procedural.UploadtoCloudWatch"></a>

在內部部署資料庫中，資料庫日誌位於檔案系統上。Amazon RDS 不提供對資料庫執行個體的檔案系統上資料庫日誌的主機存取。因此，Amazon RDS 可讓您將資料庫日誌匯出至 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)。您可以使用 CloudWatch Logs，執行日誌資料的即時分析。您也可以將資料存放在高耐久的儲存體中，並使用 CloudWatch Logs 代理程式來管理資料。

**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 持續將您的資料庫執行個體日誌串流至日誌群組。例如，您所發佈每種類型的日誌都有一個日誌群組 `/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 資料庫引擎都支援自己的日誌集。若要瞭解資料庫引擎適用的選項，請檢閱下列主題：
+ [將 Db2 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.Db2.md#USER_LogAccess.Db2.PublishtoCloudWatchLogs)
+ [將 MariaDB 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.md)
+ [將 MySQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [將 Oracle 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Concepts.PostgreSQL.md#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)
+ [將 SQL Server 日誌發佈至 Amazon CloudWatch Logs](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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 執行下列任何一項：
   + 選擇 **Create database** (建立資料庫)。
   + 從清單中，選擇您的資料庫，然後選擇 **Modify** (修改)。

1. 在 **Logs exports** (日誌匯出) 中，選擇要發佈的日誌。

   下列範例指定稽核日誌、錯誤日誌、一般日誌、，以及 RDS for MySQL 資料庫執行個體的慢速查詢日誌。  
![\[選擇要發佈到 CloudWatch logs 的日誌類型\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/AddCWLogs.png)

## 在 CloudWatch Logs 中搜尋和篩選您的日誌
<a name="accessing-logs-in-cloudwatch"></a>

您可以使用 CloudWatch Logs 主控台搜尋與指定條件相符的日誌項目。您可以透過導向 CloudWatch Logs 主控台的 RDS 主控台存取日誌，或從 CloudWatch Logs 主控台直接存取。

**若要使用 RDS 主控台搜尋 RDS 日誌**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇一個資料庫執行個體。

1. 選擇 **Configuration (組態)**。

1. 在 **Published logs** (發佈日誌) 下方，選擇您要檢視的資料庫日誌。

**使用 CloudWatch Logs 主控台搜尋 RDS 日誌**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Log groups** (日誌群組)。

1. 在篩選方塊中，輸入 **/aws/rds**。

1. 針對 **Log Groups** (日誌群組)，輸入包含要搜尋之日誌串流的日誌群組名稱。

1. 對於 **Log Streams** (日誌串流)，選擇要搜尋的日誌串流名稱。

1. 在 **Log events (日誌事件)** 下方，輸入要使用的篩選條件語法。

如需詳細資訊，請參閱《*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 提供允許存取資料庫執行個體日誌檔案的 REST 端點。若您需要編寫應用程式來串流 Amazon RDS 日誌檔案內容，此操作非常有幫助。

語法是：

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

下列是必要參數：
+ `DBInstanceIdentifier` — 含有您想要下載之日誌檔案的資料庫執行個體名稱。
+ `LogFileName` — 要下載的日誌檔案名稱。

回應包括要求之日誌檔案的內容，做為串流形式。

下列範例下載名為 *log/ERROR.6* 的日誌檔案供名為 *sample-sql* 的資料庫執行個體使用，位於 *us-west-2* 區域中。

```
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
```

若您指定不存在的資料庫執行個體，回應會包含下列錯誤：
+ `DBInstanceNotFound` —`DBInstanceIdentifier` 不代表現有的資料庫執行個體。(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)
+ [將 Db2 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Db2.PublishtoCloudWatchLogs)

## 保留排程
<a name="USER_LogAccess.Concepts.Db2.Retention"></a>

不論您的資料庫執行個體何時重新啟動，日誌檔案都會每日輪換。下列為 Amazon RDS 上的 RDS for Db2 日誌的保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  診斷日誌  |  Db2 會在執行個體層級組態的保留設定之外刪除日誌。Amazon RDS 會將 `diagsize` 參數設定為 1000。  | 
|  通知日誌  |  Db2 會在執行個體層級組態的保留設定之外刪除日誌。Amazon RDS 會將 `diagsize` 參數設定為 1000。  | 

## 將 Db2 日誌發佈至 Amazon CloudWatch Logs
<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>

**從 將 RDS for Db2 日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 RDS for Db2 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值是 JSON 字串陣列，可包含 `diag.log`、`notify.log` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

**Example**  
下列範例修改現有的 RDS for Db2 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `EnableLogTypes`，而值為字串陣列，可包含 `diag.log`、`notify.log` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

**Example**  
下列範例修改現有的 RDS for Db2 資料庫執行個體，以停用將診斷日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `DisableLogTypes`，而值為字串陣列，可包含 `diag.log`、`notify.log` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

# MariaDB 資料庫日誌檔案
<a name="USER_LogAccess.Concepts.MariaDB"></a>

您可以監控 MariaDB 錯誤日誌、慢速查詢日誌、IAM 資料庫身分驗證錯誤日誌以及一般日誌。預設會產生 MariaDB 錯誤記錄，您可以透過在資料庫參數群組中設定參數，來產生慢查詢記錄和一般記錄。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)
+ [將 MariaDB 日誌發佈至 Amazon CloudWatch Logs](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` 檔案接著會於每個小時輪換，而過去 24 小時間產生的每小時檔案將會保留。每個日誌檔案的產生時間 (UTC 時區) 皆會附加於檔案名稱中。日誌檔案也有時間戳記，可協助您判定日誌項目寫入的時間。

MariaDB 只會在啟動、關機和發生錯誤時寫入錯誤日誌。資料庫執行個體可在未寫入新項目到錯誤日誌的情況下持續執行數小時或數日。若您沒有看到最近的項目，是因為伺服器未遇到需寫入日誌項目的錯誤。

# 存取 MariaDB 慢查詢日誌及一般日誌
<a name="USER_LogAccess.MariaDB.Generallog"></a>

您可在資料庫參數群組中設定參數，將 MariaDB 慢查詢日誌與一般日誌寫入至檔案或資料庫表格。如需建立和修改資料庫參數群組的詳細資訊，請參閱[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 小時前的日誌檔將會刪除。在部分情況下，刪除後剩餘的總日誌檔大小可能超過資料庫執行個體配得之空間的 2% 閾值。在這些情況中，最大的日誌檔將被刪除，直到日誌檔大小不再超過閾值。
+ 當 `TABLE` 日誌記錄啟用時，在某些情況下，日誌資料表每 24 小時會輪換一次。在表格日誌使用的空間超過所配置儲存空間的 20% 時，就會發生輪換。如果所有日誌合併後的大小超過 10 GB 時，也會發生這種情況。若資料庫執行個體使用的空間總量高於資料庫執行個體配得之儲存空間的 90% 時，日誌輪換的閾值將會降低。在表格日誌使用的空間超過所配置儲存空間的 10% 時，就會輪換日誌表格。如果所有日誌合併後的大小超過 5 GB 時，也會轉換它們。

  輪換日誌資料表時，目前日誌資料表會複製到備份日誌資料表，並移除目前日誌資料表中的項目。如果備份日誌資料表已存在，則其會在目前日誌資料表複製到備份之前刪除。如有需要，您可以查詢備份日誌資料表。`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 中同時記錄 `TABLE` 與 `FILE` 日誌輪換，並傳送通知給您。

若要從 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/)

# 將 MariaDB 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs"></a>

您可以設定 MariaDB 資料庫執行個體，以將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以執行日誌資料的即時分析，並使用 CloudWatch 來建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高耐用性的儲存裝置中。

Amazon RDS 將每個 MariaDB 資料庫日誌發佈為日誌群組中獨立的資料庫流。例如，假設您設定匯出函數來包含慢查詢日誌。然後，慢查詢資料會存放在 `/aws/rds/instance/my_instance/slowquery` 日誌群組的慢查詢日誌串流中。

錯誤日誌預設為啟用。下表摘要說明其他 MariaDB 日誌的要求。


| 日誌 | 要求 | 
| --- | --- | 
|  稽核日誌  |  資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。  | 
|  一般日誌  |  資料庫執行個體必須使用含有參數設定 `general_log = 1` 的自訂參數群組，以啟用一般日誌。  | 
|  慢查詢日誌  |  資料庫執行個體必須使用含有參數設定 `slow_query_log = 1` 或 `log_slow_query = 1` 的自訂參數群組，以啟用慢查詢日誌。  | 
|  IAM 資料庫身分驗證錯誤日誌  |  您必須透過建立或修改資料庫執行個體來啟用資料庫執行個體的日誌類型 `iam-db-auth-error`。  | 
|  記錄輸出  |  資料庫執行個體必須使用含有參數設定 `log_output = FILE` 的自訂參數群組，以將日誌寫入到檔案系統，並發佈到 CloudWatch Logs。  | 

## 主控台
<a name="USER_LogAccess.MariaDB.PublishtoCloudWatchLogs.CON"></a>

**從主控台發佈 MariaDB 日誌到 CloudWatch Logs**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

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

您可以使用 發佈 MariaDB 日誌 AWS CLI。您可以使用下列參數來呼叫 [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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例修改現有的 MariaDB 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `EnableLogTypes`，而其值為字串陣列，其中包含 `audit`、`error`、`general` 以及 `slowquery` 的任意組合。  
針對 Linux、macOS 或 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**  
下列命令建立 MariaDB 資料庫執行個體並將日誌檔案發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值為 JSON 字串陣列。字串可以是 `audit`、`error`、`general` 以及 `slowquery` 的任意組合。  
針對 Linux、macOS 或 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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 慢查詢日誌、錯誤日誌以及一般日誌檔案大小限制為不超過資料庫執行個體配得之儲存空間的 2%。為保持此閾值，日誌會每小時輪換，而超過 24 小時的日誌檔案將會移除。若在移除舊日誌檔案後總日誌檔案大小仍超過閾值，將會從最大的日誌檔案開始刪除，直到日誌檔案大小不再超過閾值為止。

Amazon RDS 會輪換大於 10 MB 的 IAM 資料庫身分驗證錯誤日誌檔案。Amazon RDS 會移除超過五天或大於 100 MB 的 IAM 資料庫身分驗證錯誤日誌檔案。

# 管理表格式 MariaDB 日誌
<a name="Appendix.MariaDB.CommonDBATasks.Logs"></a>

您可以將一般與慢查詢日誌導向至資料庫執行個體上的表格。若要這樣做，請建立資料庫參數群組，並將 `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 文件中的[二進位日誌](https://mariadb.com/kb/en/binary-log/)。

自動備份功能會決定 MariaDB 要開啟還是關閉二進位日誌記錄功能。您有下列選項：

開啟二進位日誌記錄功能  
將備份保留期設定為正的非零值。

關閉二進位日誌記錄功能  
將備份保留期間設定為 0。

如需詳細資訊，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

Amazon RDS 上的 MariaDB 支援*基於列*、*基於陳述式*和*混合式*二進位日誌記錄格式。預設二進位日誌格式為*混合式*。如需不同 MariaDB 二進位日誌格式的詳細資訊，請參閱 MariaDB 文件中的[二進位日誌格式](http://mariadb.com/kb/en/mariadb/binary-log-formats/)。

如果您打算使用複寫，二進位記錄格式很重要。這是因為其決定資料變更的記錄，而此記錄會記錄在來源中並傳送到複寫目標。如需有關複寫時各種二進位日誌記錄格式的優缺點的資訊，請參閱 MySQL 文件中的[基於陳述式和基於列的複寫的優缺點](https://dev.mysql.com/doc/refman/5.7/en/replication-sbr-rbr.html)。

**重要**  
將二進位日誌格式設為行形式可能導致非常大的二進位日誌檔案。大型二進位日誌檔會減少資料庫執行個體可用的儲存空間數量。它們還會增加執行資料庫執行個體還原操作的時間量。  
基於陳述式的複寫可能會造成來源資料庫執行個體與僅供讀取複本不一致。如需詳細資訊，請參閱 MariaDB 文件中的[在基於陳述式的複寫中不安全的陳述式](https://mariadb.com/kb/en/library/unsafe-statements-for-statement-based-replication/)。  
啟用二進位記錄會增加資料庫執行個體的寫入磁碟 I/O 操作次數。您可以使用 `WriteIOPS` CloudWatch 指標來監控 IOPS 使用情況。

**設定 MariaDB 二進位日誌格式**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇您要修改的資料庫執行個體所使用的參數群組。

   您無法修改預設參數群組。如果資料庫執行個體使用預設參數群組，請建立新的參數群組，並將它與資料庫執行個體建立關聯。

   如需資料庫參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 針對 **Parameter group actions (參數群組動作)**，選擇 **Edit (編輯)**。

1. 將 `binlog_format` 參數設為您選擇的二進位日誌記錄格式 (**ROW**、**STATEMENT** 或 **MIXED**)。

   您可以將資料庫執行個體的備份保留期間設定為零來關閉二進位記錄，但這會停用每日自動備份。停用自動備份會關閉或停用 `log_bin` 工作階段變數。這會停用 RDS for MariaDB 資料庫執行個體上的二進位記錄，進而在資料庫中將 `binlog_format` 工作階段變數重設為 `ROW` 的預設值。我們建議您不要停用備份。如需**備份保留期間**設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

1. 選擇 **Save changes (儲存變更)** 來儲存對資料庫參數群組的更新。

由於 `binlog_format` 參數在 RDS for MariaDB 中是動態的，因此您不需要將資料庫執行個體重新開機即可套用變更。

**重要**  
變更資料庫參數群組會影響使用該參數群組的所有資料庫執行個體。如果您想要為 AWS 區域中的不同 MariaDB 資料庫執行個體指定不同的二進位記錄格式，則資料庫執行個體必須使用不同的資料庫參數群組。這些參數群組會識別不同的記錄格式。將適當的資料庫參數群組指派給每個資料庫執行個體。

# 存取 MariaDB 二進位日誌
<a name="USER_LogAccess.MariaDB.Binarylog"></a>

您可以使用 mysqlbinlog 公用程式，自 MariaDB 資料庫執行個體下載文字格式的二進位日誌。二進位日誌已下載到您的本機電腦。如需使用 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/)。

 以下是範例：

針對 Linux、macOS 或 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` 預存程序。指定具有足夠時間供您下載日誌的期間。設定保留期間之後，請監控資料庫執行個體的儲存體用量，確定保留的二進位日誌沒有佔用太多儲存空間。

下列範例將保留期間設定為 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 資料庫執行個體中，您可以使用會導致行事件之含有 SQL 查詢副本的 `Annotate_rows` 事件來對行事件做註釋。此方法提供類似的功能，可啟用 RDS for MySQL 資料庫執行個體上的 `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>

不論您的資料庫執行個體何時重新啟動，日誌檔案都會每日輪換。下列為 Amazon RDS 上的 Microsoft SQL Server 日誌保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  錯誤日誌  |  最多會保留 30 個錯誤記錄。Amazon RDS 可能會刪除超過 7 日的錯誤記錄。  | 
|  代理程式日誌  |  最多會保留 10 個代理程式記錄。Amazon RDS 可能會刪除超過 7 日的代理程式記錄。  | 
|  追蹤檔案  |  追蹤檔案會依據您資料庫執行個體的追蹤檔案保留期間進行保存。預設的追蹤檔案保留期間為 7 天。若要修改您資料庫執行個體的追蹤檔案保留期間，請參閱 [設定追蹤和傾印檔案的保留期間](Appendix.SQLServer.CommonDBATasks.TraceFiles.md#Appendix.SQLServer.CommonDBATasks.TraceFiles.PurgeTraceFiles)。  | 
|  傾印檔案  |  傾印檔案會依據您資料庫執行個體的傾印檔案保留期間進行保存。預設的傾印檔案保留期間為 7 天。若要修改您資料庫執行個體的傾印檔案保留期間，請參閱 [設定追蹤和傾印檔案的保留期間](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)。

## 將 SQL Server 日誌發佈至 Amazon CloudWatch Logs
<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` 日誌群組中。

對於多可用區域資料庫執行個體，Amazon RDS 會在日誌群組中以兩個獨立的串流形式發佈資料庫日誌。例如，如果您發佈錯誤日誌，錯誤資料會分別存放在錯誤日誌串流 `/aws/rds/instance/my_instance.node1/error` 和 `/aws/rds/instance/my_instance.node2/error` 中。日誌串流在容錯移轉期間不會變更，而且每個節點的錯誤日誌串流可能包含來自主要或次要執行個體的錯誤日誌。使用多可用區域時，會自動為 `/aws/rds/instance/my_instance/rds-events` 建立日誌串流，以存放資料庫執行個體容錯移轉等事件資料。

**注意**  
預設不會將 SQL Server 日誌發佈至 CloudWatch Logs。不支援發佈追蹤檔案和傾印檔案。所有區域都支援將 SQL Server 日誌發佈至 CloudWatch Logs。

### 主控台
<a name="USER_LogAccess.SQLServer.PublishtoCloudWatchLogs.console"></a>

**從 將 SQL Server 資料庫日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 SQL Server 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值是 JSON 字串陣列，可包含 `error`、`agent` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

**Example**  
下列範例修改現有的 SQL Server 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `EnableLogTypes`，而值為字串陣列，可包含 `error`、`agent` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

**Example**  
下列範例修改現有的 SQL Server 資料庫執行個體，以停用將代理程式日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `DisableLogTypes`，而值為字串陣列，可包含 `error`、`agent` 或兩者。  
針對 Linux、macOS 或 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 命令提示字元時，您必須在 JSON 程式碼中的雙引號 (") 開頭加上反斜線 (\$1)，以逸出雙引號。

# MySQL資料庫日誌檔案
<a name="USER_LogAccess.Concepts.MySQL"></a>

您可以透過 Amazon RDS 主控台、Amazon RDS API AWS CLI或 AWS SDKs 直接監控 MySQL 日誌。您可以將日誌指向主要資料庫中的資料庫表並查詢該表格，藉此存取 MySQL 日誌。您可以使用 mysqlbinlog 公用程式來下載二進位日誌。

如需關於檢視、下載與查看資料庫日誌檔案的資訊，請參閱[監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。

**Topics**
+ [RDS for MySQL 資料庫日誌概觀](USER_LogAccess.MySQL.LogFileSize.md)
+ [將 MySQL 日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs.md)
+ [將 MySQL日誌輸出傳送至資料表](Appendix.MySQL.CommonDBATasks.Logs.md)
+ [為單一可用區資料庫設定 RDS for MySQL 二進位記錄](USER_LogAccess.MySQL.BinaryFormat.md)
+ [為多可用區域資料庫叢集設定 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 錯誤日誌。透過在資料庫參數群組中設定參數，產生慢查詢日誌和一般日誌。

**Topics**
+ [RDS for MySQL 錯誤日誌](#USER_LogAccess.MySQL.Errorlog)
+ [RDS for MySQL 慢查詢與一般查詢](#USER_LogAccess.MySQL.Generallog)
+ [MySQL 稽核日誌](#USER_LogAccess.MySQL.Auditlog)
+ [MySQL RDS 的日誌輪換和保留](#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 才會寫入錯誤日誌。資料庫執行個體可在未寫入新項目到錯誤日誌的情況下持續執行數小時或數日。若您沒有看到最近的項目，這是因為伺服器未遇到需寫入日誌項目的錯誤。

根據設計，系統會篩選錯誤日誌，以僅顯示未預期的事件，例如錯誤。不過，錯誤日誌還包含一些其他未顯示的資料庫資訊，例如查詢進度。因此即使沒有任何實際錯誤，但錯誤日誌的大小可能會因為在進行的資料庫活動而增加。雖然您可能會在 中看到錯誤日誌的特定位元組或 KB 大小 AWS 管理主控台，但當您下載它們時，它們可能會有 0 個位元組。

RDS for MySQL 每 5 分鐘將 `mysql-error.log` 寫入磁碟一次。這會將日誌的內容追加到 `mysql-error-running.log`。

RDS for MySQL 每小時會輪換 `mysql-error-running.log` 檔案。它會保留最近兩週產生的日誌。

**注意**  
Amazon RDS 和 Aurora 的日誌保留期間不同。

## RDS for MySQL 慢查詢與一般查詢
<a name="USER_LogAccess.MySQL.Generallog"></a>

您可以將 RDS for MySQL 慢查詢日誌與一般日誌寫入至檔案或資料庫表格。若要這樣做，請在您的資料庫參數群組中設定參數。如需建立和修改資料庫參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。您必須先設定這些參數，才能在 Amazon RDS 主控台或使用 Amazon RDS API、Amazon RDS CLI 或 AWS SDKs來檢視慢查詢日誌或一般日誌。

您可以使用清單中的參數來控制 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>

若要存取稽核記錄，資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。如需詳細資訊，請參閱[MariaDB 稽核外掛程式支援 MySQL](Appendix.MySQL.Options.AuditPlugin.md)。

## MySQL RDS 的日誌輪換和保留
<a name="USER_LogAccess.MySQL.LogFileSize.retention"></a>

記錄啟用時，Amazon RDS 輪換表格日誌或以規律間隔來刪除日誌檔案。此方法為預防措施，可降低大型日誌檔封鎖資料庫使用或影響效能的可能性。RDS for MySQL 會處理輪流與刪除，如下所示：
+ MySQL 慢查詢日誌、錯誤日誌以及一般日誌檔案大小限制為不超過資料庫執行個體所配置之儲存空間的 2%。為保持此閾值，日誌會每小時自動輪換。MySQL 會移除兩週以上的日誌檔。若在移除舊日誌檔案後總日誌檔案大小仍超過閾值，將會從最舊的日誌檔案開始刪除，直到日誌檔案大小不再超過閾值為止。
+ 啟用 `FILE` 日誌記錄時，系統會每小時檢查日誌檔案，並刪除超過兩週的日誌檔案。在部分情況下，刪除後剩餘的總日誌檔大小可能超過資料庫執行個體配得之空間的 2% 閾值。於這些狀況中，最舊的日誌檔將遭刪除，直到日誌檔大小不再超過閾值。
+ 當 `TABLE` 日誌記錄啟用時，在某些情況下，日誌資料表每 24 小時會輪換一次。在表格日誌使用的空間超過所配置儲存空間的 20% 時，就會發生輪換。如果所有日誌合併後的大小超過 10 GB 時，也會發生這種情況。若資料庫執行個體使用的空間總量高於資料庫執行個體配得之儲存空間的 90% 時，日誌輪換的閾值將會降低。在表格日誌使用的空間超過所配置儲存空間的 10% 時，就會輪換日誌表格。如果所有日誌合併後的大小超過 5 GB 時，也會轉換它們。您可訂閱 `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 SDKs日誌，請將 `log_output` 參數設定為 FILE。如同 MySQL 錯誤日誌，這些日誌檔案也會每小時輪換。系統會保留在過去兩週內產生的日誌檔案。請注意，Amazon RDS 和 Aurora​ 的保留期間不同。

## 重做日誌的大小限制
<a name="USER_LogAccess.MySQL.LogFileSize.RedoLogs"></a>

對於 RDS for MySQL 8.0.32 版及更低版本，此參數的預設值為 256 MB。此數量的衍生方式是將 `innodb_log_file_size` 參數的預設值 (128 MB) 乘以 `innodb_log_files_in_group` 參數的預設值 (2)。如需詳細資訊，請參閱[設定 Amazon RDS for MySQL 參數的最佳實務，第一部分：效能相關參數](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_redo_log_capacity` 參數，而不是 `innodb_log_file_size` 參數。`innodb_redo_log_capacity` 參數的 Amazon RDS 預設值為 2 GB。如需詳細資訊，請參閱 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)。

# 將 MySQL 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs"></a>

您可以設定 MySQL 資料庫執行個體，以將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以執行日誌資料的即時分析，並使用 CloudWatch 來建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高耐用性的儲存裝置中。

Amazon RDS 將每個 MySQL 資料庫日誌發佈為日誌群組中獨立的資料庫流。例如，若您設定匯出功能以包含慢查詢日誌，則慢查詢資料會存放在 `/aws/rds/instance/my_instance/slowquery` 日誌群組內的慢查詢日誌串流中。

錯誤日誌預設為啟用。下表摘要說明其他 MySQL 日誌的要求。


| 日誌 | 要求 | 
| --- | --- | 
|  稽核日誌  |  資料庫執行個體必須使用含有選項 `MARIADB_AUDIT_PLUGIN` 的自訂選項群組。  | 
|  一般日誌  |  資料庫執行個體必須使用含有參數設定 `general_log = 1` 的自訂參數群組，以啟用一般日誌。  | 
|  慢查詢日誌  |  資料庫執行個體必須使用含有參數設定 `slow_query_log = 1` 的自訂參數群組，以啟用慢查詢日誌。  | 
|  IAM 資料庫身分驗證錯誤日誌  |  您必須透過建立或修改資料庫執行個體來啟用資料庫執行個體的日誌類型 `iam-db-auth-error`。  | 
|  記錄輸出  |  資料庫執行個體必須使用含有參數設定 `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. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例修改現有的 MySQL 資料庫執行個體後，即可將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `EnableLogTypes`，而其值為字串陣列，其中包含 `audit`、`error`、`general` 以及 `slowquery` 的任意組合。  
針對 Linux、macOS 或 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**  
下列範例建立 MySQL 資料庫執行個體並將日誌檔案發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值為 JSON 字串陣列。字串可以是 `audit`、`error`、`general` 以及 `slowquery` 的任意組合。  
針對 Linux、macOS 或 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` 參數的變更一律立即套用到資料庫執行個體。因此，`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>

您可以建立資料庫參數群組，並將 `log_output` 伺服器參數設為 `TABLE`，將一般與慢查詢日誌導向資料庫執行個體上的表格。一般查詢會記錄於 `mysql.general_log` 表格，而慢查詢會記錄至 `mysql.slow_log` 表格。您可以查詢表格來存取日誌資訊。啟用此日誌記錄會增加寫入至資料庫的資料總數量，可能造成效能降低。

一般日誌和慢查詢日誌根據預設將會停用。為啟用日誌記錄至表格，您也必須將 `general_log` 與 `slow_query_log` 伺服器參數設為 `1`。

日誌表格將持續擴增，直到重設適用參數為 `0` 時，各日誌記錄活動才會關閉。大量資料通常會隨時間累積，可能會佔用配得之儲存空間的大量比例。Amazon RDS Amazon RDS ​不允許截斷記錄資料表，但是您可以移動其中的內容。輪換表格可將其內容儲存至備份表格，然後建立新的空白日誌表格。您可以透過以下命令列程序來手動輪換日誌表格，命令提示由 `PROMPT>` 表示：

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

為完全移除舊資料並重新取得磁碟空間，請連續呼叫兩次適用的程序。

# 為單一可用區資料庫設定 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。

如需詳細資訊，請參閱[啟用自動備份](USER_WorkingWithAutomatedBackups.Enabling.md)。

Amazon RDS 上的 MySQL 支援 *row-based* (列型)、*statement-based* (陳述式型)，和 *mixed* (混和式) 二進位記錄格式。除非需要特定的 binlog 格式，否則我們建議混合使用。如需各種 MySQL 二進位日誌格式的詳細資訊，請參閱 MySQL 說明文件中的[二進位記錄格式](https://dev.mysql.com/doc/refman/8.0/en/binary-log-formats.html)。

如果您打算使用複寫，二進位日誌記錄格式很重要，因為這決定資料變更的記錄，而此記錄會記錄在來源中並傳送到複寫目標。如需有關複寫時各種二進位日誌記錄格式的優缺點的資訊，請參閱 MySQL 文件中的[基於陳述式和基於列的複寫的優缺點](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`。  
基於陳述式的複寫可能會造成來源資料庫執行個體與僅供讀取複本不一致。如需詳細資訊，請參閱 MySQL 文件中的[二進位日誌記錄中安全和不安全陳述式的判定](https://dev.mysql.com/doc/refman/8.0/en/replication-rbr-safe-unsafe.html)。  
啟用二進位記錄會增加資料庫執行個體的寫入磁碟 I/O 操作次數。您可以使用 `WriteIOPS``` CloudWatch 指標來監控 IOPS 使用情況。

**設定 MySQL 二進位記錄格式**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 選擇您想要修改的與資料庫執行個體相關聯的資料庫參數群組。

   您無法修改預設參數群組。如果資料庫執行個體使用預設參數群組，請建立新的參數群組，並將它與資料庫執行個體建立關聯。

   如需參數群組的詳細資訊，請參閱[Amazon RDS 的參數群組](USER_WorkingWithParamGroups.md)。

1. 在**動作**中選擇**編輯**。

1. 將 `binlog_format` 參數設為您選擇的二進位日誌記錄格式 (`ROW`、`STATEMENT` 或 `MIXED`)。

   您可以將資料庫執行個體的備份保留期間設定為零來關閉二進位記錄，但這會停用每日自動備份。停用自動備份會關閉或停用 `log_bin` 工作階段變數。這會停用 RDS for MySQL 資料庫執行個體上的二進位記錄，進而在資料庫中將 `binlog_format` 工作階段變數重設為 `ROW` 的預設值。我們建議您不要停用備份。如需**備份保留期間**設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

1. 選擇 **Save changes (儲存變更)** 來儲存對資料庫參數群組的更新。

由於 `binlog_format` 參數在 RDS for MySQL 中是動態的，因此您不需要將資料庫執行個體重新開機即可套用變更。(請注意，在 Aurora MySQL 中，此參數是靜態的。如需詳細資訊，請參閱[設定 Aurora MySQL 二進位記錄](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_LogAccess.MySQL.BinaryFormat.html)。)

**重要**  
變更資料庫參數群組會影響使用該參數群組的所有資料庫執行個體。如果您想要為 AWS 區域中的不同 MySQL 資料庫執行個體指定不同的二進位記錄格式，則資料庫執行個體必須使用不同的資料庫參數群組。這些參數群組會識別不同的記錄格式。將適當的資料庫參數群組指派給每個資料庫執行個體。

# 為多可用區域資料庫叢集設定 MySQL 二進位記錄
<a name="USER_Binlog.MultiAZ"></a>

Amazon RDS for MySQL 多可用區域資料庫叢集中的二進位記錄會記錄所有資料庫變更，以支援複寫、時間點復原和稽核。在多可用區域資料庫叢集中，二進位日誌會同步次要節點與主節點，確保可用區域之間的資料一致性，並啟用無縫容錯移轉。

為了最佳化二進位記錄，Amazon RDS 支援二進位日誌交易壓縮，可減少二進位日誌的儲存要求並改善複寫效率。

**Topics**
+ [多可用區域資料庫叢集的二進位日誌交易壓縮](#USER_Binlog.MultiAZ.compression)
+ [設定多可用區域資料庫叢集的二進位日誌交易壓縮](#USER_Binlog.MultiAZ.configuring)

## 多可用區域資料庫叢集的二進位日誌交易壓縮
<a name="USER_Binlog.MultiAZ.compression"></a>

二進位日誌交易壓縮使用 zstd 演算法來減少二進位日誌中存放的交易資料大小。啟用時，MySQL 資料庫引擎會將交易承載壓縮為單一事件，將 I/O 和儲存額外負荷降至最低。此功能可改善資料庫效能、減少二進位日誌大小，並最佳化在多可用區域資料庫叢集中管理和複寫日誌的資源使用。

Amazon RDS 透過下列參數為 RDS for MySQL 多可用區域資料庫叢集提供二進位日誌交易壓縮：
+ `binlog_transaction_compression` – 啟用時 (`1`)，資料庫引擎會壓縮交易承載，並將其做為單一事件寫入二進位日誌。這可減少儲存用量和 I/O 額外負荷。參數預設為停用。
+ `binlog_transaction_compression_level_zstd` – 設定二進位日誌交易的 zstd 壓縮層級。較高的值會增加壓縮比率，進一步減少儲存要求，但增加壓縮的 CPU 和記憶體用量。預設值為 3，範圍為 1-22。

這些參數可讓您根據工作負載特性和資源可用性微調二進位日誌壓縮。如需詳細資訊，請參閱 MySQL 文件中的[二進位日誌交易壓縮](https://dev.mysql.com/doc/refman/8.4/en/binary-log-transaction-compression.html)。

二進位日誌交易壓縮具有下列主要優點：
+ 壓縮會減少二進位日誌的大小，特別是對於具有大型交易或大量寫入的工作負載。
+ 較小的二進位日誌可減少網路和 I/O 額外負荷，增強複寫效能。
+ `binlog_transaction_compression_level_zstd` 參數提供壓縮比率與資源耗用量之間的權衡控制。

## 設定多可用區域資料庫叢集的二進位日誌交易壓縮
<a name="USER_Binlog.MultiAZ.configuring"></a>

若要設定 RDS for MySQL 多可用區域資料庫叢集的二進位日誌交易壓縮，請修改相關的叢集參數設定，以符合您的工作負載要求。

### 主控台
<a name="USER_Binlog.MultiAZ.configuring-console"></a>

**啟用二進位日誌交易壓縮**

1. 修改資料庫叢集參數群組，將 `binlog_transaction_compression` 參數設定為 `1`。

1. (選用) 根據您的工作負載要求和資源可用性調整 `binlog_transaction_compression_level_zstd` 參數的值。

如需詳細資訊，請參閱[在 中修改資料庫叢集參數群組中的參數](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**  
針對 Linux、macOS 或 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 資料庫執行個體下載或串流二進位日誌。二進位日誌會下載至您的本機電腦，您可於此執行動作，例如使用 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 row event display](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 公用程式。

針對 Linux、macOS 或 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 公用程式才能存取它們。若要確保其可用性，請使用 [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 事件，將無法由日誌存取。

[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) API 操作會列出可供資料庫執行個體使用的 Oracle 日誌檔案，並忽略 `MaxRecords` 參數，且最多回傳 1,000 筆記錄。呼叫傳回 `LastWritten` 作為 POSIX 日期，以毫秒為單位。

**Topics**
+ [保留排程](#USER_LogAccess.Concepts.Oracle.Retention)
+ [使用 Oracle 追蹤檔案](#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles)
+ [將 Oracle 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Oracle.PublishtoCloudWatchLogs)
+ [存取警示日誌和接聽程式日誌](#USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog)

## 保留排程
<a name="USER_LogAccess.Concepts.Oracle.Retention"></a>

若日誌檔案變得過大，Oracle 資料庫引擎可能會輪換這些檔案。欲保留稽核或追蹤檔案，請下載這些檔案。如果您將檔案儲存在本機，可降低 Amazon RDS 的儲存成本，並為資料騰出更多可用空間。

下列資料表顯示 Amazon RDS 上的 Oracle 提醒日誌、稽核檔案及追蹤檔案的保留排程。


****  

| 日誌類型 | 保留排程 | 
| --- | --- | 
|  提醒日誌  |   文字提醒記錄每日輪換，其 30 天的保留則由 Amazon RDS 管理。XML 提醒日誌至少會保留七天。您可使用 `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 資料庫執行個體使用。需要更多存取權限的追蹤檔案，可參考下列程序。


****  

|  Oracle 方法  |  Amazon RDS 方法 | 
| --- | --- | 
|  `oradebug hanganalyze 3 `  |  `EXEC rdsadmin.manage_tracefiles.hanganalyze; `  | 
|  `oradebug dump systemstate 266 `  |  `EXEC rdsadmin.manage_tracefiles.dump_systemstate;`  | 

您可使用許多標準方法來追蹤連接至 Amazon RDS 中 Oracle 資料庫執行個體的個別工作階段。若要啟用工作階段的追蹤功能，您可以在 Oracle 提供的 PL/SQL 套件中執行子程式，例如 `DBMS_SESSION` 和 `DBMS_MONITOR`。如需詳細資訊，請參閱 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` 手動移除檔案。下列範例說明如何清除超過五分鐘的所有檔案。

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

您亦可清除符合特定模式的所有檔案 (如果這樣做，請勿包含副檔名，例如 .trc)。下列範例說明如何清除以 `SCHPOC1_ora_5935` 為開頭的所有檔案。

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

## 將 Oracle 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Oracle.PublishtoCloudWatchLogs"></a>

您可以設定 RDS for Oracle 資料庫執行個體，以將日誌資料發佈至 Amazon CloudWatch Logs 中的日誌群組。使用 CloudWatch Logs，您可以分析日誌資料，並使用 CloudWatch 來建立警示和檢視指標。您可以使用 CloudWatch Logs 將日誌記錄存放在高耐用性的儲存裝置中。

Amazon RDS 將每個 Oracle 資料庫日誌發佈為日誌群組中獨立的資料庫流。例如，若您將匯出功能設定為包含稽核日誌，則稽核資料會存放在 `/aws/rds/instance/my_instance/audit` 日誌群組內的稽核日誌流中。下表摘要說明 RDS for Oracle 將日誌發佈至 Amazon CloudWatch Logs 的要求。


| 日誌名稱 | 需求 | 預設 | 
| --- | --- | --- | 
|  警示日誌  |  無。您無法停用此日誌。  |  已啟用  | 
|  追蹤日誌  |  將 `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>

**從 將 Oracle 資料庫日誌發佈至 CloudWatch Logs AWS 管理主控台**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Databases** (資料庫)，然後選擇您要修改的資料庫執行個體。

1. 選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例建立 Oracle 資料庫執行個體並啟用發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 字串陣列。字串可以是 `alert`、`audit`、`listener` 以及 `trace` 的任意組合。  
針對 Linux、macOS 或 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**  
下列範例修改現有的 Oracle 資料庫執行個體，以將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `EnableLogTypes`，而其值為字串陣列，其中包含 `alert`、`audit`、`listener` 以及 `trace` 的任意組合。  
針對 Linux、macOS 或 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**  
下列範例修改現有的 Oracle 資料庫執行個體，以停止將稽核與接聽程式日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的金鑰為 `DisableLogTypes`，而其值為字串陣列，其中包含 `alert`、`audit`、`listener` 以及 `trace` 的任意組合。  
針對 Linux、macOS 或 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 資料庫日誌。您可以使用下列參數來呼叫 [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` 參數的變更一律立即套用到資料庫執行個體。因此，`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 操作而定，可能需要其他參數。

## 存取警示日誌和接聽程式日誌
<a name="USER_LogAccess.Concepts.Oracle.AlertLogAndListenerLog"></a>

您可以使用 Amazon RDS 主控台檢視提醒日誌。您亦可使用下列 SQL 陳述式。

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

使用 Amazon CloudWatch Logs 存取接聽程式日誌。

**注意**  
Oracle 會在提醒與接聽程式日誌超過 10 MB 時進行輪換，此時這些日誌將不會顯示於 Amazon RDS 的畫面。

# RDS for PostgreSQL 資料庫日誌檔案
<a name="USER_LogAccess.Concepts.PostgreSQL"></a>

您可以監控以下 日誌檔案類型：
+ PostgreSQL 日誌
+ 升級日誌
+ IAM 資料庫身分驗證錯誤日誌
**注意**  
若要啟用 IAM 資料庫身分驗證錯誤日誌，您必須先為 RDS for PostgreSQL 資料庫執行個體啟用 IAM 資料庫身分驗證。如需啟用 IAM 資料庫身分驗證的詳細資訊，請參閱 [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)。

RDS for PostgreSQL 會將資料庫活動記錄到預設的 PostgreSQL 日誌檔。對於內部部署 PostgreSQL 資料庫執行個體，這些訊息會在本機存放於 `log/postgresql.log` 中。對於 RDS for PostgreSQL 資料庫執行個體)，日誌檔可在 Amazon RDS 執行個體上取得。這些日誌也可以透過 存取 AWS 管理主控台，您可以在其中檢視或下載。預設的記錄層級會擷取登入失敗、嚴重的伺服器錯誤、死鎖和查詢失敗。

如需有關如何檢視、下載和監看檔案型資料庫日誌的詳細資訊，請參閱 [監控 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/) (使用 Amazon 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/) (使用 Amazon RDS 和 Aurora PostgreSQL 日誌：第 2 部分)。

除了本主題中討論的標準 PostgreSQL 日誌之外，RDS for PostgreSQL 也支援 PostgreSQL 稽核擴充功能 (`pgAudit`)。大多數受管制的產業和政府機構都需要維護對資料所做變更的稽核日誌或稽核線索，以符合法律要求。如需安裝與使用 pgAudit 的資訊，請參閱 [使用 PgAudit 記錄資料庫活動](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)。

**Topics**
+ [用於在 RDS for PostgreSQL 中進行記錄的參數](USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups.md)
+ [開啟 RDS for PostgreSQL 資料庫執行個體的查詢記錄](USER_LogAccess.Concepts.PostgreSQL.Query_Logging.md)
+ [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](#USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs)

# 用於在 RDS for PostgreSQL 中進行記錄的參數
<a name="USER_LogAccess.Concepts.PostgreSQL.overview.parameter-groups"></a>

您可以修改各種參數，為 RDS for PostgreSQL 資料庫執行個體自訂記錄行為。在下表中，您可以找到影響日誌檔存放時間、何時輪換日誌，以及是否以 CSV (逗號分隔值) 格式輸出日誌。您也可以找到已傳送至 STDERR 的文字輸出，以及其他設定。若要變更可修改之參數的設定，請將自訂資料庫參數群組用於 。RDS for PostgreSQL 執行個體。如需詳細資訊，請參閱 [Amazon RDS 資料庫執行個體的資料庫參數群組](USER_WorkingWithDBInstanceParamGroups.md)。


| 參數 | 預設 | Description | 
| --- | --- | --- | 
| 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]: | 定義寫入至 `stderr` 的每個日誌行的字首，以記錄時間 (%t)、遠端主機 (%r)、使用者 (%u)、資料庫 (%d) 和程序 ID (%p)。 | 
| log\$1rotation\$1age | 60 | 日誌檔會多少分鐘後自動轉換。您可以在 1 到 1440 分鐘的範圍內變更此值。如需詳細資訊，請參閱[設定日誌檔案輪換](#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 日誌將遭到刪除。預設值 4320 分鐘將在 3 天後刪除日誌檔案。如需詳細資訊，請參閱[設定日誌保留期間](#USER_LogAccess.Concepts.PostgreSQL.log_retention_period)。 | 

如要識別應用程式問題，您可在日誌中尋找查詢失敗、登入失敗、鎖死和致命的伺服器錯誤。例如，假設您已將舊版應用程式從 Oracle 轉換為 Amazon RDS PostgreSQL，但並非所有查詢都已正確轉換。這些格式不正確的查詢會產生您可在日誌中尋找的錯誤訊息，以協助識別問題。如需記錄查詢的詳細資訊，請參閱 [開啟 RDS for PostgreSQL 資料庫執行個體的查詢記錄](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 資料庫執行個體保留其日誌檔的時間長度。預設設定為 3 天 (4,320 分鐘)，但您可以將此值設為 1 天 (1,440 分鐘) 至 7 天 (10,080 分鐘)。請確定您的 RDS for PostgreSQL 資料庫執行個體具有足夠的儲存空間來保留日誌檔一段時間。

我們建議您定期將日誌發佈至 Amazon CloudWatch Logs 中，如此，您便可在日誌從 中移除後的很長時間內檢視並分析系統資料。RDS for PostgreSQL 資料庫執行個體。如需詳細資訊，請參閱 [將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs](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 資料庫執行個體，`log_rotation_size` 未設定，即並未指定任何值。不過，您可以設定從 0-2097151 KB 的參數。

日誌檔案名稱會以 `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` 格式產生日誌檔。將日誌資料當作逗號分隔值 (CSV) 進行分析時，`csvlog` 很有用。例如，假設您使用 `log_fdw` 延伸模組，將日誌作為外部資料表處理。在 `stderr` 日誌檔案上建立的外部資料表包含一個具日誌事件資料的單一欄。透過將 `csvlog` 新增至 `log_destination` 參數，您可以取得 CSV 格式的日誌檔，其中包含外部資料表的多個資料欄的分界。您現在可以更輕鬆地排序和分析日誌。如要進一步了解如何使用 `log_fdw` 和 `csvlog`，請參閱 [使用 log\$1fdw 擴充功能存取使用 SQL 的資料庫日誌](CHAP_PostgreSQL.Extensions.log_fdw.md)。

如果您為此參數指定 `csvlog`，請注意會同時產生 `stderr` 和 `csvlog` 檔案。請務必監控日誌所使用的儲存體，同時考慮 `rds.log_retention_period` 及影響日誌儲存體和更換的其他設定。使用 `stderr` 和 `csvlog` 會使日誌所使用的儲存體空間增加一倍以上。

如果您將 `csvlog` 新增至 `log_destination`，並且想要單獨還原為 `stderr`，則需要重設參數。若要這麼做，請開啟 Amazon RDS 主控台，然後您的執行個體開啟自訂資料庫參數群組。選擇 `log_destination` 參數、選擇 **Edit parameter** (編輯參數]，然後選擇 **Reset** (重設)。

如需有關設定日誌記錄的詳細資訊，請參閱[使用 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 資料庫執行個體的查詢記錄
<a name="USER_LogAccess.Concepts.PostgreSQL.Query_Logging"></a>

您可以設定下表中列出的一些參數，來收集有關資料庫活動的詳細資訊，包括查詢、等待鎖定的查詢、檢查點，以及許多其他詳細資訊。本主題著重於記錄查詢。


| 參數 | 預設 | Description | 
| --- | --- | --- | 
| 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 資料庫執行個體 開啟查詢記錄之前，您應該注意到日誌檔中可能暴露密碼，以及如何降低風險。如需詳細資訊，請參閱[降低使用查詢記錄時密碼暴露的風險降低密碼暴露風險](#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**  
記錄所有 DDL 陳述式和資料操作語言 (DML) 陳述式，例如 INSERT、UPDATE 和 DELETE)，這些陳述式會修改資料。

**無**  
不會記錄任何 SQL 陳述式。建議您使用此設定，以避免在日誌中暴露密碼的風險。log\$1min\$1duration\$1statement

至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設，不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。

**–1–2147483647**  
記錄陳述式之執行時間的毫秒數。

**設定查詢記錄**

這些步驟假設您的 RDS for PostgreSQL 資料庫執行個體使用自訂資料庫參數群組。

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 資料庫執行個體的日誌檔。

   ```
   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 資料庫執行個體，請設定並使用 PostgreSQL 稽核 (pgAudit) 擴充功能。此擴充功能會刪減傳送至日誌的 CREATE 和 ALTER 陳述式中的敏感資訊。如需詳細資訊，請參閱[使用 PgAudit 記錄資料庫活動](Appendix.PostgreSQL.CommonDBATasks.pgaudit.md)。
+ 限制對 CloudWatch 日誌的存取。
+ 使用更強大的身分驗證機制，例如 IAM。

## 將 PostgreSQL 日誌發佈至 Amazon CloudWatch Logs
<a name="USER_LogAccess.Concepts.PostgreSQL.PublishtoCloudWatchLogs"></a>

若要將 PostgreSQL 記錄檔記錄儲存在高耐用性的儲存體中，您可以使用 Amazon CloudWatch Logs。使用 CloudWatch Logs，您也可以執行日誌資料的即時分析，並使用 CloudWatch 來檢視指標和建立警示。例如，如果您將 `log_statement` 設定為 `ddl`，您可以設定警示，以便在執行 DDL 陳述式時發出提醒。您可以選擇在建立 RDS for PostgreSQL 資料庫執行個體的過程中將 PostgreSQL 日誌上傳至 CloudWatch Logs。如果您當時選擇不上傳日誌，您可以稍後修改執行個體，從該點開始上傳日誌。換言之，不會上傳現有日誌。只會上傳新的日誌，因為它們是在修改後的 RDS for PostgreSQL 資料庫執行個體上建立的。

所有目前可用的 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 資料庫執行個體，將日誌資料發佈至日誌群組。

您可以將下列日誌類型發佈到 CloudWatch Logs for RDS for PostgreSQL：
+ 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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要修改的資料庫執行個體，然後選擇 **Modify (修改)**。

1. 在 **Log exports (日誌匯出)** 區段中，選擇您要開始發佈至 CloudWatch Logs 的日誌。

   **Log exports (日誌匯出)** 區段僅適用於支援發佈至 CloudWatch Logs 的 PostgreSQL 版本。

1. 選擇 **Continue (繼續)**，然後在摘要頁面上選擇 **Modify DB Instance (修改資料庫執行個體)**。

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

您可以使用 發佈 PostgreSQL 日誌 AWS CLI。您可以使用下列參數來呼叫 [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` 選項的變更一律立即套用到資料庫執行個體。因此，`--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**  
下列範例修改現有的 PostgreSQL 資料庫執行個體，將日誌檔案發佈至 CloudWatch Logs。`--cloudwatch-logs-export-configuration` 值為 JSON 物件。此物件的索引鍵為 `EnableLogTypes`，而其值為包含 `postgresql` 和 `upgrade` 任意組合的字串陣列。  
針對 Linux、macOS 或 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**  
下列範例建立 PostgreSQL 資料庫執行個體並將日誌檔案發佈至 CloudWatch Logs。`--enable-cloudwatch-logs-exports` 值為 JSON 字串陣列。字串可以是 `postgresql` 和 `upgrade` 的任意組合。  
針對 Linux、macOS 或 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` 參數的變更一律立即套用到資料庫執行個體。因此，`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>

CloudTrail 會記錄所有 Amazon RDS 動作。對於使用者、角色或 AWS 服務在 Amazon RDS 中採取的動作，CloudTrail 會提供記錄。

### 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>

如需 AWS 帳戶中正在記錄事件 (包括 Amazon RDS 的事件)，請建立 trail (追蹤)。權杖是一種組態，能讓事件交付到指定的 Amazon S3 儲存貯體。CloudTrail 通常會在帳戶活動的 15 分鐘內交付日誌檔案。

**注意**  
即使您未設定權仗，依然可以透過 CloudTrail 主控台中的 **Event history** (事件歷史記錄) 檢視最新事件。

您可以為 AWS 帳戶建立兩種類型的追蹤：套用至所有區域的追蹤，或套用至一個區域的追蹤。根據預設，當您在主控台建立線索時，線索會套用到所有 區域。

此外，您可以設定其他 AWS 服務，以進一步分析和處理 CloudTrail 日誌中所收集的事件資料。如需詳細資訊，請參閱：
+ [建立追蹤的概觀](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 資料庫管理員，您需要保護資料庫並遵守合規與法規要求。其中一項策略是整合資料庫活動串流與監控工具。透過此方式，您可以監控 資料庫中的稽核活動，並設定警示。

外部和內部都有安全威脅。若要防範內部威脅，您可以設定資料庫活動串流功能來控制管理員對資料串流的存取。Amazon RDS 資料庫管理員沒有存取收集、傳輸、儲存和處理串流的權限。

**Contents**
+ [資料庫活動串流運作方式](#DBActivityStreams.Overview.how-they-work)
+ [在 Oracle 資料庫和 Microsoft SQL Server 資料庫中進行稽核](#DBActivityStreams.Overview.auditing)
  + [Oracle 資料庫中的統一稽核](#DBActivityStreams.Overview.unified-auditing)
  + [在 Microsoft SQL Server 中進行稽核](#DBActivityStreams.Overview.SQLServer-auditing)
  + [Oracle 資料庫和 SQL Server 的非原生稽核欄位](#DBActivityStreams.Overview.unified-auditing.non-native)
  + [資料庫參數群組覆寫](#DBActivityStreams.Overview.unified-auditing.parameter-group)
+ [資料庫活動串流的非同步模式](#DBActivityStreams.Overview.sync-mode)
+ [資料庫活動串流的要求與限制](#DBActivityStreams.Overview.requirements)
+ [區域和版本可用性](#DBActivityStreams.RegionVersionAvailability)
+ [支援資料庫活動串流的資料庫執行個體類別](#DBActivityStreams.Overview.requirements.classes)

### 資料庫活動串流運作方式
<a name="DBActivityStreams.Overview.how-they-work"></a>

 Amazon RDS 會近乎即時地將活動推送至 Amazon Kinesis 資料串流。系統會自動建立 Kinesis 串流。從 Kinesis，您可以設定 Amazon Data Firehose 和 等 AWS 服務 AWS Lambda ，以取用串流並存放資料。

**重要**  
 在 Amazon RDS 中使用資料庫活動串流功能是一項免費功能，但 Amazon Kinesis 會收取資料串流費用。如需詳細資訊，請參閱 [Amazon Kinesis Data Streams 定價](https://aws.amazon.com/kinesis/data-streams/pricing/)。

您可為合規管理設定應用程式以使用資料庫活動串流。這些應用程式可以使用串流來產生警示，並稽核您的 資料庫。

Amazon RDS 支援異地同步備份部署中的資料庫活動串流。於此狀況下，資料庫活動串流會同時稽核主執行個體和備用執行個體。

### 在 Oracle 資料庫和 Microsoft SQL Server 資料庫中進行稽核
<a name="DBActivityStreams.Overview.auditing"></a>

稽核是針對已設定的資料庫執行的監控和記錄動作。Amazon RDS 根據預設不會擷取資料庫活動。您可以自行在資料庫中建立和管理稽核政策。

**Topics**
+ [Oracle 資料庫中的統一稽核](#DBActivityStreams.Overview.unified-auditing)
+ [在 Microsoft SQL Server 中進行稽核](#DBActivityStreams.Overview.SQLServer-auditing)
+ [Oracle 資料庫和 SQL Server 的非原生稽核欄位](#DBActivityStreams.Overview.unified-auditing.non-native)
+ [資料庫參數群組覆寫](#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 Data Streams。在啟用資料庫活動串流時，Oracle 資料庫管理員無法變更稽核政策或移除稽核記錄。

若要進一步了解統一稽核政策，請參閱 *Oracle 資料庫安全指南*中的[關於使用統一稽核政策和稽核來稽核活動](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 Data Streams。在啟用資料庫活動串流且政策鎖定時，資料庫管理員無法變更稽核政策或移除稽核記錄。
**重要**  
若已啟用特定資料庫的資料庫稽核規格，且政策處於鎖定狀態，則無法捨棄該資料庫。

如需有關 SQL Server 稽核的詳細資訊，請參閱 *Microsoft SQL Server 文件*中的 [SQL Server 稽核元件](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16)。



#### Oracle 資料庫和 SQL Server 的非原生稽核欄位
<a name="DBActivityStreams.Overview.unified-auditing.non-native"></a>

在您啟動資料庫活動串流時，每個資料庫事件都會產生對應的活動串流事件。例如，資料庫使用者可能會執行 `SELECT` 和 `INSERT` 陳述式。資料庫會稽核這些事件，並將其傳送至 Amazon Kinesis Data Streams。

串流中的事件會以 JSON 物件表示。JSON 物件包含 `DatabaseActivityMonitoringRecord`，其中包含 `databaseActivityEventList` 陣列。陣列中的預先定義欄位包含 `class`、`clientApplication` 以及 `command`。

根據預設，活動串流不包含引擎原生稽核欄位。您可以設定 Amazon RDS for Oracle 和 Amazon RDS for Oracle，使其能在 `engineNativeAuditFields` JSON 物件中包含這些額外欄位。

在 Oracle 資料庫中，整合稽核權杖中的大部分事件都可映射至 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)。

#### 資料庫參數群組覆寫
<a name="DBActivityStreams.Overview.unified-auditing.parameter-group"></a>

一般而言，您可以透過連接參數群組，在 RDS 中開啟統一稽核功能。但是，資料庫活動串流需要其他配置。為了改善您的客戶體驗，Amazon RDS 會執行下列內容：
+ 如果您啟用活動串流，則 RDS for Oracle 會忽略參數群組中的稽核參數。
+ 如果您停用活動串流，則 RDS for Oracle 會不再忽略稽核參數。

SQL Server 的資料庫活動串流與您在 SQL 稽核選項中設定的任何參數皆無關。

### 資料庫活動串流的非同步模式
<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 不會擷取資料庫活動。
+ 於異地同步備份部署中，僅於主要資料庫執行個體上啟動資料庫活動串流。活動串流會自動稽核主資料庫執行個體和備用資料庫執行個體。容錯移轉期間不需要執行其他步驟。
+ 重新命名資料庫執行個體並不會建立新的 Kinesis 串流。
+ RDS for Oracle 不支援 CDB。
+ 不支援僅供讀取複本。

### 區域和版本可用性
<a name="DBActivityStreams.RegionVersionAvailability"></a>

每個資料庫引擎的特定版本以及 AWS 區域的功能可用性和支援各自不同。如需有關資料庫活動串流版本和區域可用性的詳細資訊，請參閱 [支援 Amazon RDS 中資料庫活動串流的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.DBActivityStreams.md)。

### 支援資料庫活動串流的資料庫執行個體類別
<a name="DBActivityStreams.Overview.requirements.classes"></a>

針對 RDS for Oracle,您可以搭配下列資料庫執行個體類別來使用資料庫活動串流：
+ 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.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

如需執行個體類別類型的詳細資訊，請參閱[ 資料庫執行個體類別](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 資料庫文件中的[設定稽核政策](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 支援的帳戶，請參閱[如何清除統一稽核權杖](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>

在開啟資料庫執行個體的活動串流時，您在稽核政策中設定的每個資料庫活動事件都會產生活動串流事件。`CONNECT` 和 `SELECT` 之類的 SQL 命令會產生存取事件。`CREATE` 和 `INSERT` 之類的 SQL 命令會產生變更事件。

**重要**  
啟用 Oracle 資料庫執行個體的活動串流會清除現有的稽核資料。它也會撤銷稽核權杖權限。啟用串流時，RDS for Oracle 便無法再執行下列動作：  
清除統一稽核追蹤記錄。
新增、刪除或修改統一稽核政策。
更新上次封存的時間戳記。

------
#### [ Console ]

**若要開始資料庫活動串流**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要在其上啟動活動串流的 Amazon RDS 資料課執行個體。於異地同步備份部署中，僅於主要資料庫執行個體上啟動串流。活動串流會稽核主資料庫執行個體和備用資料庫執行個體兩者。

1. 針對 **Actions** (動作)，選擇 **Start activity stream** (啟動活動串流)。

   **Start database activity stream: ***name* (開始資料庫活動串流：name) 視窗隨即出現，其中 *name* 是您的 RDS 執行個體。

1. 輸入以下設定：
   + 對於 **AWS KMS key**，請從 AWS KMS keys清單中選擇一個金鑰。

      Amazon RDS 會使用 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. 選擇 **Start database activity stream** (啟動資料庫活動串流)。

   資料庫的狀態會顯示活動串流正在開始。
**注意**  
如果收到錯誤訊息 `You can't start a database activity stream in this configuration`，請檢查 [支援資料庫活動串流的資料庫執行個體類別](DBActivityStreams.md#DBActivityStreams.Overview.requirements.classes) 以查看 RDS 執行個體是否使用支援的執行個體類別。

------
#### [ AWS CLI ]

若要開始資料庫執行個體的資料庫活動串流，請使用 [start-activity-stream](https://docs.aws.amazon.com/cli/latest/reference/rds/start-activity-stream.html) AWS CLI 命令來設定資料庫。
+ `--resource-arn arn`– 指定資料庫的 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` (預設)。

下列範例會在非同步模式下開始資料庫執行個體的活動串流。

對於 Linux、macOS 或 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 ]

若要開始資料庫執行個體的資料庫活動串流，請使用 [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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 對於 **Action** (動作)，選擇 **Modify database activity stream** (修改資料庫活動串流)。

   會出現 **Modify database activity stream: *name*** (修改資料庫活動串流：名稱) 視窗，其中 *name* (名稱) 是您的 RDS 執行個體。

1. 請選擇下列其中一個選項：  
**Locked** (已鎖定)  
當您鎖定稽核政策時，它會變成僅供讀取。除非您解除鎖定政策或停止活動串流，否則無法編輯稽核政策。  
**Unlocked** (已解鎖)  
當您解除鎖定稽核政策時，它會變成讀取/寫入。您可以在活動串流已啟動時編輯稽核政策。

1. 選擇 **Modify DB activity stream** (修改資料庫活動串流)。

    Amazon RDS 資料庫的狀態會顯示**設定活動串流**。

1. (選用) 選擇資料庫執行個體連結。然後選擇 **Configuration (組態)** 標籤。

   所以 **Audit policy status** (稽核政策狀態) 欄位顯示下列其中一個值：
   + **Locked** (已鎖定)
   + **Unlocked** (已解鎖)
   + **Locking policy** (鎖定政策)
   + **Unlocking policy** (解除鎖定政策)

## 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命令。


****  

| 選項 | 是否為必要？ | 描述 | 
| --- | --- | --- | 
|  `--resource-arn my-instance-ARN`  |  是  |  RDS 資料庫執行個體的 Amazon Resource Name (ARN)。  | 
|  `--audit-policy-state`  |  否  |  新的執行個體上資料庫活動串流的政策狀態：`locked` 或 `unlocked`。  | 

下列範例會解除鎖定已啟動活動串流的稽核政策 *my-instance-ARN*。

在 Linux、macOS 或 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 instance (資料庫執行個體) 連結。

1. 選擇 **Configuration (組態)** 標籤，然後確認 **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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要停止資料庫活動串流的資料庫。

1. 針對 **Actions** (動作)，選擇 **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) 來設定資料庫執行個體。使用 `--region` 參數來識別資料庫執行個體的 AWS 區域。`--apply-immediately` 為選用參數。

對於 Linux、macOS 或 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) 操作來設定資料庫執行個體。使用 `Region` 參數來識別資料庫執行個體的 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 串流。
+  如果您停止資料庫活動串流或刪除資料庫執行個體，則 Amazon RDS 會刪除 Kinesis 串流。

系統會監控以下類別的活動並將其放在活動串流稽核日誌中：
+ **SQL 命令** – 所有 SQL 命令都經稽核，也是預備陳述式、內建函數和 PL/SQL 函數。對預存程序的呼叫會進行稽核。在儲存的程序或函數中發出的任何 SQL 語句也被稽核。
+ **其他資料庫資訊** – 監控的活動包含完整的 SQL 陳述式、因 DML 命令而受影響的資料列數、經存取的物件和唯一的資料庫名稱。資料庫活動串流還會監控連結變數和已儲存的程序參數。
**重要**  
活動資料串流稽核記錄中會顯示每個陳述式的完整 SQL 文字，包括任何敏感資料。但是，如果 Oracle 可以從內容 (例如下列 SQL 陳述式) 判斷資料庫使用者密碼，則該密碼將會被修訂。  

  ```
  ALTER ROLE role-name WITH password
  ```
+ **連線資訊** – 監控的活動包含工作階段和網路資訊、伺服器程序 ID 和結束代碼。

如果活動串流在監控資料庫執行個體時失敗，系統會透過 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. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇已在其上啟動活動串流的Amazon RDS 資料課執行個體。

1. 選擇 **Configuration (組態)**。

1. 在 **Database activity stream** (資料庫活動串流) 下，選擇 **Kinesis stream** (Kinesis 串流) 下的連結。

1. 在 Kinesis 主控台中，選擇 **Monitoring** (監控) 來開始觀察資料庫活動。

**使用 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，請從資料庫清單中選擇您的資料庫執行個體，然後選擇**Configuration (組態)** 索引標籤。

   若要使用 AWS CLI 來尋找活動串流的完整 Kinesis 串流名稱，請使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) CLI 請求，並記下回應中的 `ActivityStreamKinesisStreamName` 值。

1. 選擇 **Monitoring (監控)** 來開始觀察資料庫活動。

如需使用 Amazon Kinesis 的詳細資訊，請參閱[什麼是 Amazon Kinesis Data Streams？](https://docs.aws.amazon.com/streams/latest/dev/introduction.html)。

# 資料庫活動串流的稽核日誌內容和範例
<a name="DBActivityStreams.AuditLog"></a>

受監控的事件會以 JSON 字串的形式在資料庫活動串流中顯示。此結構包含 JSON 物件，內含的 `DatabaseActivityMonitoringRecord` 會依序包含活動事件的 `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 a CONNECT SQL 陳述式的活動事件記錄**  
以下活動事件記錄顯示 JDBC 精簡用戶端 (`clientApplication`) 使用 `CONNECT` SQL 陳述式 (`command`) 登入您的 Oracle 資料庫。  

```
{
    "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 資料庫的登入失敗。  

```
{
    "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 資料庫 的 `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 資料庫的 `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 資料庫使用 1.3 版，SQL Server 則使用 1.4 版。這些引擎版本引入 engineNativeAuditFields JSON 物件。  | 
|  [databaseActivityEvents](#DBActivityStreams.AuditLog.databaseActivityEvents)  | string |  包含活動事件的 JSON 物件。  | 
| 金鑰 | string | 您用來解密 [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.  使用您在啟動資料庫活動串流時提供的 KMS 金鑰，解密 `key` JSON 欄位中的值。這麼做會以純文字傳回資料加密金鑰。

1.  Base64 解碼 `databaseActivityEvents` JSON 欄位中的值，以取得稽核承載的二進位格式的加密文字。

1.  使用您在第一個步驟中解碼的資料加密金鑰來解密二進位密文。

1.  解壓縮已解密的承載。
   +  加密的承載在 `databaseActivityEvents` 欄位。
   +  該 `databaseActivityEventList` 欄位包含稽核記錄的陣列。陣列中的 `type` 欄位可以是 `record` 或 `heartbeat`。

稽核日誌活動事件記錄是包含以下資訊的 JSON 物件。


****  

| JSON 欄位 | 資料類型 | 描述 | 
| --- | --- | --- | 
|  `type`  | string |  JSON 記錄類型。值為 `DatabaseActivityMonitoringRecord`。  | 
| instanceId | string | 資料庫執行個體資源識別符。它對應於資料庫執行個體屬性 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` 欄位  |  活動事件的類別。這對應於 `AUDIT_TYPE` 欄位中的 `UNIFIED_AUDIT_TRAIL` 檢視。Amazon RDS for Oracle 的有效值如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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  |  N/A  |  資料庫通訊協定。在此測試版中，值為 `oracle`。  | 
|  `dbUserName`  |  string  |  `UNIFIED_AUDIT_TRAIL` 中的 `DBUSERNAME` 欄位  |  動作已受稽核的資料庫使用者名稱。範例值為 `RDSADMIN`。  | 
|  `endTime`  |  string  |  N/A  |  此欄位不會用於 RDS for Oracle 且一律為空。  | 
|  `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  |  N/A  |  此欄位不會用於 RDS for Oracle 且一律為空。  | 
|  `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`  |  數字  |  N/A  |  此欄位不會用於 RDS for Oracle 且一律為空。  | 
|  `serverHost`  |  string  |  資料庫主機  |  資料庫伺服器主機的 IP 地址。範例值為 `123.456.789.123`。  | 
|  `serverType`  |  string  |  N/A  |  資料庫伺服器類型。值一律為 `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  |  N/A  |  此欄位不會用於 RDS for Oracle 且一律為空。  | 
|  `statementId`  |  數字  |  `UNIFIED_AUDIT_TRAIL` 中的 `STATEMENT_ID` 欄位  |  每個陳述式執行的數字 ID。陳述式可能會引起許多動作。範例值為 `142197`。  | 
|  `substatementId`  |  N/A  |  N/A  |  此欄位不會用於 RDS for Oracle 且一律為空。  | 
|  `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`  |  string  |  ` sys.fn_get_audit_file.class_type` 對應至 `sys.dm_audit_class_type_map.class_type_desc`  |  活動事件的類別。如需詳細資訊，請參閱 Microsoft 文件中的 [SQL Server 稽核 (資料庫引擎)](https://learn.microsoft.com/en-us/sql/relational-databases/security/auditing/sql-server-audit-database-engine?view=sql-server-ver16)。  | 
|  `clientApplication`  |  string  |  `sys.fn_get_audit_file.application_name`  |  根據用戶端報告，用戶端連線的應用程式 (SQL Server 第 14 版及更高版本)。此欄位在 SQL Server 第 13 版為空值。  | 
|  `command`  |  string  |  `sys.fn_get_audit_file.action_id` 對應至 `sys.dm_audit_actions.name`  |  SQL 陳述式的一般類別。此欄位的值取決於該類別的值。  | 
|  `commandText`  |  string  |  `sys.fn_get_audit_file.statement`  |  此欄位會顯示該 SQL 陳述式。  | 
|  `databaseName`  |  string  |  `sys.fn_get_audit_file.database_name`  |  資料庫的名稱。  | 
|  `dbProtocol`  |  string  |  N/A  |  資料庫通訊協定。此值為 `SQLSERVER`。  | 
|  `dbUserName`  |  string  |  `sys.fn_get_audit_file.server_principal_name`  |  用戶端驗證所用的資料庫使用者。  | 
|  `endTime`  |  string  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `engineNativeAuditFields`  |  物件  |  未列於此欄位的 `sys.fn_get_audit_file` 中各欄。  |  根據預設，此物件為空。使用 `--engine-native-audit-fields-included` 選項開啟活動串流時，此物件會包含此 JSON 對應不會回傳的其他原生引擎稽核欄位。  | 
|  `errorMessage`  |  string  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `exitCode`  |  integer  |  `sys.fn_get_audit_file.succeeded`  |  顯示是否成功啟動事件。此欄不能為空值。針對登入事件以外的所有事件，此欄會顯示許可檢查成功與否，但不會顯示操作是否成功。 數值包含： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/DBActivityStreams.AuditLog.databaseActivityEventList.html)  | 
|  `logTime`  |  string  |  `sys.fn_get_audit_file.event_time`  |  SQL Server 記錄的事件時間戳記。  | 
|  `netProtocol`  |  string  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `objectName`  |  string  |  `sys.fn_get_audit_file.object_name`  |  SQL 陳述式在其中操作的資料庫物件名稱。  | 
|  `objectType`  |  string  |  `sys.fn_get_audit_file.class_type` 對應至 `sys.dm_audit_class_type_map.class_type_desc`  |  SQL 陳述式在其中操作的資料庫物件類型。  | 
|  `paramList`  |  string  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `pid`  |  integer  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `remoteHost`  |  string  |  `sys.fn_get_audit_file.client_ip`  |  發出 SQL 陳述式 (SQL Server 第 14 版及更高版本) 之用戶端的 IP 地址或主機名稱。此欄位在 SQL Server 第 13 版為空值。  | 
|  `remotePort`  |  integer  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `rowCount`  |  integer  |  `sys.fn_get_audit_file.affected_rows`  |  SQL 陳述式影響的資料列數 (SQL Server 第 14 版及更高版本)。此欄位在 SQL Server 第 13 版中。  | 
|  `serverHost`  |  string  |  資料庫主機  |  主機資料庫伺服器的 IP 地址。  | 
|  `serverType`  |  string  |  N/A  |  資料庫伺服器類型。值為 `SQLSERVER`。  | 
|  `serverVersion`  |  string  |  資料庫主機  |  資料庫伺服器版本，例如，SQL Server 2017 年的 15.00.4073.23.v1.R1。  | 
|  `serviceName`  |  string  |  資料庫主機  |  服務的名稱。範例值為 `sqlserver-ee`。  | 
|  `sessionId`  |  integer  |  `sys.fn_get_audit_file.session_id`  |  工作階段的唯一識別碼。  | 
|  `startTime`  |  string  |  N/A  |  Amazon RDS for SQL Server 不使用此欄位，且其值為空值。  | 
|  `statementId`  |  string  |  `sys.fn_get_audit_file.sequence_group_id`  |  唯一用戶端 SQL 陳述式的識別碼。每個產生出的事件的識別碼都不同。範例值為 `0x38eaf4156267184094bb82071aaab644`。  | 
|  `substatementId`  |  integer  |  `sys.fn_get_audit_file.sequence_number`  |  用來決定陳述式序號的識別碼。當大量記錄分成多個記錄時，此識別碼將有所助益。  | 
|  `transactionId`  |  integer  |  `sys.fn_get_audit_file.transaction_id`  |  交易的識別碼。如果沒有任何作用中交易，則該值為零。  | 
|  `type`  |  string  |  已產生的資料庫活動串流  |  事件的類型。值為 `record` 或 `heartbeat`。  | 

# 使用 AWS SDK 來處理資料庫活動串流
<a name="DBActivityStreams.CodeExample"></a>

您可以透過使用 AWS 開發套件來以程式設計的方式處理活動串流。下列是功能完整的 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) 角色權限的任何使用者可以建立、啟動、停止和修改資料庫執行個體的活動串流設定。這些動作會包含在串流的稽核日誌中。為了達到最佳合規實務，我們建議您不要將這些權限提供給 DBA。

您可以使用 IAM 政策來設定資料庫活動串流的存取。如需更多有關 Amazon RDS 身分驗證的資訊，請參閱 [Amazon RDS 的 Identity and access management](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 保護會分析和描述登入事件，以找出 Amazon RDS 資料庫的潛在存取威脅。當您開啟 RDS 保護時，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 使用者指南》**中的[問題清單詳細資訊](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings-summary.html)和 [GuardDuty RDS Protection 問題清單類型](https://docs.aws.amazon.com/guardduty/latest/ug/findings-rds-protection.html)。

您可以在可使用 AWS 區域 此功能的任何 AWS 帳戶 中，開啟或關閉任何 的 RDS 保護功能。RDS 保護未啟用時，GuardDuty 不會偵測可能洩露的 RDS 資料庫，也不會提供洩露的詳細資訊。

現有的 GuardDuty 帳戶可以在 30 天試用期內啟用 RDS Protection。新 GuardDuty 帳戶的 RDS Protection 已啟用，且包含在 30 天免費試用期內。如需詳細資訊，請參閱《Amazon GuardDuty 使用者指南》**中的[估算 GuardDuty 成本](https://docs.aws.amazon.com/guardduty/latest/ug/monitoring_costs.html)。

如需有關 GuardDuty 尚未支援 RDS 保護 AWS 區域 的 的資訊，請參閱《*Amazon GuardDuty 使用者指南*》中的[區域特定功能可用性](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_regions.html#gd-regional-feature-availability)。

如需 GuardDuty RDS 保護支援的 RDS 資料庫版本的資訊，請參閱《Amazon GuardDuty 使用者指南》**中的[支援的 Amazon Aurora、Amazon RDS 和 Aurora Limitless 資料庫](https://docs.aws.amazon.com/guardduty/latest/ug/rds-protection.html#rds-pro-supported-db)。