本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立由 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 事件觸發的規則:
透過 https://console.aws.amazon.com/cloudwatch/
開啟 CloudWatch 主控台。 -
在導覽窗格的 Events (事件) 中,選擇 Rules (規則)。
-
選擇建立規則。
-
針對 Event Source (事件來源),請執行下列動作:
-
選擇 Event Pattern (事件模式)。
-
對於 Service Name (服務名稱),選擇 Relational Database Service (RDS) (關聯式資料庫服務)。
-
若為 Event Type (事件類型),選擇觸發事件的 Amazon RDS 資源類型。例如,若的資料庫執行個體觸發事件,請選擇 RDS 資料庫執行個體事件。
-
-
針對 Targets (目標),選擇 Add Target (新增目標),然後選擇當偵測到所選取類型的事件時,將採取行動的 AWS 服務。
-
在此區段的其他欄位中,輸入此目標類型的特定資訊 (如有需要)。
-
對於許多目標類型而言,EventBridge 需要許可才能將事件傳送到目標。在這些情況下,EventBridge 可建立執行事件所需的 IAM 角色。
-
若要自動建立 IAM 角色,請選擇 Create a new role for this specific resource (為此特定資源建立新角色)。
-
若要使用您之前建立的 IAM 角色,請選擇 Use existing role (使用現有角色)。
-
-
您也可以選擇重複操作步驟 5 到 7,為此規則新增其他目標。
-
選擇 Configure details (設定詳細資訊)。針對 Rule definition (規則定義),請輸入規則的名稱和描述。
規則名稱在此區域內必須是唯一的。
-
選擇建立規則。
如需詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的建立由事件觸發的 EventBridge 規則。
教學課程:使用 Amazon EventBridge 來記錄資料庫執行個體狀態變更
於此教學課程中,您可建立一個 AWS Lambda 函數,來記錄 Amazon RDS 執行個體的狀態變更。然後,您建立一個規則,在現有 RDS 資料庫執行個體的狀態變更時執行該函數。本教學假設您擁有可以暫時關閉的小型執行中測試執行個體。
重要
請勿在執行生產資料庫執行個體上執行本教學課程。
步驟 1:建立 AWS Lambda 函數
建立 Lambda 函數以記錄狀態變更事件。當您在建立規則時指定此函數。
建立 Lambda 函數
在 https://console.aws.amazon.com/lambda/
開啟 AWS Lambda 主控台。 -
如果您是第一次使用 Lambda,將會看到歡迎頁面。選擇 Get Started Now (立即開始)。否則,請選擇 Create function (建立函數)。
-
選擇 Author from scratch (從頭開始撰寫)。
-
在 Create function (建立函數) 頁面上,執行下列動作:
-
輸入 Lambda 函數的名稱和描述。例如,將函數命名為
RDSInstanceStateChange。 -
在 Runtime (執行時間) 中,選取 Node.js 16x。
-
對於 Architecture (架構),選擇 x86_64。
-
對於 Execution role (執行角色),執行下列任何一項:
-
選擇 Create a new role with basic Lambda permissions (建立具備基本 Lambda 許可的新角色)。
-
針對 Existing role (現有角色),選擇 Use an existing role (使用現有的角色)。選擇您想使用的角色。
-
-
選擇 Create function (建立函式)。
-
-
在 RDSInstanceStateChange 頁面,執行下列動作:
-
在 Code source (程式碼來源) 中,選取 index.js。
-
在 index.js 窗格中,刪除現有的程式碼。
-
輸入下列程式碼︰
console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); }; -
選擇 Deploy (部署)。
-
步驟 2:建立規則
建立規則,在您啟動 Amazon RDS 執行個體時,執行您的 Lambda 函數。
若要建立 EventBridge 規則
在 https://console.aws.amazon.com/events/
開啟 Amazon EventBridge 主控台。 -
在導覽窗格中,選擇規則。
-
選擇建立規則。
-
輸入規則的名稱和描述。例如,輸入
RDSInstanceStateChangeRule。 -
選擇 Rule with an event pattern (具有事件模式的規則),然後選擇 Next (下一步)。
-
在事件來源欄位中,選擇 AWS 事件或 EventBridge 合作夥伴事件。
-
向下捲動到 Event pattern (事件模式) 區段中。
-
在 Event source (事件來源),選擇 AWS 服務。
-
對於 AWSService (服務),選擇 Relational Database Service (RDS) (關聯式資料庫服務)。
-
對於 Event type (事件類型),選擇 RDS DB Instance Event (RDS 資料庫執行個體事件)。
-
保留預設事件模式。然後選擇下一步。
-
在目標類型欄位中,選擇 AWS 服務。
-
對於 Select a target (選取目標),選擇 Lambda function (Lambda 函數)。
-
針對 Function (函數),選擇您建立的 Lambda 函數。然後選擇下一步。
-
在 Configure tags (設定標籤) 中,選擇 Next (下一步)。
-
檢閱規則中的步驟。然後,選擇 Create role (建立角色)。
步驟 3:測試規則
若要測試您的規則,請關閉 RDS 資料庫執行個體。等待幾分鐘讓執行個體關閉,驗證您的 Lambda 函數是否被叫用。
停用資料庫執行個體以測試您的規則
前往 https://console.aws.amazon.com/rds/
,開啟 Amazon RDS 主控台。 -
停止 RDS 資料庫執行個體。
在 https://console.aws.amazon.com/events/
開啟 Amazon EventBridge 主控台。 -
在導覽窗格中,選擇 Rules (規則),然後選擇您建立的規則名稱。
-
在規則詳細資料中,選擇監控。
您會被重新導向至 Amazon CloudWatch 主控台。如果您未重新導向,請按一下在 CloudWatch 中檢視指標。
-
在 All metrics (所有指標) 中,選擇您建立的規則名稱。
該圖表應指示已叫用的規則。
-
在導覽窗格中,選擇 Log groups (日誌群組)。
-
選擇您的 Lambda 函數的日誌群組名稱 (/aws/lambda/
function-name)。 -
選擇日誌串流名稱以檢視函數為您啟動的執行個體所提供的資料。您應該會看到類似以下接收的事件:
{ "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 的事件概觀。
-
(選用) 完成後,您可以開啟 Amazon RDS 主控台並啟用您停止的執行個體。