繁体   English   中英

如何将相同的Amazon S3事件定向到几个不同的SQS队列中?

[英]How to direct the same Amazon S3 events into several different SQS queues?

我正在使用AWS Lambda函数(在Python中),该函数处理出现在相同Amazon S3存储桶和文件夹中的新文件。

当新文件出现在s3:/folder1/folderA, B, C ,将生成事件s3:ObjectCreated:*并进入sqs1 ,然后由Lambda1处理(成功处理后从sqs1删除)。

我需要与出现在s3:/folder1/folderA (但不是folderB或C)中的同一新文件相关的相同事件,也要进入sqs2 ,由Lambda2处理。 Lambda1修改该文件并将其保存在某个位置,例如, Lambda2将该文件保存到DB中。

但是AWS文档说:

使用筛选器的通知配置不能定义前缀重叠,后缀重叠或前缀和后缀重叠的过滤规则。

那么问题是如何绕过这个限制? 是否有已知的推荐或标准解决方案?

看来您的要求是:

  • 将文件添加到folderA ,您希望将消息发送到sqs1 sqs2 (可以并行执行)
  • 将文件添加到folderB ,您希望将消息发送到sqs2

这可以通过为每个文件夹配置单独的事件来完成:

  • 事件A: Prefix = folderA
  • 事件B: Prefix = folderB
  • 事件C: Prefix = folderC

然后,您可以使用Amazon SNS主题扇出多个队列:

eventA -> sns1 +-> sqs1 -> Lambda1
               |
               +-> sqs2 -> Lambda2

eventB -> sqs1 -> Lambda1

eventC -> sqs1 -> Lambda1

代替设置(S3-> SQS)的S3对象通知,您应该设置(S3-> Lambda)的通知。

在lambda函数中,您解析S3事件,然后编写自己的逻辑,以将有关S3事件的任何内容发送到所需的任何SQS队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM