![](/img/trans.png)
[英]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.