首页 > 解决方案 > Cloudwatch 事件规则侦听具有特定 keypath 的 s3 存储桶

问题描述

有没有办法收听 s3 存储桶,但只能在特定的“文件夹”内收听,例如,如果我有一个名为 input 的文件夹,我会说在“s3://bucket-name/folder1/*”上收听?现在好像只能听整个bucket了 这是我的流程: CloudTrail (monitor 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" ] } } }

有什么解决方法吗?

标签: amazon-web-servicesamazon-cloudwatch

解决方案


截至撰写本文之日,我目前还不知道有什么方法可以按照规则完成。该规则可能有解决方法,但我还没有找到它...

...但是:这可以通过使用CloudTrail.

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

现在您只有该路径的日志跟踪。cloudwatch 规则或 eventBridge 规则现在可以指定存储桶以及您要监控的任何操作。


推荐阅读