CloudWatch事件规则监听具有特定键路径的S3桶。

3
有没有办法只在特定的“文件夹”内监听 s3 存储桶,例如如果我有一个名为 input 的文件夹,我会说在 "s3://bucket-name/folder1/*" 上监听? 目前似乎只能监听整个存储桶。我的问题是,我想使用同一个存储桶来触发基于特定键路径的 CloudWatch,并且当然所有 CloudWatch 规则都将被触发。 这是我的流程: CloudTrail (监视 s3://bucket/path) -> CloudWatch (将具有任何 PUT 事件规则的 s3://bucket/path 触发器) -> 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个回答

3
截至本文撰写日期,我目前不知道任何实现“ON THE RULE”的方法。但是,可以使用CloudTrail实现。
以下是具体步骤:
  1. 从你已有的事件规则对象中删除密钥,只保留存储桶名称。
  2. 进入CloudTrail,如果已经开启了所有数据事件,请将其关闭并创建自己的跟踪。
  3. 在CloudTrail中创建一个新的跟踪。指定对象或存储桶级别操作。
  4. 启用S3数据事件——如果你想要监控putObject或类似操作。
  5. 指定你的存储桶,并在“单独选择存储桶”时输入存储桶名称和要监视的路径。bucketname/folder1/folder2
  6. 指定是否要将读取和写入操作记录到跟踪日志中。
现在,你有了仅针对该路径的日志跟踪。Cloudwatch规则或EventBridge规则现在可以指定桶和你想要监视的任何操作。

-3

尝试添加

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

可能会起作用。


1
这个对你有用吗?因为这种方法对我不起作用。 - mattc-7
这对我也没用。@AlanBullpitt,你找到可行的解决方案了吗? - fuzzi
@fuzzi 不是,我不得不重新设计如何处理数据。我创建了一个编排任务,根据关键字启动单个作业。 - Alan Bullpitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接