如何将相同的 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
(但不是文件夹 B 或 C)中的同一个新文件相关的相同事件也进入 sqs2
,由 [=17= 处理].例如,Lambda1
修改该文件并将其保存在某处,Lambda2
将该文件放入数据库。
但是 AWS 文档说:
Notification configurations that use Filter cannot define filtering rules with overlapping prefixes, overlapping suffixes, or prefix and suffix overlapping.
所以问题是如何绕过这个限制?有没有已知的推荐或标准解决方案?
您应该设置 (S3 -> Lambda) 的通知,而不是设置 (S3 -> SQS) 的 S3 对象通知。
在您的 lambda 函数中,您解析 S3 事件,然后编写您自己的逻辑以将有关 S3 事件的任何内容发送到您喜欢的任何 SQS 队列。
看来您的要求是:
- 将文件添加到
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
我正在使用 AWS Lambda 函数(在 Python 中)处理出现在同一 Amazon S3 存储桶和文件夹中的新文件。
当 s3:/folder1/folderA, B, C
中出现新文件时,会生成一个事件 s3:ObjectCreated:*
并进入 sqs1
,然后由 Lambda1
处理(然后从 sqs1
处理成功后)。
我需要与出现在 s3:/folder1/folderA
(但不是文件夹 B 或 C)中的同一个新文件相关的相同事件也进入 sqs2
,由 [=17= 处理].例如,Lambda1
修改该文件并将其保存在某处,Lambda2
将该文件放入数据库。
但是 AWS 文档说:
Notification configurations that use Filter cannot define filtering rules with overlapping prefixes, overlapping suffixes, or prefix and suffix overlapping.
所以问题是如何绕过这个限制?有没有已知的推荐或标准解决方案?
您应该设置 (S3 -> Lambda) 的通知,而不是设置 (S3 -> SQS) 的 S3 对象通知。
在您的 lambda 函数中,您解析 S3 事件,然后编写您自己的逻辑以将有关 S3 事件的任何内容发送到您喜欢的任何 SQS 队列。
看来您的要求是:
- 将文件添加到
folderA
后,您希望向sqs1
ANDsqs2
发送消息(可以在平行) - 将文件添加到
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