0Pricing
Cloud & IT Cert Prep · 강의

EventBridge: 이벤트 버스 및 규칙

사용자 지정 EventBridge 버스에 이벤트를 게시하고, 이벤트 패턴 규칙을 작성해 이벤트를 필터링하고 Lambda, SQS 또는 Step Functions 대상으로 라우팅합니다.

EventBridge: 이벤트 버스 및 규칙은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

Amazon EventBridge란 무엇인가요?

Amazon EventBridge(이전 명칭: CloudWatch Events)는 AWS 서비스, 자체 애플리케이션, SaaS 제공업체의 이벤트를 사용하여 애플리케이션을 쉽게 연결하는 서버리스 이벤트 버스입니다. 이벤트는 JSON 객체이며, EventBridge는 이벤트 패턴 규칙에 따라 하나 이상의 대상으로 라우팅합니다. 지점 간 방식인 SQS와 달리 EventBridge는 게시/구독 라우팅 계층이므로 하나의 이벤트를 여러 대상에 동시에 분배할 수 있습니다.

이벤트 버스: Default, Custom, Partner

EventBridge에는 세 가지 유형의 이벤트 버스가 있습니다. Default 버스는 AWS 서비스의 이벤트(EC2 상태 변경, S3 이벤트, CloudTrail API 호출 등)를 수신합니다. Custom 버스는 자체 애플리케이션 이벤트를 위해 생성하는 버스로, 애플리케이션 이벤트와 AWS 서비스 이벤트를 서로 격리합니다. Partner 버스는 사전 구축된 통합을 통해 SaaS 제공업체(Zendesk, Datadog, GitHub, Shopify)에서 직접 이벤트를 수신하므로 폴링 Lambda가 필요하지 않습니다.

# Create a custom event bus for your application
aws events create-event-bus --name my-app-bus

# Put a custom event onto the bus
aws events put-events --entries '[{
  "Source": "com.myapp.orders",
  "DetailType": "OrderPlaced",
  "Detail": "{\"orderId\": \"ORD-123\", \"total\": 99.99}",
  "EventBusName": "my-app-bus"
}]'

이벤트 패턴 규칙

이벤트 패턴 규칙은 이벤트 필드(source, detail-type, account, region 또는 detail 객체 내부의 필드)의 조합을 필터링하는 JSON 패턴을 사용하여 일치시킬 이벤트를 정의합니다. EventBridge는 버스의 모든 규칙을 대상으로 모든 이벤트를 평가합니다. 일치하는 이벤트는 규칙에 구성된 대상으로 전달됩니다. 규칙 수준에서는 OR로 처리되고 패턴 객체 내부에서는 AND로 처리됩니다.

# Create a rule that matches EC2 instance state changes to 'stopped'
aws events put-rule \
  --name ec2-stopped-alert \
  --event-bus-name default \
  --event-pattern '{
    "source": ["aws.ec2"],
    "detail-type": ["EC2 Instance State-change Notification"],
    "detail": {
      "state": ["stopped"]
    }
  }' \
  --state ENABLED

대상 구성

EventBridge는 일치하는 이벤트를 Lambda 함수, SQS 대기열, SNS 주제, Step Functions 상태 머신, Kinesis Data Streams, API Gateway 엔드포인트, ECS 작업 등 20가지가 넘는 대상 유형으로 라우팅할 수 있으며, 계정 간 라우팅을 위해 다른 EventBridge 버스로도 라우팅할 수 있습니다. 각 규칙에는 최대 5개의 대상을 지정할 수 있습니다. EventBridge는 대상을 비동기적으로 호출하며, 실패하면 지수 백오프를 사용하여 재시도합니다.

# Add an SNS topic and Lambda function as targets for the rule
aws events put-targets \
  --rule ec2-stopped-alert \
  --event-bus-name default \
  --targets '[{
    "Id": "notify-ops",
    "Arn": "arn:aws:sns:us-east-1:123456789012:ops-alerts"
  }, {
    "Id": "auto-remediate",
    "Arn": "arn:aws:lambda:us-east-1:123456789012:function:RestartEC2"
  }]'

입력 변환

