向 Amazon 活動發送 CloudWatch 活動 - AWS SDK for JavaScript

我們宣布即將推出 end-of-support AWS SDK for JavaScript v2。建議您遷移至 AWS SDK for JavaScript v3。如需日期、其他詳細資訊和如何遷移的資訊,請參閱連結公告。

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

向 Amazon 活動發送 CloudWatch 活動

JavaScript code example that applies to Node.js execution

這個 Node.js 程式碼範例會說明:

  • 如何建立及更新觸發事件所用的規則。

  • 如何定義一個或多個目標以回應事件。

  • 如何傳送與目標相符的事件以進行處理。

使用案例

CloudWatch 事件提供近乎即時的系統事件串流,描述 Amazon Web Services 資源對任何不同目標的變更。使用簡單的規則,您可以比對事件,並將這些事件轉傳到一或多個目標函數或串流。

在此範例中,一系列 Node.js 模組用於將事件傳送至 CloudWatch 事件。Node.js 模組會使用 SDK JavaScript 來管理使用用CloudWatchEvents戶端類別的下列方法執行個體:

如需有關 CloudWatch 事件的詳細資訊,請參閱 Amazon 事件使用者指南 PutEvents中的使用新增 CloudWatch 事件

先決條件任務

若要設定和執行此範例,您必須先完成這些任務:

您可以使用下列角色政策來建立 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsFullAccess", "Effect": "Allow", "Action": "events:*", "Resource": "*" }, { "Sid": "IAMPassRoleForCloudWatchEvents", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWS_Events_Invoke_Targets" } ] }

您可以使用下列信任關係來建立 IAM 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

建立排程的規則

以檔名 cwe_putrule.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。若要存取 CloudWatch 事件,請建立AWS.CloudWatchEvents服務物件。建立 JSON 物件,其中包含指定新排程規則所需的參數,其中包含下列項目:

  • 規則的名稱

  • 您先前建立的 IAM 角色的 ARN

  • 排定每 5 分鐘為觸發的規則表達式

呼叫 putRule 方法來建立規則。回呼會傳回新的或更新規則的 ARN。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Name: "DEMO_EVENT", RoleArn: "IAM_ROLE_ARN", ScheduleExpression: "rate(5 minutes)", State: "ENABLED", }; cwevents.putRule(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.RuleArn); } });

若要執行範例,請在命令列中輸入以下內容。

node cwe_putrule.js

您可以在這裡找到此範例程式碼 GitHub。

新增AWS Lambda函數目標

以檔名 cwe_puttargets.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。若要存取 CloudWatch 事件,請建立AWS.CloudWatchEvents服務物件。建立 JSON 物件,其中包含指定要附加目標之規則所需的參數,包括您建立的 Lambda 函數的 ARN。呼叫 AWS.CloudWatchEvents 服務物件的 putTargets 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Rule: "DEMO_EVENT", Targets: [ { Arn: "LAMBDA_FUNCTION_ARN", Id: "myCloudWatchEventsTarget", }, ], }; cwevents.putTargets(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

若要執行範例,請在命令列中輸入以下內容。

node cwe_puttargets.js

您可以在這裡找到此範例程式碼 GitHub。

傳送事件

以檔名 cwe_putevents.js 建立一個 Node.js 模組。請務必依前述的內容來設定軟體開發套件。若要存取 CloudWatch 事件,請建立AWS.CloudWatchEvents服務物件。建立 JSON 物件,其包含傳送事件所需的參數。對於每個事件,包括事件來源、受事件影響的任何資源的 ARN,以及事件的詳細資訊。呼叫 AWS.CloudWatchEvents 服務物件的 putEvents 方法。

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create CloudWatchEvents service object var cwevents = new AWS.CloudWatchEvents({ apiVersion: "2015-10-07" }); var params = { Entries: [ { Detail: '{ "key1": "value1", "key2": "value2" }', DetailType: "appRequestSubmitted", Resources: ["RESOURCE_ARN"], Source: "com.company.app", }, ], }; cwevents.putEvents(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Entries); } });

若要執行範例,請在命令列中輸入以下內容。

node cwe_putevents.js

您可以在這裡找到此範例程式碼 GitHub。