Eventbridge
/SKILLAWS EventBridge serverless event bus for event-driven architectures. Use when creating rules, configuring event patterns, setting up scheduled events, integrating with SaaS, or building cross-account
--- name: eventbridge description: AWS EventBridge, a serverless event bus for event-driven architectures. Use it when creating rules, configuring event patterns, setting up scheduled events, integrating with SaaS, or building cross-account event routing. lastupdated : "2026-01-07" docsource :https://docs.aws.amazon.com/eventbridge/latest/userguide/ --- # AWS EventBridge Amazon EventBridge is a serverless event bus that connects applications using events. Route events from AWS services, custom applications, and SaaS partners. ## Table of Contents - [Core Concepts](#core-concepts) - [Common Patterns](#common-patterns) - [CLI Reference](#cli-reference) - [Best Practices](#best-practices) - [Troubleshooting](#troubleshooting) - [References](#references) ## Core Concepts ### Event Bus A channel that receives events. Types: - Default: Receives AWS service events - Custom: Your application events - Partner: SaaS application events ### Rules Match incoming events and route them to targets. Each rule can have up to 5 targets. ### Event Patterns JSON patterns that define which events match a rule. ### Targets AWS services that receive matched events (Lambda, SQS, SNS, Step Functions, etc.). ### Scheduler Schedule one-time or recurring events to invoke targets. ## Common Patterns ### Create a Custom Event Bus and Rule AWSCLI : ``bash # Create custom event bus aws events create-event-bus --name my-app-events # Create rule aws events put-rule \ --name order-created-rule \ --event-bus-name my-app-events \ --event-pattern '{ "source": ["my-app.orders"], "detail-type": ["Order Created"] }' # Add Lambda target aws events put-targets \ --rule order-created-rule \ --event-bus-name my-app-events \ --targets '[{ "Id": "process-order", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder" }]' # Add Lambda permission aws lambda add-permission \ --function-name ProcessOrder \ --statement-id eventbridge-order-created \ --action lambda:InvokeFunction \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/my-app-events/order-created-rule ` **boto3:** `python import boto3 events = boto3.client('events') # Create event bus events.create_event_bus(Name='my-app-events') # Create rule events.put_rule( Name='order-created-rule', EventBusName='my-app-events', EventPattern=json.dumps({ 'source': ['my-app.orders'], 'detail-type': ['Order Created'] }), State='ENABLED' ) # Add target events.put_targets( Rule='order-created-rule', EventBusName='my-app-events', Targets=[{ 'Id': 'process-order', 'Arn': 'arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder' }] ) ` ### Publish Custom Events `python import boto3 import json events = boto3.client('events') events.put_events( Entries=[ { 'Source': 'my-app.orders', 'DetailType': 'Order Created', 'Detail': json.dumps({ 'order_id': '12345', 'customer_id': 'cust-789', 'total': 99.99, 'items': [ {'product_id': 'prod-1', 'quantity': 2} ] }), 'EventBusName': 'my-app-events' } ] ) ` ### Scheduled Events `bash # Run every 5 minutes aws events put-rule \ --name every-5-minutes \ --schedule-expression "rate(5 minutes)" # Run at specific times (cron) aws events put-rule \ --name daily-cleanup \ --schedule-expression "cron(0 2 * * ? *)" # Add target aws events put-targets \ --rule every-5-minutes \ --targets '[{ "Id": "cleanup-function", "Arn": "arn:aws:lambda:us-east-1:123456789012:function:Cleanup" }]' ` ### EventBridge Scheduler (One-Time and Flexible) ``bash # One-time schedule aws scheduler create-schedule \ --name send-reminder \ --schedule-expression "at(2024-12-25T09:00:00)" \ --target '{ "Arn": "arn:aws:lambda:us-east-1:123456789012:function:SendReminder", "RoleArn": "arn:aws:iam::123456789012:role/scheduler-role", "Input": "{\"message\": \"Merry Christmas!\"}" }' \ --flexibl