

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 자습서: Amazon EventBridge를 사용하여 조직에 대한 중요 변경 사항 모니터링
<a name="orgs_tutorials_cwe"></a>

이 자습서에서는 조직에 대한 변경 사항을 모니터링하도록 Amazon EventBridge(이전 Amazon CloudWatch Events)를 구성합니다. 먼저, 사용자가 특정 AWS Organizations 작업을 호출하면 트리거되는 규칙을 구성합니다. 그런 다음 규칙이 트리거될 때 AWS Lambda 함수를 실행하도록 Amazon EventBridge를 구성하고 이벤트에 대한 세부 정보가 포함된 이메일을 보내도록 Amazon SNS를 구성합니다.

다음 그림은 자습서의 기본 단계를 보여줍니다.

**[1단계: 추적 및 이벤트 선택기 구성](#tutorial-cwe-step1)**  
에서 *추적*이라는 로그를 생성합니다 AWS CloudTrail. 모든 API 호출을 캡처하도록 이를 구성합니다.

**[2단계: Lambda 함수 구성](#tutorial-cwe-step2)**  
이벤트에 대한 세부 정보를 S3 버킷에 로깅하는 AWS Lambda 함수를 생성합니다.

**[3단계: 구독자에게 이메일을 전송하는 Amazon SNS 주제 생성](#tutorial-cwe-step3)**  
이메일을 구독자에게 보내는 Amazon SNS 주제를 생성한 후, 주제를 직접 구독합니다.

**[4단계: Amazon EventBridge 규칙 생성](#tutorial-cwe-step4)**  
Amazon EventBridge가 지정된 API 호출 세부 사항을 Lambda 함수 및 SNS 주제 구독자에게 전달하도록 하는 규칙을 생성합니다.

**[5단계: Amazon EventBridge 규칙 테스트](#tutorial-cwe-step5)**  
모니터링되는 작업 중 하나를 실행하여 새 규칙을 테스트합니다. 이 자습서에서는 모니터링되는 작업이 조직 단위(OU)를 만드는 작업입니다. Lambda 함수가 생성하는 로그 항목을 확인하고, Amazon SNS가 구독자에게 보내는 이메일을 확인합니다.

**도움말**  
이 자습서를 비슷한 작업(계정 생성 완료 시 이메일 알림 전송 등)을 구성하기 위한 가이드로 사용할 수도 있습니다. 계정 생성은 비동기 작업이기 때문에 기본적으로 완료 시 알림이 발송되지 않습니다. AWS CloudTrail 및와 함께 Amazon EventBridge를 사용하는 방법에 대한 자세한 내용은 섹션을 AWS Organizations참조하세요[에서 로깅 및 모니터링 AWS Organizations](orgs_security_incident-response.md).

## 사전 조건
<a name="tutorial-cwe-prereqs"></a>

이 튜토리얼는 다음과 같이 가정합니다.
+ 조직의 관리 계정에서 IAM 사용자 AWS Management Console 로에 로그인할 수 있습니다. IAM 사용자에게는 CloudTrail에 로그를, Lambda에 함수를, Amazon SNS에 주제를, 그리고 Amazon EventBridge에 규칙을 생성하고 구성할 수 있는 권한이 있어야 합니다. 권한 부여에 대한 자세한 내용은 *IAM 사용 설명서*의 [액세스 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html), 또는 액세스를 구성하려는 서비스의 설명서를 참조하세요.
+ 1단계에서 구성한 CloudTrail 로그를 수신하려면 기존 Amazon Simple Storage Service(Amazon S3) 버킷에 대한 액세스 권한이 있거나 버킷을 생성할 수 있는 권한이 있어야 합니다.

**중요**  
현재 AWS Organizations 는 미국 동부(버지니아 북부) 리전에서만 호스팅됩니다(전 세계적으로 사용 가능하더라도). 이 자습서의 단계를 수행하려면 해당 리전을 사용하도록 AWS Management Console 를 구성해야 합니다.

## 1단계: 추적 및 이벤트 선택기 구성
<a name="tutorial-cwe-step1"></a>

이 단계에서는 관리 계정에 로그인하고 AWS CloudTrail에 로그(*추적*이라고 함)를 구성합니다. 또한 모든 읽기/쓰기 API 호출을 캡처하여 Amazon EventBridge에서 트리거를 일으킬 호출이 발생되도록 추적에 이벤트 선택기도 구성합니다.

**추적을 생성하려면**

1. 조직 관리 계정의 관리자 AWS 로에 로그인한 다음에서 CloudTrail 콘솔을 엽니다[https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/).

1. 콘솔의 오른쪽 상단에 있는 탐색 모음에서 **미국 동부(버지니아 북부)** 리전을 선택합니다. 다른 리전을 선택하면 Amazon EventBridge 구성 설정에 옵션으로 AWS Organizations 표시되지 않으며 CloudTrail은 정보를 캡처하지 않습니다 AWS Organizations.

1. 탐색 창에서 [**Trails**]를 선택합니다.

1. **추적 생성**을 선택합니다.

1. **추적 이름**에 **My-Test-Trail**을 입력합니다.

1. 다음 옵션 중 하나를 수행하여 CloudTrail이 해당 로그를 제공하는 위치를 지정합니다.
   + 버킷을 생성해야 하는 경우 **Create new S3 bucket**(새 S3 버킷 생성)을 선택한 다음 **Trail log bucket and folder**(추적 로그 버킷 및 폴더)에 새 버킷의 이름을 입력합니다.
**참고**  
S3 버킷 이름은 ***전역적으로*** 고유해야 합니다.
   + 버킷이 이미 있는 경우 **Use existing S3 bucket**(기존 S3 버킷 사용)을 선택한 다음 **S3 bucket**(S3 버킷) 목록에서 버킷 이름을 선택합니다.

1. **다음**을 선택합니다.

1. **Choose log events**(로그 이벤트 선택) 페이지의 **Management events**(관리 이벤트) 섹션에서 **Read**(읽기)와 **Write**(쓰기)를 선택합니다.

1. **다음**을 선택합니다.

1. 선택 사항을 검토하고 **Create trail**(추적 생성)을 선택합니다.

Amazon EventBridge를 사용하면 경보 규칙이 들어오는 API 호출과 일치하는 경우 경보를 보내는 여러 가지 방법을 선택할 수 있습니다. 이 자습서에서는 API 호출을 기록할 수 있는 Lambda 함수를 호출하는 방법과, 주제의 구독자에게 이메일이나 문자 메시지를 보내는 Amazon SNS 주제에 정보를 전송하는 방법 등 두 가지 방법을 설명합니다. 다음 두 단계에서는 필요한 구성 요소인 Lambda 함수 및 Amazon SNS 주제를 생성합니다.

## 2단계: Lambda 함수 구성
<a name="tutorial-cwe-step2"></a>

이 단계에서는 사용자가 나중에 구성하는 Amazon EventBridge 규칙에 따라 이 함수에 전송되는 API 활동을 기록하는 Lambda 함수를 만듭니다.

**Amazon EventBridge 이벤트를 기록하는 Lambda 함수를 만들려면**

1. 에서 AWS Lambda 콘솔을 엽니다[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Lambda를 처음 사용하는 경우 시작 페이지에서 **Get Started Now**(지금 시작)를 선택합니다. 처음 사용하는 경우가 아니라면 **Create function**(함수 만들기)을 선택합니다.

1. **함수 생성** 페이지에서 **청사진 사용**을 선택합니다.

1. **블루프린트** 검색 상자에 필터로 **hello**를 입력하고 **hello-world** 블루프린트를 선택합니다.

1. **구성**을 선택합니다.

1. **기본 정보** 페이지에서 다음을 수행합니다.

   1. Lambda 함수 이름에서 **이름(Name)**에 **LogOrganizationEvents**를 입력합니다.

   1. **역할(Role)**에서 **기본 Lambda 권한을 가진 새 역할 생성(Create a new role with basic Lambda permissions)**을 선택합니다. 이 역할은 필요한 데이터에 액세스할 수 있고 출력 로그를 쓸 수 있는 권한을 Lambda 함수에 부여합니다.

1. 다음 예와 같이 Lambda 함수 코드를 편집합니다.

   ```
   console.log('Loading function');
   
   exports.handler = async (event, context) => {
       console.log('LogOrganizationsEvents');
       console.log('Received event:', JSON.stringify(event, null, 2));
       return event.key1;  // Echo back the first key value
       // throw new Error('Something went wrong');
   };
   ```

   이 샘플 코드는 **LogOrganizationEvents** 마커 문자열이 있는 이벤트를, 이벤트를 구성하는 JSON 문자열 앞에 기록합니다.

1. **함수 생성**을 선택합니다.

## 3단계: 구독자에게 이메일을 전송하는 Amazon SNS 주제 생성
<a name="tutorial-cwe-step3"></a>

이 단계에서는 정보를 구독자에게 이메일로 보내는 Amazon SNS 주제를 생성합니다. 이 주제를 나중에 만드는 Amazon EventBridge 규칙의 대상으로 지정합니다.

**Amazon SNS 주제를 만들어 구독자에게 이메일을 전송하려면**

1. [https://console.aws.amazon.com/sns/v3/](https://console.aws.amazon.com/sns/v3/)에서 Amazon SNS 콘솔을 엽니다.

1. 탐색 창에서 **주제**를 선택합니다.

1. [**Create new topic**]을 선택합니다.

   1. **주제 이름**에 **OrganizationsCloudWatchTopic**을 입력합니다.

   1. **표시 이름**에 **OrgsCWEvnt**를 입력합니다.

   1. **주제 생성**을 선택합니다.

1. 이제 주제에 대한 구독을 생성할 수 있습니다. 방금 생성한 주제에 대한 ARN을 선택합니다.

1. **구독 생성**을 선택합니다.

   1. [**Create subscription**] 페이지에서 [**Protocol**]에 대해 [**Email**]을 선택합니다.

   1. **엔드포인트**에 이메일 주소를 입력합니다.

   1. **구독 생성을** 선택합니다. 이전 단계에서 지정한 이메일 주소로 이메일을 AWS 보냅니다. 해당 이메일에 도착할 때까지 기다렸다가 이메일의 **구독 확인** 링크를 선택하여 이메일을 잘 수신했음을 확인합니다.

   1. 콘솔로 돌아가 페이지를 새로 고칩니다. [**Pending confirmation**] 메시지가 사라지고 대신 유효한 구독 ID가 표시됩니다.

## 4단계: Amazon EventBridge 규칙 생성
<a name="tutorial-cwe-step4"></a>

이제 필요한 Lambda 함수가 계정에 존재하므로 규칙의 기준이 충족되면 이 함수를 호출하는 Amazon EventBridge 규칙을 만듭니다.

**EventBridge 규칙을 생성하려면**

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 콘솔을 **미국 동부(버지니아 북부)** 리전으로 설정해야 합니다. 그렇지 않으면 Organizations에 대한 정보를 사용할 수 없습니다. 콘솔의 오른쪽 상단에 있는 탐색 모음에서 **미국 동부(버지니아 북부)** 리전을 선택합니다.

1. 규칙을 만드는 방법에 대한 자세한 내용은 Amazon EventBridge 사용 설명서에서 [Amazon EventBridge의 규칙](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)을 참조하세요.

## 5단계: Amazon EventBridge 규칙 테스트
<a name="tutorial-cwe-step5"></a>

이 단계에서는 조직 단위(OU)를 생성한 다음 Amazon EventBridge 규칙을 살펴보고, 로그 항목을 생성하고, 이벤트에 대한 세부 정보가 들어 있는 이메일을 본인에게 전송합니다.

------
#### [ AWS Management Console ]

**OU를 생성하려면**

1.  AWS Organizations 콘솔을 열어 [**AWS 계정** 페이지로](https://console.aws.amazon.com/organizations/v2/home/accounts) 이동합니다.

1.  **Root** OU 확인란 ![Blue checkmark icon indicating confirmation or completion of a task.](http://docs.aws.amazon.com/ko_kr/organizations/latest/userguide/images/checkbox-selected.png)을 선택하고, **작업(Actions)**을 선택한 다음 **조직 단위(Organizational unit)**에서 **새로 만들기(Create new)**를 선택합니다.

1. OU의 이름에는 **TestCWEOU**을 입력한 후 **조직 단위 생성**을 선택합니다.

------

**EventBridge 로그 항목을 보려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 탐색 페이지에서 **로그**를 선택합니다.

1. **로그 그룹(Log Groups)** 아래에서 Lambda 함수 **/aws/lambda/LogOrganizationEvents**와 연결된 그룹을 선택합니다.

1. 각 그룹에는 하나 이상의 스트림이 있어야 하고, 현 시점에 그룹이 한 개 있어야 합니다. 이 값을 선택합니다.

1. 로그를 확인합니다. 다음과 같은 행이 표시될 것입니다.  
![Organizations API 직접 호출 세부 정보를 보여주는 샘플 CloudWatch Events 로그](http://docs.aws.amazon.com/ko_kr/organizations/latest/userguide/images/tutorial-sample-CWE-log.png)

1. 항목의 가운데 행을 선택하여 수신한 이벤트의 전체 JSON 텍스트를 확인합니다. 출력의 `requestParameters` 및 `responseElements` 섹션에서 API 요청의 세부 정보를 모두 볼 수 있습니다.

   ```
   2017-03-09T22:45:05.101Z 0999eb20-051a-11e7-a426-cddb46425f16 Received event:
   {
       "version": "0",
       "id": "123456-EXAMPLE-GUID-123456",
       "detail-type": "AWS API Call via CloudTrail",
       "source": "aws.organizations",
       "account": "123456789012",
       "time": "2017-03-09T22:44:26Z",
       "region": "us-east-1",
       "resources": [],
       "detail": {
           "eventVersion": "1.04",
           "userIdentity": {
               ...
           },
           "eventTime": "2017-03-09T22:44:26Z",
           "eventSource": "organizations.amazonaws.com",
           "eventName": "CreateOrganizationalUnit",
           "awsRegion": "us-east-1",
           "sourceIPAddress": "192.168.0.1",
           "userAgent": "AWS Organizations Console, aws-internal/3",
           "requestParameters": {
               "parentId": "r-exampleRootId",
               "name": "TestCWEOU"
           },
           "responseElements": {
               "organizationalUnit": {
                   "name": "TestCWEOU",
                   "id": "ou-exampleRootId-exampleOUId",
                   "arn": "arn:aws:organizations::1234567789012:ou/o-exampleOrgId/ou-exampleRootId-exampeOUId",
                   "path": "o-exampleOrgId/r-exampleRootId/ou-exampleRootId-exampleOUId/"
               }
           },
           "requestID": "123456-EXAMPLE-GUID-123456",
           "eventID": "123456-EXAMPLE-GUID-123456",
           "eventType": "AwsApiCall"
       }
   }
   ```

1. 이메일 계정에서 **OrgsCWEvnt**(Amazon SNS 주제의 표시 이름)에서 보낸 메시지를 확인합니다. 이메일 본문에는 이전 단계에서 표시된 로그 항목과 동일한 JSON 텍스트 출력이 들어 있습니다.

## 정리: 더 이상 필요하지 않은 리소스 제거
<a name="clean-up-resources"></a>

요금이 발생하지 않도록 하려면 유지하지 않으려는이 자습서의 일부로 생성한 모든 AWS 리소스를 삭제해야 합니다.

**AWS 환경을 정리하려면**

1. [CloudTrail 콘솔](https://console.aws.amazon.com/cloudtrail/)을 사용하여 1단계에서 생성한 **My-Test-Trail**이라는 추적을 삭제합니다.

1. 1단계에서 Amazon S3 버킷을 만는 경우 [Amazon S3 콘솔](https://console.aws.amazon.com/s3/)을 사용하여 버킷을 삭제합니다.

1. [Lambda 콘솔](https://console.aws.amazon.com/lambda/)을 사용하여 2단계에서 생성한 **LogOrganizationEvents**라는 함수를 삭제합니다.

1. [Amazon SNS 콘솔](https://console.aws.amazon.com/sns/)을 사용해 3단계에서 생성한 **OrganizationsCloudWatchTopic**이라는 Amazon SNS 주제를 삭제합니다.

1. [CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch/)을 사용하여 4단계에서 생성한 **OrgsMonitorRule**이라는 EventBridge 규칙을 삭제합니다.

1. 마지막으로 [Organizations 콘솔](https://console.aws.amazon.com/organizations/)을 사용하여 5단계에서 생성한 **TestCWEOU**라는 OU를 삭제합니다.

그러면 다된 것입니다. 이 자습서에서는 조직에 대한 변경 사항을 모니터링하도록 EventBridge를 구성했습니다. 또한 사용자가 특정 AWS Organizations 작업을 호출하면 트리거되는 규칙을 구성했습니다. 이 규칙은 이벤트를 기록하고 해당 이벤트에 대한 세부 정보가 들어 있는 이메일을 전송하는 Lambda 함수를 실행했습니다.