기본적으로 EventBridge는 전체 이벤트 JSON을 대상에 전달합니다. 입력 변환을 사용하면 전달 전에 이벤트의 형태를 변경할 수 있습니다. 특정 필드를 추출하거나, 새 JSON 객체를 구성하거나, 사용자 지정 문자열을 만들 수 있습니다. 전체 EventBridge 이벤트 봉투가 아니라 특정 페이로드 형태를 요구하는 Lambda 함수나 API 엔드포인트를 사용할 때 유용하며, 단순히 데이터를 변환하기 위한 전달용 Lambda를 별도로 만들 필요가 없습니다.

# Input transformer: extract orderId and total from detail
# InputPathsMap extracts values by JSON path
{
  'InputPathsMap': {
    'orderId': '$.detail.orderId',
    'total': '$.detail.total'
  },
  'InputTemplate': '{
    "message": "New order <orderId> for $<total>",
    "channel": "ops"
  }'
}

예약된 규칙(Cron/Rate)

EventBridge 규칙은 이벤트를 일치시키는 대신 일정에 따라 실행되도록 구성할 수도 있습니다. 고정 간격으로 트리거하려면 rate 표현식(예: rate(5 minutes))을 사용하고, 달력 기반으로 예약하려면 cron 표현식을 사용합니다. 예약된 규칙은 배치 정리 작업을 위한 Lambda 함수 트리거, 주기적인 보고서 전송, 야간 DMS 작업 실행 등에 적합하며, EC2 기반 cron 작업을 대체할 수 있습니다.

# Create a scheduled rule that fires every day at midnight UTC
aws events put-rule \
  --name nightly-cleanup \
  --schedule-expression 'cron(0 0 * * ? *)' \
  --state ENABLED

aws events put-targets \
  --rule nightly-cleanup \
  --targets '[{
    "Id": "cleanup-lambda",
    "Arn": "arn:aws:lambda:us-east-1:123456789012:function:NightlyCleanup"
  }]'

이벤트 보관 및 재생

EventBridge는 버스의 모든 이벤트 또는 필터링된 일부 이벤트를 보관하여 이벤트 아카이브에 저장하고, 구성 가능한 기간 동안 유지할 수 있습니다. 그런 다음 언제든지 보관된 이벤트를 버스로 재생할 수 있습니다. 이를 통해 새 Lambda 버전을 테스트하기 위해 이벤트를 다시 실행하거나, 대상이 이벤트를 놓친 버그에서 복구하거나, 과거 이벤트로 새 서비스를 보완할 수 있습니다. 이는 다른 게시/구독 시스템과 달리 EventBridge만의 강력한 운영 안전망입니다.

# Create an event archive for the custom bus
aws events create-archive \
  --archive-name my-app-archive \
  --event-source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
  --retention-days 30

# Replay archived events from a specific time window
aws events start-replay \
  --replay-name replay-missed-orders \
  --event-source-arn arn:aws:events:us-east-1:123456789012:archive/my-app-archive \
  --event-start-time 2024-01-10T00:00:00Z \
  --event-end-time 2024-01-10T06:00:00Z \
  --destination '{"Arn": "arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus"}'

계정 간 및 리전 간 라우팅

EventBridge는 다른 계정의 대상 버스에 리소스 기반 정책을 생성하여 계정 간 이벤트 라우팅을 지원합니다. 이 정책은 소스 계정이 이벤트를 전송하도록 허용합니다. 이를 통해 중앙 집중식 모니터링 계정이 모든 워크로드 계정의 이벤트를 수신하거나, 플랫폼 팀이 이벤트를 소비자 팀의 버스로 라우팅하는 공유 서비스 버스 아키텍처를 구현할 수 있습니다. 리전 간 라우팅도 명시적인 리전 간 이벤트 버스 대상을 사용하여 유사하게 작동합니다.

# Allow a source account (111111111111) to send events to this bus
aws events put-permission \
  --event-bus-name my-central-bus \
  --action events:PutEvents \
  --principal 111111111111 \
  --statement-id allow-source-account

EventBridge Pipes

EventBridge Pipes는 소스(SQS, Kinesis, DynamoDB Streams, Kafka)와 대상 사이에 선택적 필터링 및 보강 기능을 제공하는 지점 간 통합을 생성합니다. 이 중간 처리는 Lambda, Step Functions 또는 API Gateway를 통해 수행할 수 있습니다. Pipes는 폴링 Lambda 소비자를 직접 작성하는 것보다 간단하며, 폴링, 일괄 처리, 필터링, 라우팅을 자동으로 처리합니다. 전체 게시/구독 버스 없이 소스와 대상을 직접 연결해야 할 때 Pipes를 사용하십시오.

