

AWS SDK for JavaScript v2 はサポート終了となりました。[AWS SDK for JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) に移行することをお勧めします。その他の詳細、移行方法については、こちらの[発表内容](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)を参照してください。

# Amazon CloudWatch Events へのイベントの送信
<a name="cloudwatch-examples-sending-events"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**この Node.js コード例は以下を示しています。**
+ イベントをトリガーするために使用するルールを作成および更新する方法。
+ イベントに対応するための 1 つ以上のターゲットを定義する方法。
+ 処理用ターゲットに一致するイベントを送信する方法。

## シナリオ
<a name="cloudwatch-examples-sending-events-scenario"></a>

CloudWatch Events では、Amazon Web Services リソースの変更を記述した、システムイベントのほぼリアルタイムのストリーミングをさまざまなターゲットに配信します。簡単なルールを使用して、一致したイベントを 1 つ以上のターゲット関数またはストリームに振り分けることができます。

この例では、一連の Node.js モジュールを使用して CloudWatch Events にイベントを送信しています。Node.js モジュールは、`CloudWatchEvents` クライアントクラスの以下のメソッドを使用してインスタンスを管理するために SDK for JavaScript を使用します。
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putRule-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putRule-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putTargets-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putTargets-property)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putEvents-property](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatchEvents.html#putEvents-property)

CloudWatch Events の詳細については、*Amazon CloudWatch Events ユーザーガイド*の [PutEvents を使用したイベントの追加](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/AddEventsPutEvents.html)を参照してください。

## 前提条件タスク
<a name="cloudwatch-examples-sending-events-prerequisites"></a>

この例をセットアップして実行するには、まず次のタスクを完了する必要があります。
+ Node.js をインストールします。Node.js をインストールする方法の詳細については、[Node.js ウェブサイト](https://nodejs.org)を参照してください。
+ ユーザーの認証情報を使用して、共有設定ファイルを作成します。共有認証情報ファイルの提供の詳細については、[共有認証情報ファイルから Node.js に認証情報をロードする](loading-node-credentials-shared.md) を参照してください。
+ イベントの対象となる **hello-world** 設計図を使用して Lambda 関数を作成します。その方法については、*Amazon CloudWatch Events ユーザーガイド*の[ステップ 1: AWS Lambda 関数を作成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/LogEC2InstanceState.html)を参照してください。
+ CloudWatch Events に許可を付与し、信頼されたエンティティとして `events.amazonaws.com` を含めるポリシーを持つ IAM ロールを作成します。IAM ロールの作成の詳細については、*IAM ユーザーガイド*の [AWS のサービスに許可を委任するロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)を参照してください。

IAM ロールを作成するときに、以下のロールポリシーを使用します。

------
#### [ JSON ]

****  

```
{
   "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 ロールを作成するときに、以下の信頼関係を使用します。

------
#### [ JSON ]

****  

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

------

## スケジュールされたルールを作成する
<a name="cloudwatch-examples-sending-events-rules"></a>

`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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_putrule.js)にあります。

## AWS Lambda 関数のターゲットの追加
<a name="cloudwatch-examples-sending-events-targets"></a>

`cwe_puttargets.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Events にアクセスするには、`AWS.CloudWatchEvents` サービスオブジェクトを作成します。作成した Lambda 関数の ARN を含めて、ターゲットをアタッチするルールを指定するために必要なパラメータを含む JSON オブジェクトを作成します。`putTargets` サービスオブジェクトの `AWS.CloudWatchEvents` メソッドを呼び出します。

```
// 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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_puttargets.js)にあります。

## イベントを送信する
<a name="cloudwatch-examples-sending-events-putevents"></a>

`cwe_putevents.js` というファイル名で Node.js モジュールを作成します。前に示したように SDK を必ず設定します。CloudWatch Events にアクセスするには、`AWS.CloudWatchEvents` サービスオブジェクトを作成します。イベントを送信するのに必要なパラメータを含む JSON オブジェクトを作成します。イベントごとに、イベントのソース、イベントの影響を受けるリソースの ARN、およびイベントの詳細を含めます。`putEvents` サービスオブジェクトの `AWS.CloudWatchEvents` メソッドを呼び出します。

```
// 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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/cloudwatch-events/cwe_putevents.js)にあります。