建立由 Amazon RDS 事件觸發的規則 - Amazon Relational Database Service

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

建立由 Amazon RDS 事件觸發的規則

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

建立規則以將 Amazon RDS 事件傳送至 Amazon EventBridge

您可編寫簡單的規則,來指示您在意的 Amazon RDS 事件,以及事件符合規則時所要自動執行的動作。您可以設定各種 (例如 AWS Lambda 函數或 Amazon SNS 主題) 以 JSON 格式接收事件的目標。例如,您可以設定 Amazon RDS 在每當建立或刪除資料庫執行個體時傳送事件到 Amazon EventBridge。如需詳細資訊,請參閱 Amazon CloudWatch Events 使用者指南Amazon EventBridge 使用者指南

建立由 RDS 事件觸發的規則:
  1. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在導覽窗格的 Events (事件) 中,選擇 Rules (規則)

  3. 選擇建立規則

  4. 針對 Event Source (事件來源),請執行下列動作:

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

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

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

  5. 針對 Targets (目標),選擇 Add Target (新增目標),然後選擇當偵測到所選取類型的事件時,將採取行動的 AWS 服務。

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

  7. 對於許多目標類型而言,EventBridge 需要許可才能將事件傳送到目標。在這些情況下,EventBridge 可建立執行事件所需的 IAM 角色。

    • 若要自動建立 IAM 角色,請選擇 Create a new role for this specific resource (為此特定資源建立新角色)

    • 若要使用您之前建立的 IAM 角色,請選擇 Use existing role (使用現有角色)

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

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

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

  10. 選擇建立規則

如需詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的建立由事件觸發的 EventBridge 規則

教學課程:使用 Amazon EventBridge 來記錄資料庫執行個體狀態變更

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

重要

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

步驟 1:建立 AWS Lambda 函數

建立 Lambda 函數以記錄狀態變更事件。當您在建立規則時指定此函數。

建立 Lambda 函數
  1. https://console.aws.amazon.com/lambda/ 開啟 AWS Lambda 主控台。

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

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

  4. Create function (建立函數) 頁面上,執行下列動作:

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

    2. Runtime (執行時間) 中,選取 Node.js 16x

    3. 對於 Architecture (架構),選擇 x86_64

    4. 對於 Execution role (執行角色),執行下列任何一項:

      • 選擇 Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)

      • 針對 Existing role (現有角色),選擇 Use an existing role (使用現有的角色)。選擇您想使用的角色。

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

  5. RDSInstanceStateChange 頁面,執行下列動作:

    1. Code source (程式碼來源) 中,選取 index.js

    2. index.js 窗格中,刪除現有的程式碼。

    3. 輸入下列程式碼︰

      console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
    4. 選擇 Deploy (部署)

步驟 2:建立規則

建立規則,在您啟動 Amazon RDS 執行個體時,執行您的 Lambda 函數。

若要建立 EventBridge 規則
  1. https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  2. 在導覽窗格中,選擇規則

  3. 選擇建立規則

  4. 輸入規則的名稱和描述。例如,​輸入 RDSInstanceStateChangeRule

  5. 選擇 Rule with an event pattern (具有事件模式的規則),然後選擇 Next (下一步)。

  6. 事件來源欄位中,選擇 AWS 事件或 EventBridge 合作夥伴事件

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

  8. Event source (事件來源),選擇 AWS 服務

  9. 對於 AWSService (服務),選擇 Relational Database Service (RDS) (關聯式資料庫服務)。

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

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

  12. 目標類型欄位中,選擇 AWS 服務

  13. 對於 Select a target (選取目標),選擇 Lambda function (Lambda 函數)。

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

  15. Configure tags (設定標籤) 中,選擇 Next (下一步)。

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

步驟 3:測試規則

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

停用資料庫執行個體以測試您的規則
  1. 前往 https://console.aws.amazon.com/rds/,開啟 Amazon RDS 主控台。

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

  3. https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  4. 在導覽窗格中,選擇 Rules (規則),然後選擇您建立的規則名稱。

  5. 規則詳細資料中,選擇監控

    您會被重新導向至 Amazon CloudWatch 主控台。如果您未重新導向,請按一下在 CloudWatch 中檢視指標

  6. All metrics (所有指標) 中,選擇您建立的規則名稱。

    該圖表應指示已叫用的規則。

  7. 在導覽窗格中,選擇 Log groups (日誌群組)。

  8. 選擇您的 Lambda 函數的日誌群組名稱 (/aws/lambda/function-name)。

  9. 選擇日誌串流名稱以檢視函數為您啟動的執行個體所提供的資料。您應該會看到類似以下接收的事件:

    { "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 的事件概觀

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