I want an Event Bridge rule to match on two different directories (prefixes) of the same S3 Bucket when a file is uploaded to any of the directories.
If I put two prefix objects under detail.object.key the rule only matches on the last one, as per the event pattern below:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": { "name": ["some-bucket"] },
"object": {
"key": [
{ "prefix": "some-prefix/" },
{ "prefix": "some-other-prefix/" }
]
}
}
}
The documentation is unclear about how to accomplish this.
I found a way to do it using Content-based filtering with $or matching.
https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns-content-based-filtering.html#eb-filtering-complex-example-or
Documentation is still unclear about the specific use case but after a couple of trials and errors I got it working by declaring the event pattern like this:
{
"source": ["aws.s3"],
"detail-type": ["Object Created"],
"detail": {
"bucket": {
"name": ["some-bucket"]
},
"$or": [
{
"object": {
"key": [{
"prefix": "some-prefix/"
}]
}
},
{
"object": {
"key": [{
"prefix": "some-other-prefix/"
}]
}
}
]
}
}
Hope it helps!