본문으로 건너뛰기
김신건의 로그

[AWS] EventBridge: 이벤트 버스, 스케줄러, partner sources

· 수정 · 📖 약 1분 · 283자/단어 #aws #eventbridge #events #cloud #serverless
EventBridge, CloudWatch Events, EventBridge Scheduler, Event Pattern, Schema Registry, Partner Source

정의

EventBridge = AWS 의 통합 event bus. 옛 CloudWatch Events 의 후계. AWS service 이벤트 + custom 이벤트 + SaaS 이벤트 를 한 곳에서.

Event Bus 종류

종류의미
DefaultAWS service 이벤트 (EC2, S3, CodePipeline 등)
Custom자체 이벤트
PartnerSaaS (Datadog, MongoDB, Auth0, …)

Event 형식

{
  "version": "0",
  "id": "...",
  "detail-type": "Order Created",
  "source": "myapp.orders",
  "account": "123",
  "time": "2026-06-25T12:00:00Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "order_id": "o_42",
    "user_id": "u_99",
    "total": 5000
  }
}

Rule + Target

flowchart LR
    Event[Event] --> Bus[Event Bus]
    Bus --> Rule1["Rule 1<br/>(pattern)"]
    Rule1 --> Target1[Lambda]
    Rule1 --> Target2[SQS]
    Bus --> Rule2["Rule 2<br/>(다른 pattern)"]
    Rule2 --> Target3[Step Functions]
{
  "source": ["myapp.orders"],
  "detail-type": ["Order Created"],
  "detail": {
    "total": [{ "numeric": [">=", 10000] }]
  }
}

Content-based filtering. 복잡한 매칭 가능 (prefix, suffix, anything-but, numeric, exists, …).

Target 종류

  • Lambda
  • SQS / SNS
  • Step Functions
  • ECS Task / EKS / Batch
  • Kinesis / Firehose
  • API Destination (외부 HTTP)
  • 다른 EventBridge bus / Event Bus in 다른 account

EventBridge Scheduler (2022+)

aws scheduler create-schedule \
  --name daily-report \
  --schedule-expression "cron(0 9 * * ? *)" \
  --schedule-expression-timezone "Asia/Seoul" \
  --target '{
    "Arn": "arn:lambda:...",
    "RoleArn": "arn:role:..."
  }' \
  --flexible-time-window '{ "Mode": "OFF" }'

CloudWatch Events Schedule 의 후계 + 더 정교. 수백만 schedule, cron / rate / one-time.

Schema Registry

Schemas:
  - myapp.orders.OrderCreated@v2
    - 필드: order_id (string), total (number), ...
  • 이벤트 schema 중앙 보관.
  • 다국어 코드 생성 (Java, Python, TS).
  • contract 변경 추적.

Pipes (2022+)

flowchart LR
    Source["Source<br/>(SQS, Kinesis, DDB Stream, ...)"] --> Filter[Filter]
    Filter --> Enrich["Enrich (Lambda)"]
    Enrich --> Target["Target<br/>(Lambda, SQS, SF, ...)"]

Pipe = source → filter → enrich → target 의 one-stop ETL.

EventBridge vs SNS

자세한 건 aws-sns.

요약:

  • SNS = 대량 fan-out (12.5M subscriber)
  • EventBridge = 복잡 라우팅 + filtering + SaaS 통합

흔한 함정

WARNING

  1. Rule pattern 의 잘못된 JSON = silently no match. CloudWatch 로 DeliveryFailure 모니터링.
  2. Cross-account 이벤트 = source bus 의 permission policy 와 target bus 의 PutEvents 권한.
  3. Schema 변경 = registry 의 versioning 활용. consumer 영향 평가.
  4. Target 의 retry 한도 = 24시간 retry. DLQ 필수.

관련 위키

이 글의 용어 (5개)
[AWS] Lambda: 서버리스 함수, 트리거, 동시성cloud
정의 AWS Lambda = 서버리스 함수 실행. 이벤트 트리거 → 함수 실행 → 결과 / 비동기 처리. 서버 관리 0. 트리거 종류 | 트리거 | 모델 | |---|---| |…
[AWS] SNS: pub-sub fan-outcloud
정의 SNS (Simple Notification Service) = pub-sub fan-out. 한 message → 여러 subscriber 에 동시 배포. 구조 Subsc…
[AWS] SQS: managed queue, FIFO, DLQcloud
정의 SQS = AWS 의 완전 관리형 메시지 큐. infinite scale, no provisioning, pay-per-request. Standard vs FIFO | |…
[AWS] Step Functions: 워크플로 오케스트레이션cloud
정의 Step Functions = 서버리스 워크플로 오케스트레이션. Amazon States Language (ASL, JSON) 으로 상태 기계 정의. ASL 예시 시각화 자…
[Pattern] Outbox Pattern: DB + 메시지의 원자성distributed-systems
정의 Outbox Pattern = DB 변경 + 메시지 발행 의 원자성 보장. 이중 쓰기 (dual write) 문제 의 표준 해결. 문제: Dual Write | 시나리오 |…

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기