Amazon web services AWS S3文件夹放置事件通知
我用Python编写了一个函数,将文件夹及其内容上传到S3。现在我想让S3生成一个事件(这样我就可以将它发送给lambda函数)。S3只允许在文件级生成事件,事实上S3上的文件夹只是一个可视化层,这意味着S3没有文件夹的内部表示,具有相同根的键只是简单地分组在一起。这就是说,到目前为止,我已经提出了三种围绕“毒丸”概念的方法Amazon web services AWS S3文件夹放置事件通知,amazon-web-services,amazon-s3,aws-lambda,amazon-sqs,Amazon Web Services,Amazon S3,Aws Lambda,Amazon Sqs,我用Python编写了一个函数,将文件夹及其内容上传到S3。现在我想让S3生成一个事件(这样我就可以将它发送给lambda函数)。S3只允许在文件级生成事件,事实上S3上的文件夹只是一个可视化层,这意味着S3没有文件夹的内部表示,具有相同根的键只是简单地分组在一起。这就是说,到目前为止,我已经提出了三种围绕“毒丸”概念的方法 在文件夹上载过程结束时发送一个特殊文件,该文件的创建会向lambda发送一个事件,该事件可以打开该文件以读取要执行操作的自定义指令。这种方法似乎非常灵活,但是在安全方面会引
put\u events
应该起作用- 我是否错过了另一种不涉及客户通知的方式?(上述所有方法都依赖于客户端以某种方式发送通知,这不是很“阴暗”)
- 考虑到方法2和方法3都依赖于向流中发送信息和从流中发送信息(分别是CloudWatch和SQS),它们之间是否存在实质性差异
images/dogs/
后,上载一个密钥与文件夹相同的零大小对象(images/dogs/
)。这是一个“哨兵文件”。使用后缀为/
的S3事件触发器检测“文件夹”对象的上载并触发Lambda我喜欢第一种选择。它实现了最终目标,而不会产生无关的S3对象。使用SNS,如果需要,还可以配置多个下游进程以响应“完成上传”消息(扇出)。
您是否考虑过使用S3桶事件的前缀选项,我测试了它,并且运行良好。在我的S3存储桶中,我创建了两个文件夹test1和test2。在s3事件中,我添加了前缀test1,每次在bucket lambda上执行put/copy操作时都会使用该前缀
我不理解你关于方法1“在安全方面造成严重问题”的评论。为什么在文件夹上载结束时上载sentinel文件会比上载文件本身带来更多或更少的安全风险?因为sentinel文件将包含有关系统的信息,并从操作它的其他组件读取,所以文件注入是很有可能的。它提供了什么信息,给了谁?如果您可以读取sentinel对象,那么您大概也可以读取所有其他对象(它们提供了更多信息)。也许你可以分享更多关于“文件注入”风险的信息。你基本上是在陈述第1点和第3点,没有任何争论,你能扩展你的推理吗?你已经询问了关于如何实施通知工作流的意见。我已经提出了我的意见。没有“正确的方法”。你要么主动通知(选项1是一种方式),要么主动通知(选项2是一种方式)。我同意@jarmod的建议。必须发出某种信号,表明文件夹已准备好进行处理。这可以在S3外部完成(SNS、SQS或直接Lambda调用),也可以通过向S3上传Lambda检测和响应的“信号”文件来完成。无论哪种方式,都需要“发送”端有一些特殊的东西来触发动作。也可以通过一些计时机制选择“等待上传完成”(例如,在第一次上传后等待n分钟),并且不需要额外的“发送”信号,但可能存在难以调试的问题。“我更喜欢第一个选项。”是您的响应中唯一包含任何类型信息的部分。如果你不争辩,那么说出你的立场是没有意义的。你为什么更喜欢主动的方式而不是被动的方式?