Amazon EventBridge가 뭐야? EventBridge를 사용해 봤습니다

2021.12.04

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번 안건에서 처음으로 Amazon EventBridge 사용해 봤기 때문에 정리해보고자 합니다. 이번 블로그에서는 EventBridge가 무엇인지, 전체적으로 Amazon EventBridge가 어떤 흐름으로 이벤트를 발생 시키는지, 실제 EventBridge를 어떻게 사용하는지에 대해서 간략하게 정리해 봤습니다.

EventBridge란?

Amazon EventBridge는 다양한 소스의 데이터와 애플리케이션을 연결하는 데 사용할 수 있는 서버리스 이벤트 버스 서비스

공식문서에 의하면 다양한 소스 데이터와 앱을 연결하는 데 사용할 수 있는 서버리스 서비스라고 나와있습니다.

어떤 이벤트를 감지하는지 EventBridge에서 서비스 공급자를 살펴보면 모든 이벤트, AWS, 서비스 파트너 3가지를 확인할 수 있습니다.

  • 모든 이벤트의 경우 현재 계정에서 발생하는 모든 이벤트를 감지합니다.

  • AWS의 경우 AWS 서비스에 대한 이벤트를 감지합니다. 예를 들어 EC2 인스턴스가 생성 되었거나, EC2 인스턴스가 삭제 되었다면 이러한 이벤트를 감지해서 특정 이벤트를 발생시킵니다.
  • 서비스 파트너의 경우 SaaS 앱의 데이터를 사용하여 고객 지원, 비즈니스 운영 등을 위한 워크 플로우를 작동시킬 수 있습니다. 파트너 이벤트의 경우 아래 링크를 참고해 주세요
  • Amazon EventBridge를 사용하여 SaaS 파트너로부터 이벤트 수신

EventBridge 흐름

Amazon EventBridge가 이벤트를 사용하여 애플리케이션을 연결하는 방법

(Amazon EventBridge 공식문서의 이미지를 참고)

EventBridge는 이벤트를 수신 하고, 이벤트를 대상으로 라우팅 하는 규칙을 적용합니다. 이 규칙은 이벤트 패턴 이라고 하는 이벤트 구조 혹은 일정에 따라 이벤트를 대상에 일치 시킵니다. 예를 들어 조금전에 설명 했던것 처럼 EC2 인스턴스가 생성 되었거나, EC2 인스턴스가 삭제 되었다면 이러한 이벤트를 감지해서 특정 이벤트를 발생시킵니다.

그리고 EventBridge에 오는 모든 이벤트는 이벤트 버스와 연결됩니다. 여기서 이벤트 버스는 이벤트를 수신하는 파이프 라인 이라고 보시면 될 것 같습니다. 이벤트 버스와 연결된 규칙은 이벤트가 도착할 때 이벤트를 평가하고, 이벤트가 규칙과 일치하는지 확인합니다.

  • 칙은 단일 이벤트 버스에 연결되므로 해당 이벤트 버스의 이벤트에만 적용할 수 있습니다.

EventBridge 사용

이제 EventBridge를 사용해 보도록 하겠습니다.

먼저 EventBridge에서 이벤트 버스로 들어옵니다.

이벤트 버스로 들어오면 default라는 이벤트 버스가 생성되어 있습니다. 클릭해 보면

리소스 정책 기반이 나옵니다. 리소스 기반 정책은 리소스 기반 정책을 연결 하여 다른 계정에 권한을 부여할 수 있습니다. 그러면 다른 계정이 현재 계정의 이벤트 버스에 이벤트를 보낼 수 있습니다. 리소스 기반 정책은 다음 링크를 참고해 주세요.

이제 규칙 탭을 클릭합니다. defalult 이벤트 버스를 선택하고 규칙 생성 버튼을 클릭합니다.

간단하게 EC2 인스턴스에서 어떠한 이벤트가 발생하면 미리 생성된 EC2 인스턴스 하나를 중지 시키는 규칙을 만들어 보도록 하겠습니다.

서비스 공급자는 AWS를 선택하고 서비스 이름은 EC2를 선택, 이벤트 유형은 모든 이벤트를 선택합니다.

이벤트 패턴에 대해서는 오른쪽 편집 버튼을 클릭해서 사용자가 원하는대로 이벤트 패턴을 만들수도 있습니다.

대상은 EC2 StopInstances API 호출을 선택하고 중지 시킬 인스턴스 ID를 입력하고 규칙 생성을 끝마칩니다.

현재 2대의 EC2 인스턴스가 생성되어 있습니다. 여기서 EC2-1의 인스턴스를 중지 시키는 이벤트를 발생시켜 보겠습니다.

EC2 인스턴스를 하나 생성하면 곧 바로 이벤트가 발생해서 EC2-1을 중지시키는 것을 볼수 있습니다.

이벤트 발생 내역은 CloudTrail에서 확인할 수 있습니다.

참고