

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/ko_kr/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**이 Node.js 코드 예제는 다음을 보여 줍니다.**
+ 이벤트를 트리거하는 데 사용되는 규칙을 생성하고 업데이트하는 방법.
+ 이벤트에 응답할 하나 이상의 대상을 정의하는 방법.
+ 처리를 위해 대상과 일치하는 이벤트를 전송하는 방법.

## 시나리오
<a name="cloudwatch-examples-sending-events-scenario"></a>

CloudWatch Events는 다양한 대상으로의 Amazon Web Services 리소스 변경 사항을 설명하는 시스템 이벤트의 스트림을 거의 실시간으로 전달합니다. 단순한 규칙을 사용하여 이벤트를 하나 이상의 대상 함수 또는 스트림에 일치시키고 라우팅할 수 있습니다.

이 예제에서는 일련의 Node.js 모듈을 사용하여 이벤트를 CloudWatch Events에 전송합니다. Node.js 모듈은 SDK for JavaScript로 `CloudWatchEvents` 클라이언트 클래스의 다음 메서드를 사용하여 인스턴스를 관리합니다.
+ [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)에서 찾을 수 있습니다.