AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
Amazon CloudWatch Events へのイベントの送信
この Node.js コード例は以下を示しています。
イベントをトリガーするために使用するルールを作成および更新する方法。
イベントに対応するための 1 つ以上のターゲットを定義する方法。
処理用ターゲットに一致するイベントを送信する方法。
シナリオ
CloudWatch Events では、Amazon Web Services リソースの変更を記述した、システムイベントのほぼリアルタイムのストリーミングをさまざまなターゲットに配信します。簡単なルールを使用して、一致したイベントを 1 つ以上のターゲット関数またはストリームに振り分けることができます。
この例では、一連の Node.js モジュールを使用して CloudWatch Events にイベントを送信しています。Node.js モジュールは、CloudWatchEvents
クライアントクラスの以下のメソッドを使用してインスタンスを管理するために SDK for JavaScript を使用します。
CloudWatch Events の詳細については、Amazon CloudWatch Events ユーザーガイドの PutEvents を使用したイベントの追加を参照してください。
前提条件タスク
この例をセットアップして実行するには、まず次のタスクを完了する必要があります。
Node.js をインストールします。Node.js をインストールする方法の詳細については、Node.js ウェブサイト
を参照してください。 ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、共有認証情報ファイルから Node.js に認証情報をロードする を参照してください。
イベントの対象となる hello-world 設計図を使用して Lambda 関数を作成します。その方法については、Amazon CloudWatch Events ユーザーガイドのステップ 1: AWS Lambda 関数を作成を参照してください。
CloudWatch Events に許可を付与し、信頼されたエンティティとして
events.amazonaws.com
を含めるポリシーを持つ IAM ロールを作成します。IAM ロールの作成の詳細については、IAM ユーザーガイドの AWS のサービスに許可を委任するロールの作成を参照してください。
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 モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Events にアクセスするには、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 モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Events にアクセスするには、AWS.CloudWatchEvents
サービスオブジェクトを作成します。作成した Lambda 関数の ARN を含めて、ターゲットをアタッチするルールを指定するために必要なパラメータを含む JSON オブジェクトを作成します。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 モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Events にアクセスするには、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