Co-Pilot / 辅助式
更新于 a month ago

eventbridge

Iitsmostafa
1.0k
itsmostafa/aws-agent-skills/skills/eventbridge
76
Agent 评分

💡 摘要

提供用于在无服务器事件驱动架构中创建事件总线、规则、目标并发布事件的 AWS EventBridge CLI 和 SDK 命令的技能。

🎯 适合人群

设计事件驱动系统的云架构师自动化 AWS 工作流的 DevOps 工程师实现微服务通信的后端开发人员设置监控和告警流水线的 SRE

🤖 AI 吐槽:这本质上是一份格式精美的 AWS 文档速查表,提供了便利性,但缺乏智能体特有的智能。

安全分析低风险

该技能支持执行 AWS CLI 命令和 boto3 调用,如果授予过宽的 IAM 权限,可能导致资源创建/删除、数据暴露或成本问题。缓解措施:智能体运行时必须强制执行严格、限定范围的 IAM 角色,并在执行前审计所有生成的命令。


name: eventbridge description: AWS 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 event routing. last_updated: "2026-01-07" doc_source: 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

Event Bus

Channel that receives events. Types:

  • Default: Receives AWS service events
  • Custom: Your application events
  • Partner: SaaS application events

Rules

Match incoming events and route 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 Custom Event Bus and Rule

AWS CLI:

# 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:

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

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

# 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)

# 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!\"}" }' \ --flexible-time-window '{"Mode": "OFF"}' # Recurring with flexible window aws scheduler create-schedule \ --name hourly-sync \ --schedule-expression "rate(1 hour)" \ --target '{ "Arn": "arn:aws:lambda:us-east-1:123456789012:function:SyncData", "RoleArn": "arn:aws:iam::123456789012:role/scheduler-role" }' \ --flexible-time-window '{"Mode": "FLEXIBLE", "MaximumWindowInMinutes": 15}'

AWS Service Events

# EC2 state changes aws events put-rule \ --name ec2-state-change \ --event-pattern '{ "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["stopped", "terminated"] } }' # S3 object created aws events put-rule \ --name s3-upload \ --event-pattern '{ "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { "bucket": {"name": ["my-bucket"]}, "object": {"key": [{"prefix": "uploads/"}]} } }'

CLI Reference

Event Buses

| Command | Description | |---------|-------------| | aws events create-event-bus | Create event bus | | aws events delete-event-bus | Delete event bus | | aws events list-event-buses | List event buses | | aws events describe-event-bus | Get event bus details |

Rules

| Command | Description | |---------|-------------| | aws events put-rule | Create or update rule | | aws events delete-rule | Delete rule | | aws events list-rules | List rules | | aws events describe-rule | Get rule details | | aws events enable-rule | Enable rule | | aws events disable-rule | Disable rule |

Targets

| Command | Description | |---------|-------------| | aws events put-targets | Add targets to rule | | aws events remove-targets | Remove targets | | aws events list-targets-by-rule | List rule targets |

Events

| Command | Description | |---------|-------------| | aws events put-events | Publish events |

Best Practices

Event Design

  • Use meaningful source namescompany.service.component
  • Use descriptive detail-typesOrder Created, User Signed Up
  • Include correlation IDs for tracing
  • Keep events small (< 256 KB)
  • Use versioning for event schemas
# Good event structure { 'Source': 'mycompany.orders.api', 'DetailType': 'Order Created', 'Detail': json.dumps({ 'version': '1.0', 'correlation_id': 'req-abc-123', 'timestamp': '2024-01-15T10:30:00Z', 'order_id': '12345', 'data': {...} }) }

Reliability

  • Use DLQs for failed deliveries
  • Implement idempotency in consumers
  • Monitor failed invocations
  • Use archive and replay for recovery

Security

  • Use resource policies to control access
  • Enable encryption with KMS
  • Use IAM roles for targets

Cost Optimization

  • Use specific event patterns to reduce matches
  • Batch events when publishing (up to 10 per call)
  • Archive selectively — not all events

Troubleshooting

Rule Not Triggering

Debug:

# Check rule status aws events describe-rule --name my-rule # Check targets aws events list-targets-by-rule --rule my-rule # Test event pattern aws events test-event-pattern \ --event-pattern '{"source": ["my-app"]}' \ --event '{"source": "my-app", "detail-type": "Test"}'

Common causes:

  • Rule disabled
  • Event pattern doesn't match
  • Target permissions missing

Lambda Not Invoked

Check Lambda permissions:

aws lambda get-policy --function-name MyFunction

Required permission:

{ "Principal": "events.amazonaws.com", "Action": "lambda:InvokeFunction", "Resource": "function-arn", "Condition": { "ArnLike": { "AWS:SourceArn": "rule-arn" } } }

Events Not Reaching Custom Bus

Check:

  • Publishing to correct bus name
  • Event format is valid JSON
  • Put events has proper permissions
# Test publish aws events put-events \ --entries '[{ "Source": "test", "DetailType": "Test Event", "Detail": "{}", "EventBusName": "my-app-events" }]'

Viewing Failed Events

# Enable CloudWatch metrics aws events put-rule \ --name my-rule \ --event-pattern '...' \ --state ENABLED # Check FailedInvocations metric aws cloudwatch get-metric-statistics \ --namespace AWS/Events \ --metric-name FailedInvocations \ --dimensions Name=RuleName,Value=my-rule \ --start-time $(date -d '1 hour ago' -u +%Y-%m-%dT%H:%M:%SZ) \ --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \ --period 300 \ --statistics Sum

References

五维分析
清晰度9/10
创新性4/10
实用性8/10
完整性9/10
可维护性8/10
优缺点分析

优点

  • 全面覆盖从基础到调度器的 EventBridge 操作
  • 为 CLI 和 boto3 (Python SDK) 提供了清晰的示例
  • 包含实用模式、故障排除和最佳实践

缺点

  • 过度关注可能并非智能体主要接口的 AWS CLI 语法
  • 缺乏更高级的抽象或简化的智能体友好封装
  • 没有技能本身的直接安装或设置说明

相关技能

pytorch

S
toolCode Lib / 代码库
92/ 100

“它是深度学习的瑞士军刀,但祝你好运能从47种安装方法里找到那个不会搞崩你系统的那一个。”

agno

S
toolCode Lib / 代码库
90/ 100

“它承诺成为智能体领域的Kubernetes,但得看开发者有没有耐心学习又一个编排层。”

nuxt-skills

S
toolCo-Pilot / 辅助式
90/ 100

“这本质上是一份组织良好的小抄,能把你的 AI 助手变成一只 Nuxt 框架的复读机。”

免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。

版权归原作者所有 itsmostafa.