3.2.3.5. Configuring Auto Scaling Solutions (DynamoDB, EC2 Auto Scaling groups, RDS storage auto scaling, ECS capacity provider)
3.2.3.5. Event Processing: S3 Events & EventBridge Notifications
S3 events and EventBridge form the backbone of automated responses to data and infrastructure changes.
S3 Event Notifications trigger on object-level actions:
s3:ObjectCreated:*— new object uploadeds3:ObjectRemoved:*— object deleteds3:ObjectRestore:Completed— Glacier restore finished
Destinations: Lambda, SQS, SNS, or EventBridge (recommended for complex routing). A single notification rule can filter on a key prefix and suffix together (e.g., uploads/ + .csv). EventBridge delivery is off by default: enable it per bucket (EventBridgeConfiguration, below). It runs alongside any direct Lambda/SQS/SNS notifications rather than replacing them. Caution: put-bucket-notification-configuration replaces the bucket's entire notification configuration, so include any existing Lambda/SQS/SNS entries in the same call (the example below assumes a bucket with none).
# S3 → EventBridge → multiple targets
aws s3api put-bucket-notification-configuration \
--bucket my-bucket \
--notification-configuration '{"EventBridgeConfiguration": {}}'
EventBridge rule for S3 events:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {"name": ["data-uploads"]},
"object": {"key": [{"prefix": "incoming/"}]}
}
}
EventBridge advantages over direct S3 notifications:
- One event can trigger multiple targets (Lambda + SQS + Step Functions)
- Content-based filtering on object key patterns, size, metadata
- Archive and replay events for debugging
- Cross-account event delivery
Common event-driven workflows:
- Upload CSV → Lambda parses and loads to DynamoDB
- Upload image → Lambda creates thumbnails → stores in another bucket
- CloudTrail log delivered to S3 → Lambda analyzes for security events
- Config change → EventBridge → SSM Automation remediation
Exam Trap: S3 event notifications have a key limitation: you can only configure one notification per prefix + event type combination. Two Lambda triggers both matching s3:ObjectCreated:* on prefix uploads/ will conflict. Use EventBridge instead — it receives all S3 events and you can create unlimited rules with different filters.