install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/eventbridge" ~/.claude/skills/comeonoliver-skillshub-eventbridge && rm -rf "$T"
manifest:
skills/TerminalSkills/skills/eventbridge/SKILL.mdsource content
Amazon EventBridge — Serverless Event Bus
You are an expert in Amazon EventBridge, the serverless event bus for building event-driven architectures. You help developers route events between AWS services, SaaS applications, and custom microservices using event rules, patterns, transformations, dead-letter queues, and scheduling — decoupling producers from consumers with content-based routing that scales automatically.
Core Capabilities
Event Publishing
import { EventBridgeClient, PutEventsCommand } from "@aws-sdk/client-eventbridge"; const eb = new EventBridgeClient({ region: "us-east-1" }); // Publish custom event await eb.send(new PutEventsCommand({ Entries: [{ Source: "myapp.orders", DetailType: "OrderCreated", Detail: JSON.stringify({ orderId: "ord-123", userId: "usr-456", total: 99.99, items: [{ sku: "WIDGET-A", qty: 2 }], region: "us-west", }), EventBusName: "my-app-bus", }], })); // Batch events await eb.send(new PutEventsCommand({ Entries: events.map(e => ({ Source: "myapp.inventory", DetailType: "StockUpdated", Detail: JSON.stringify(e), EventBusName: "my-app-bus", })), }));
Event Rules and Patterns
# SAM template Resources: OrderBus: Type: AWS::Events::EventBus Properties: Name: my-app-bus # Route high-value orders to special processing HighValueOrderRule: Type: AWS::Events::Rule Properties: EventBusName: !Ref OrderBus EventPattern: source: ["myapp.orders"] detail-type: ["OrderCreated"] detail: total: [{ "numeric": [">=", 1000] }] Targets: - Arn: !GetAtt HighValueProcessor.Arn Id: high-value-processor DeadLetterConfig: Arn: !GetAtt DLQueue.Arn # Route all order events to analytics AnalyticsRule: Type: AWS::Events::Rule Properties: EventBusName: !Ref OrderBus EventPattern: source: [{ "prefix": "myapp." }] Targets: - Arn: !GetAtt AnalyticsStream.Arn Id: analytics InputTransformer: InputPathsMap: orderId: "$.detail.orderId" total: "$.detail.total" time: "$.time" InputTemplate: '{"event_time": "<time>", "order_id": "<orderId>", "amount": <total>}' # Scheduled rule (cron) DailyReportRule: Type: AWS::Events::Rule Properties: ScheduleExpression: "cron(0 9 * * ? *)" Targets: - Arn: !GetAtt DailyReportFunction.Arn Id: daily-report
Lambda Consumer
// Handler for EventBridge events export async function handler(event: EventBridgeEvent) { const { source, "detail-type": detailType, detail } = event; switch (detailType) { case "OrderCreated": await sendConfirmationEmail(detail.userId, detail.orderId); await updateInventory(detail.items); break; case "OrderCancelled": await processRefund(detail.orderId); break; } }
Installation
npm install @aws-sdk/client-eventbridge
Best Practices
- Content-based routing — Use event patterns for routing; filter by source, detail-type, and detail fields
- Custom event bus — Create per-application buses; don't use the default bus for custom events
- Schema registry — Enable schema discovery; auto-generates schemas from events, provides code bindings
- Dead-letter queues — Configure DLQ on every rule target; catch events that fail delivery
- Input transformers — Transform event shape before delivery; targets receive only needed fields
- Cross-account — Use resource policies to send/receive events across AWS accounts; central event bus pattern
- Idempotent consumers — Events may be delivered more than once; design consumers to handle duplicates
- Archive and replay — Enable event archive for replay; useful for debugging, reprocessing, and recovery