# Create an EventBridge Pipe from SQS to Lambda
aws pipes create-pipe \
  --name sqs-to-processor \
  --source arn:aws:sqs:us-east-1:123456789012:incoming-orders \
  --target arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder \
  --role-arn arn:aws:iam::123456789012:role/PipeRole \
  --source-parameters '{
    "SqsQueueParameters": {"BatchSize": 10}
  }' \
  --filter-criteria '{
    "Filters": [{"Pattern": "{\"body\": {\"orderType\": [\"PRIORITY\"]}}"}]
  }'

EventBridge, SNS, SQS 비교

이 세 서비스는 일부 기능이 겹치지만 용도는 서로 다릅니다. SNS: 구독자(이메일, HTTP, SQS, Lambda)에게 푸시 방식으로 분배하며 필터링 없는 단순한 게시/구독에 적합합니다. SQS: 소비자가 가져가는 방식으로 지점 간 결합을 분리하는 내구성 있는 메시지 대기열입니다. EventBridge: 스키마 레지스트리, 보관/재생, SaaS 파트너, 계정 간 전달을 제공하는 콘텐츠 기반 라우팅 버스로, 여러 서비스에 걸친 복잡한 이벤트 라우팅에 적합합니다. 단순한 분배가 아니라 정교한 라우팅 규칙이 필요할 때 EventBridge를 사용하십시오.

EventBridge 스키마 레지스트리

EventBridge 스키마 레지스트리는 이벤트 버스를 통해 흐르는 이벤트의 구조를 자동으로 감지하고 분류합니다. 스키마를 OpenAPI 3.0 형식으로 저장하므로 개발자는 사용 가능한 이벤트를 확인하고, 이벤트를 형식이 지정된 객체로 역직렬화하는 코드 바인딩(Java, Python, TypeScript)을 생성할 수 있습니다. 이를 통해 수동 JSON 파싱 코드가 필요하지 않으며 이벤트 기반 서비스 전반에서 형식 안전성을 보장할 수 있습니다. 자체 애플리케이션에서 생성하는 이벤트의 사용자 지정 이벤트 스키마를 수동으로 등록할 수도 있습니다.

# Enable schema discovery on a custom event bus
aws schemas create-discoverer \
  --source-arn arn:aws:events:us-east-1:123456789012:event-bus/my-app-bus \
  --description 'Auto-discover schemas from app bus'

# List discovered schemas
aws schemas list-schemas \
  --registry-name discovered-schemas

빠른 확인

이 레슨에서 다룬 AWS Solutions Architect(SAA-C03) 개념을 얼마나 이해했는지 테스트해 보십시오.

레슨 요약

이 레슨에서는 다음을 배웠습니다. EventBridge는 콘텐츠 기반 패턴 규칙을 사용하여 이벤트를 여러 대상에 동시에 라우팅합니다. 보관 및 재생을 사용하면 코드를 변경하지 않고도 과거 이벤트를 보존하고 다시 처리할 수 있습니다. 또한 EventBridge Pipes는 스트리밍 소스에서 대상으로 연결되는 관리형 파이프라인을 제공합니다. 다음으로 여러 단계의 서버리스 워크플로를 오케스트레이션하는 Step Functions를 살펴보겠습니다.

자주 묻는 질문

“EventBridge: 이벤트 버스 및 규칙” 강의는 무료인가요?

네 — “EventBridge: 이벤트 버스 및 규칙” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“EventBridge: 이벤트 버스 및 규칙”에서 뭘 배우나요?

사용자 지정 EventBridge 버스에 이벤트를 게시하고, 이벤트 패턴 규칙을 작성해 이벤트를 필터링하고 Lambda, SQS 또는 Step Functions 대상으로 라우팅합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“EventBridge: 이벤트 버스 및 규칙” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. EventBridge: 이벤트 버스 및 규칙
  2. Step Functions: 서버리스 워크플로 오케스트레이션
  3. 실시간 이벤트 처리를 위한 Kinesis Data Streams
  4. 안무 방식과 오케스트레이션 패턴 비교
← Cloud & IT Cert Prep(으)로 돌아가기