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

lug*_*er1 2 amazon-s3 amazon-sqs amazon-web-services python-3.x

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

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

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

但 AWS 文档说:

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

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

Joh*_*ein 5

看来您的要求是:

  • 当文件添加到 时,您希望向ANDfolderA发送消息(可以并行完成)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
Run Code Online (Sandbox Code Playgroud)