首页 > 解决方案 > 使用 AWS 事件模式进行内容过滤 | 如何结合 'anything-but' & 'prefix' 事件

问题描述

问题参考:https ://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html

我正在尝试使用 CloudWatch 事件在文件被放入 S3 存储桶时触发事件。如果任何文件被放入文件名不是以 BP 开头的 test-buckt1/in 中,我将使用以下内容触发。

{
"detail": {
"eventName": ["PutObject"],
"eventSource": ["s3.amazonaws.com"],
"requestParameters": {
"bucketName": ["test-buckt1"],
"key": [
   {
     "anything-but": {
         "prefix": "in/BP"
      }
    }
   ]
}
},
  "detail-type": ["AWS API Call via CloudTrail"],
  "source": ["aws.s3"]
}

问题:即使将文件拖放到其他对象(例如 test-buckt1/out 文件夹)也会触发此问题。我可以在下面使用它,但我必须在我的 lamdba 代码中添加逻辑来过滤以 BP 开头的文件名 -

{
"detail": {
"eventName": ["PutObject"],
"eventSource": ["s3.amazonaws.com"],
"requestParameters": {
"bucketName": ["test-buckt1"],
"key": [
   { "prefix": "in/"
   }]
}
},
"detail-type": ["AWS API Call via CloudTrail"],
"source": ["aws.s3"]
}

我们可以结合上述任何方式。所以一条规则应该只在文件被拖放到 test-buckt1/in 文件夹时触发,并且当文件名放在 test/buckt1/in 以 BP 开头时它不应该触发

标签: amazon-web-serviceseventsamazon-cloudwatch

解决方案


推荐阅读