Cloudwatch事件规则使用特定的密钥路径监听s3存储桶

时间:2018-12-14 09:30:14

标签: amazon-web-services amazon-cloudwatch

是否有一种方法可以监听s3存储桶,但仅在特定的“文件夹”内部,因此例如,如果我有一个名为input的文件夹,我会说在“ s3:// bucket-name / folder1 / *”上监听? 现在看来您只能收听整个存储桶。我的问题是我想基于特定的密钥路径使用相同的存储桶来触发CloudWatch,当然所有CloudWatch规则都将被触发。 这是我的流程: CloudTrail(监视器s3:// bucket / path)-> CloudWatch(该s3:// bucket / path中的任何PUT都有事件规则)触发器-> StepFunction-> LambdaFunctions 我还尝试将其限制为CloudWatch角色,以仅向该特定S3存储桶路径授予权限,而不会带来麻烦。 这是我的活动规则:

{ "source": [ "aws.s3" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "s3.amazonaws.com" ], "eventName": [ "PutObject" ], "requestParameters": { "bucketName": [ " bucketname" ] } } }

有什么解决方法吗?

2 个答案:

答案 0 :(得分:1)

截至撰写本文时,我目前尚不知道一种完成“规则”的方法。该规则可能有解决方法,但我没有找到...

...但是: 这可以通过使用CloudTrail来实现。

  1. 从拥有的事件规则对象中删除密钥,并保留存储桶名称
  2. 转到CloudTrail。如果所有数据事件均已打开,请禁用它们并创建自己的跟踪。
  3. 在CloudTrail中,创建一个新的Trail。指定对象或存储桶级操作
  4. 启用S3数据事件-假设您要监听putObject或类似对象
  5. 指定您的存储桶,然后在显示“单个存储桶选择”时,输入存储桶名称和您要监视的路径。 bucketname/folder1/folder2
  6. 指定是否要将读写操作记录到跟踪中。

现在,您仅具有该路径的日志记录。 cloudwatch规则或eventBridge规则现在可以指定存储桶以及要监视的任何操作。

答案 1 :(得分:0)

尝试添加

"requestParameters": { "bucketName": [ " bucketname" ],"key":["folder1"] }

可能有用。