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

问题描述 投票:0回答:3

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

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

我需要与

s3:/folder1/folderA
(但不是文件夹 B 或 C)中出现的同一新文件相关的相同事件也进入
sqs2
,由
Lambda2
处理。
Lambda1
修改该文件并将其保存在某处,例如,
Lambda2
将该文件放入数据库。

但是 AWS 文档说:

使用 Filter 的通知配置无法定义前缀重叠、后缀重叠或前后缀重叠的过滤规则。

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

python-3.x amazon-web-services amazon-s3 amazon-sqs
3个回答
5
投票

看来您的要求是:

  • 当文件添加到
    folderA
    时,您希望向
    sqs1
    AND
    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

1
投票

您不应设置 (S3 -> SQS) 的 S3 对象通知,而应设置 (S3 -> Lambda) 的通知。

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


0
投票

要将相同的 S3 事件、事件文件夹 A 发送到 SQS1 和 SQS2 - 将事件发送到 SNS 主题并将 SQS 队列订阅到主题 [SQS1 和 SQS2]

© www.soinside.com 2019 - 2024. All rights reserved.