[英]How to use Amazon SQS as Celery broker, without creating / listing queues?
[英]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
这可以通过为每个文件夹配置单独的事件来完成:
Prefix = folderA
Prefix = folderB
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.