D2-05. Amazon EventBridge

D2-05. Amazon EventBridge

in

1. EventBridge

Amazon EventBridge는 AWS 환경의 다양한 소스에서 발생하는 이벤트를 수신하여, 정의된 규칙에 따라 대상으로 라우팅하는 서버리스 이벤트 버스(Event Bus) 서비스입니다.

1-1. 동작 방식

  1. Source
    • AWS 서비스: EC2 인스턴스 상태 변경, S3 객체 업로드, Trusted Advisor 알림 등
    • CloudTrail (API): 모든 AWS API 호출을 감지
    • 스케줄: Cron 표현식
    • Partner: SaaS 파트너 (Partner Event Bus 사용)
    • Custom: 사용자의 애플리케이션 (Custom Event Bus 사용)
  2. Rule: 수신된 이벤트를 필터링하는 조건입니다.
  3. Target: 규칙과 일치하는 이벤트가 전송될 목적지입니다. Lambda 함수, SQS 대기열 등 다양한 AWS 서비스와 통합됩니다.

1-2. 이벤트 버스 유형

유형 설명
기본 이벤트 버스 (Default) AWS 계정 생성 시 자동으로 제공됩니다.모든 AWS 서비스가 생성하는 이벤트는 이 버스로 전송됩니다.
Partner Event Bus 타사 SaaS 파트너 애플리케이션의 이벤트를 수신하기 위한 버스입니다.
Custom Event Bus 사용자의 자체 애플리케이션이 이벤트를 발행(PutEvents) 하기 위해 직접 생성하는 버스입니다.

1-3. 주요 기능

기능 설명
Schema Registry 이벤트의 구조(Schema)를 저장하고 관리하는 중앙 리포지토리입니다. 이를 통해 개발자는 이벤트 구조를 미리 파악하고, 코드 바인딩을 생성하여 안정적으로 애플리케이션을 개발할 수 있습니다. 또한 Schema로 버전 관리가 가능합니다.
Archive and Replay 이벤트 버스로 들어온 이벤트를 아카이브에 저장하고, 필요할 때 다시 재사용(Replay) 할 수 있는 기능입니다. 디버깅이나 시스템 장애 복구 후 누락된 이벤트를 재처리하는 데 매우 유용합니다.
Resource-based Policies 이벤트 버스에 대한 접근 권한을 관리하는 정책입니다.이를 사용하여 다른 AWS 계정이나 리전에서 해당 이벤트 버스로 이벤트를 보낼 수 있도록 허용하거나 거부할 수 있어, 조직 전체의 이벤트를 중앙에서 관리하는 아키텍처 구현이 가능합니다.

1-4. 구문 예시

다른 AWS 계정의 리소스가 EventBridge 버스로 이벤트를 보낼 수 있도록 허용하는 리소스 기반 정책(Resource-based Policy) 예시입니다. 이 정책은 특정 AWS 계정(111122223333)이 중앙 이벤트 버스(central-event-bus)에 PutEvents 작업을 수행할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowAccountToSendEvents",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:root"
      },
      "Action": "events:PutEvents",
      "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/central-event-bus"
    }
  ]
}

  • Principal: 이벤트를 보낼 AWS 계정의 ARN을 지정합니다.
  • Action: 허용할 작업으로, 이벤트 발행을 의미하는 events:PutEvents를 지정합니다.
  • Resource: 정책이 적용될 중앙 이벤트 버스의 ARN을 명시합니다.