자습서: Amazon EventBridge를 사용하여 조직에 대한 중요 변경 사항 모니터링 - AWS Organizations

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

자습서: Amazon EventBridge를 사용하여 조직에 대한 중요 변경 사항 모니터링

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

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

1단계: 추적 및 이벤트 선택기 구성

AWS CloudTrail에서 추적(trail)이라는 로그를 생성합니다. 모든 API 호출을 캡처하도록 이를 구성합니다.

2단계: Lambda 함수 구성

S3 버킷에 이벤트에 대한 세부 정보를 기록하는 AWS Lambda 함수를 생성합니다.

3단계: 구독자에게 이메일을 전송하는 Amazon SNS 주제 생성

이메일을 구독자에게 보내는 Amazon SNS 주제를 생성한 후, 주제를 직접 구독합니다.

4단계: Amazon EventBridge 규칙 생성

Amazon EventBridge가 지정된 API 호출 세부 사항을 Lambda 함수 및 SNS 주제 구독자에게 전달하도록 하는 규칙을 생성합니다.

5단계: Amazon EventBridge 규칙 테스트

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

도움말

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

필요 조건

이 튜토리얼는 다음과 같이 가정합니다.

  • 사용자는 조직의 관리 계정의 IAM 사용자로 AWS Management Console에 로그인할 수 있습니다. IAM 사용자에게는 CloudTrail에 로그를, Lambda에 함수를, Amazon SNS에 주제를, 그리고 Amazon EventBridge에 규칙을 생성하고 구성할 수 있는 권한이 있어야 합니다. 권한 부여에 대한 자세한 내용은 IAM 사용 설명서액세스 관리, 또는 액세스를 구성하려는 서비스의 설명서를 참조하세요.

  • 1단계에서 구성한 CloudTrail 로그를 수신하려면 기존 Amazon Simple Storage Service(Amazon S3) 버킷에 대한 액세스 권한이 있거나 버킷을 생성할 수 있는 권한이 있어야 합니다.

중요

현재 AWS Organizations는 전역적으로 사용할 수 있긴 하지만 미국 동부(버지니아 북부) 리전에서만 호스팅됩니다. 이 자습서의 단계를 수행하려면 해당 리전을 사용하여 AWS Management Console을 구성해야 합니다.

1단계: 추적 및 이벤트 선택기 구성

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

추적을 생성하려면
  1. 조직의 관리 계정의 관리자로 AWS에 로그인한 다음, https://console.aws.amazon.com/cloudtrail/에서 CloudTrail 콘솔을 엽니다.

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

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

  4. 추적 생성을 선택합니다.

  5. 추적 이름My-Test-Trail을 입력합니다.

  6. 다음 옵션 중 하나를 수행하여 CloudTrail이 해당 로그를 제공하는 위치를 지정합니다.

    • 버킷을 생성해야 하는 경우 Create new S3 bucket(새 S3 버킷 생성)을 선택한 다음 Trail log bucket and folder(추적 로그 버킷 및 폴더)에 새 버킷의 이름을 입력합니다.

      참고

      S3 버킷 이름은 전역적으로 고유해야 합니다.

    • 버킷이 이미 있는 경우 Use existing S3 bucket(기존 S3 버킷 사용)을 선택한 다음 S3 bucket(S3 버킷) 목록에서 버킷 이름을 선택합니다.

  7. 다음을 선택합니다.

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

  9. 다음을 선택합니다.

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

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

2단계: Lambda 함수 구성

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

Amazon EventBridge 이벤트를 기록하는 Lambda 함수를 만들려면
  1. AWS Lambda에서 https://console.aws.amazon.com/lambda/ 콘솔을 엽니다.

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

  3. 함수 생성 페이지에서 Use a blueprint(블루프린트 사용)을 선택합니다.

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

  5. 구성을 선택합니다.

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

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

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

  7. 다음 예와 같이 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 문자열 앞에 기록합니다.

  8. 함수 생성(Create function)을 선택합니다.

3단계: 구독자에게 이메일을 전송하는 Amazon SNS 주제 생성

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

Amazon SNS 주제를 만들어 구독자에게 이메일을 전송하려면
  1. https://console.aws.amazon.com/sns/v3/에서 Amazon SNS 콘솔을 엽니다.

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

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

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

    2. 표시 이름OrgsCWEvnt를 입력합니다.

    3. 주제 생성을 선택합니다.

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

  5. 구독 생성을 선택합니다.

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

    2. Endpoint(엔드포인트)에 이메일 주소를 입력합니다.

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

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

4단계: Amazon EventBridge 규칙 생성

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

EventBridge 규칙을 생성하려면
  1. https://console.aws.amazon.com/events/에서 Amazon EventBridge 콘솔을 엽니다.

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

  3. 규칙을 만드는 방법에 대한 자세한 내용은 Amazon EventBridge 사용 설명서에서 Amazon EventBridge 시작하기를 참조하세요.

5단계: Amazon EventBridge 규칙 테스트

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

AWS Management Console
OU를 만들려면
  1. AWS Organizations 콘솔의 AWS 계정 페이지를 엽니다.

  2. Root OU 확인란 을 선택하고, 작업(Actions)을 선택한 다음 조직 단위(Organizational unit)에서 새로 만들기(Create new)를 선택합니다.

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

EventBridge 로그 항목을 보려면
  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

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

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

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

  5. 로그를 확인합니다. 다음과 같은 행이 표시될 것입니다.

  6. 항목의 가운데 행을 선택하여 수신한 이벤트의 전체 JSON 텍스트를 확인합니다. 출력의 requestParametersresponseElements 섹션에서 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" } }, "requestID": "123456-EXAMPLE-GUID-123456", "eventID": "123456-EXAMPLE-GUID-123456", "eventType": "AwsApiCall" } }
  7. 이메일 계정에서 OrgsCWEvnt(Amazon SNS 주제의 표시 이름)에서 보낸 메시지를 확인합니다. 이메일 본문에는 이전 단계에서 표시된 로그 항목과 동일한 JSON 텍스트 출력이 들어 있습니다.

정리: 더 이상 필요하지 않은 리소스 제거

요금이 부과되지 않게 하려면, 이 자습서 과정에서 생성했지만 유지하지 않으려는 AWS 리소스를 삭제해야 합니다.

AWS 환경을 정리하려면
  1. CloudTrail 콘솔을 사용하여 1단계에서 생성한 My-Test-Trail이라는 추적을 삭제합니다.

  2. 1단계에서 Amazon S3 버킷을 만는 경우 Amazon S3 콘솔을 사용하여 버킷을 삭제합니다.

  3. Lambda 콘솔을 사용하여 2단계에서 생성한 LogOrganizationEvents라는 함수를 삭제합니다.

  4. Amazon SNS 콘솔을 사용해 3단계에서 생성한 OrganizationsCloudWatchTopic이라는 Amazon SNS 주제를 삭제합니다.

  5. CloudWatch 콘솔을 사용하여 4단계에서 생성한 OrgsMonitorRule이라는 EventBridge 규칙을 삭제합니다.

  6. 마지막으로 Organizations 콘솔을 사용하여 5단계에서 생성한 TestCWEOU라는 OU를 삭제합니다.

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