本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EventBridge,您可以自動化 AWS 服務並回應系統事件,例如應用程式可用性問題或資源變更。
創建規則以將 Amazon RDS 事件發送到 Amazon EventBridge
您可編寫簡單的規則,來指示您在意的 Amazon RDS 事件,以及事件符合規則時所要自動執行的動作。您可以設定各種目標,例如以 JSON 格式接收事件的 AWS Lambda 函數或 Amazon SNS 主題。例如,您可以將 Amazon RDS Amazon 設定為在建立或刪除資料庫執行個體 EventBridge 時,將事件傳送到 Amazon。如需詳細資訊,請參閱 Amazon CloudWatch 活動使用者指南和 Amazon EventBridge 使用者指南。
建立由 RDS 事件觸發的規則:
開啟主 CloudWatch 控台,網址為 https://console.aws.amazon.com/cloudwatch/
。 -
在導覽窗格的 Events (事件) 中,選擇 Rules (規則)。
-
選擇建立規則。
-
針對 Event Source (事件來源),請執行下列動作:
-
選擇 Event Pattern (事件模式)。
-
對於 Service Name (服務名稱),選擇 Relational Database Service (RDS) (關聯式資料庫服務)。
-
若為 Event Type (事件類型),選擇觸發事件的 Amazon RDS 資源類型。例如,若的資料庫執行個體觸發事件,請選擇 RDS 資料庫執行個體事件。
-
-
對於「目標」,請選擇「新增目標」,然後選擇偵測到所選類型的事件時要採取的 AWS 服務。
-
在此區段的其他欄位中,輸入此目標類型的特定資訊 (如有需要)。
-
對於許多目標類型, EventBridge 需要將事件傳送至目標的權限。在這些情況下, EventBridge 可以建立事件執行所需的 IAM 角色:
-
若要自動建立 IAM 角色,請選擇 Create a new role for this specific resource (為此特定資源建立新角色)。
-
若要使用您之前建立的 IAM 角色,請選擇 Use existing role (使用現有角色)。
-
-
您也可以選擇重複操作步驟 5 到 7,為此規則新增其他目標。
-
選擇 Configure details (設定詳細資訊)。針對 Rule definition (規則定義),請輸入規則的名稱和描述。
規則名稱在此區域內必須是唯一的。
-
選擇 Create rule (建立規則)。
如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的建立對事件觸發的 EventBridge 規則。
教學:使用 Amazon 記錄資料庫執行個體狀態變更 EventBridge
在本教學中,您會建立記錄 Amazon RDS 執行個體狀態變更的 AWS Lambda 函數。然後,您建立一個規則,在現有 RDS 資料庫執行個體的狀態變更時執行該函數。本教學假設您擁有可以暫時關閉的小型執行中測試執行個體。
重要
請勿在執行生產資料庫執行個體上執行本教學課程。
步驟 1:建立 AWS Lambda 函數
建立 Lambda 函數以記錄狀態變更事件。當您在建立規則時指定此函數。
建立 Lambda 函數
開啟主 AWS Lambda 控台,網址為 https://console.aws.amazon.com/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 (使用現有的角色)。選擇您想使用的角色。
-
-
選擇建立函數。
-
-
在 RDS InstanceStateChange 頁面上,執行下列動作:
-
在 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 服務。
-
對於 AWS Service (服務),選擇 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 主控台並啟用您停止的執行個體。