有没有一种简单的方法可以将许多队列中的所有消息重定向到单个"catch-all"队列中,并通过将源队列名称添加为名为"source"的属性来更改消息?
我需要更多队列(而不是单个队列)的原因是:我想使用 IAM 策略来规范用户对单个源的访问。
编辑:
我需要构建的内容非常简单:
-
用户表示存储在 S3 中的文件应由我们的软件处理
- 对于此通知,他们可以使用任何 AWS 服务,它可以是 Lambda 函数、API、SQS、SNS。无论什么都有效。
- 作为限制,我不能限制用户上传文件或强加命名约定。
- 运行我们软件的 IAM 用户可以访问用户的内容
-
通知后,进程将更新文件内容并将结果移动到指定位置
- 目标位置取决于内容,也可以由用户提供。任何方法都会奏效。
问题是我需要确保用户将数据发送到他们被允许的位置。我只想使用 IAM 策略并避免使用"权限"数据库。
我的想法是为每个目标位置提供一个 SQS,并授予用户访问适当的 SQS 列表的权限。如果他们在他们有权访问的队列上发布请求,则主进程可以安全地完成请求。 缺点是主进程必须侦听许多 SQS,并且每当我们更改目标位置的配置时,我们都需要更新它。
Amazon Simple Queue Service (SQS) 本身非常简单(因此得名)。您可以创建队列,向队列发送消息,从队列中检索消息,删除队列等等。
您想要执行的任何其他操作都需要由您自己的应用程序完成,该应用程序向队列发送/接收消息/从队列接收消息。
您无法指示 SQS 重定向消息或修改消息内容。
如果您希望有多个消息使用者,通常的做法是最初将消息发送到 Amazon Simple Notification Service (SNS),它可以将消息转发到多个队列。然后,用户可以从自己的队列中检索消息,而不会影响其他用户的队列。