

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

# 建立由 Amazon Aurora 事件觸發的規則
<a name="rds-cloud-watch-events"></a>

使用 Amazon EventBridge，您可以自動化 AWS 服務並回應系統事件，例如應用程式可用性問題或資源變更。

**Topics**
+ [教學課程：使用 Amazon EventBridge 來記錄資料庫執行個體狀態變更](#log-rds-instance-state)

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

在本教學課程中，您會建立 AWS Lambda 函數，記錄 執行個體的狀態變更。然後，您建立一個規則，在現有 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 事件範例，請參閱 [Aurora 的事件概觀](working-with-events.md#rds-cloudwatch-events.sample)。

1. (選用) 完成後，您可以開啟 Amazon RDS 主控台並啟用您停止的執行個體。