AWS EventBridge는 AWS 서비스, SaaS 애플리케이션, 사용자 정의 애플리케이션에서 발생하는 이벤트를 수집하고 규칙에 따라 대상 서비스로 라우팅하는 서버리스 이벤트 버스 서비스입니다. 이벤트의 내용에 따라 어떤 대상에게 보낼지 결정하는 콘텐츠 기반 라우팅이 핵심 특징입니다. 과거 CloudWatch Events의 후속 서비스이며 기능이 크게 확장되었습니다.
Event Bus는 이벤트가 흐르는 채널입니다. EventBridge는 세 종류의 Event Bus를 제공합니다.
Default Event Bus는 AWS 서비스에서 자동으로 발행하는 이벤트를 수신합니다. EC2 인스턴스 상태 변경, CodePipeline 실행 결과, S3 오브젝트 변경 알림 등이 여기로 들어옵니다.
Custom Event Bus는 사용자가 직접 생성하는 버스입니다. 마이크로서비스 간의 내부 이벤트를 라우팅하는 데 사용합니다.
Partner Event Bus는 Zendesk, Datadog, Stripe 등 AWS 파트너 SaaS 서비스의 이벤트를 수신하는 버스입니다.
[EC2 상태 변경] [사용자 앱 이벤트] [SaaS Partner]
| | |
[Default Bus] [Custom Bus] [Partner Bus]
Rule은 Event Bus에 도착한 이벤트를 필터링하고 어떤 Target으로 보낼지 정의합니다. 이벤트 패턴 매칭 또는 스케줄(cron 표현식)을 기준으로 작동합니다.
// 이벤트 패턴 예시: EC2 인스턴스가 stopped 상태가 될 때
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"],
"detail": {
"state": ["stopped"]
}
}
Target은 Rule이 매칭되었을 때 이벤트를 전달받는 대상입니다. 하나의 Rule에 최대 5개의 Target을 지정할 수 있습니다.
주요 Target 목록은 다음과 같습니다.
| Target | 설명 |
|---|---|
| Lambda | 함수 직접 호출 |
| SQS | 큐에 메시지 전송 |
| SNS | 토픽에 메시지 발행 |
| Step Functions | 워크플로 실행 |
| ECS Task | 컨테이너 작업 실행 |
| API Gateway | HTTP 요청 전송 |
세 서비스는 모두 메시지·이벤트 전달에 사용되지만 목적이 다릅니다.
| 항목 | EventBridge | SNS | SQS |
|---|---|---|---|
| 이벤트 소스 | AWS 서비스, SaaS, 커스텀 | 커스텀 | 커스텀 |
| 라우팅 방식 | 콘텐츠 기반 패턴 매칭 | 토픽 구독 필터 | 없음(순서대로 처리) |
| 스케줄링 | 내장 (cron) | 없음 | 없음 |
| 보관 | 없음 | 없음 | 최대 14일 |
| 주요 용도 | AWS 서비스 간 연결, 이벤트 라우팅 | 브로드캐스트 알림 | 작업 큐 |
EventBridge의 가장 큰 강점은 AWS 서비스 이벤트를 별도 코드 없이 자동으로 수신할 수 있다는 점입니다. 예를 들어 CodePipeline이 실패하면 자동으로 Slack 알림을 보내거나, S3에 특정 파일이 업로드되면 Lambda를 실행하는 구성을 Rule 몇 개로 구현할 수 있습니다.
스케줄 기반 Rule을 활용하면 Lambda로 주기적인 배치 작업을 실행할 수 있습니다. 기존에는 CloudWatch Events로 처리하던 cron 작업을 EventBridge로 동일하게 구성할 수 있습니다.
[EventBridge Rule]
Schedule: cron(0 2 * * ? *) -- 매일 새벽 2시
|
v
[Lambda] -- 일일 정산 처리
이벤트 아카이브(Archive) 기능을 사용하면 이벤트를 일정 기간 보관했다가 재생(Replay)할 수 있어 장애 복구 시 유용하게 활용됩니다.