【问题标题】:SQS queue integration architectureSQS 队列集成架构
【发布时间】:2021-07-18 16:15:53
【问题描述】:
我有一些系统,我想与 aws sqs queue 集成。
基本上,我想要实现的架构将是图像中的架构(高级)。
最后是问题:
- 执行这些集成的最简单方法是什么?
- 当我的消费者 1 要求 oAuth2 时,是否有任何 aws 服务可以解决这个问题,或者我需要使用 Lambda 或其他东西手动完成吗?
- 生产者是否可以仅使用 token/api 密钥直接向 sqs 发送消息,还是需要使用中间服务来处理请求?
欢迎任何提示,伙计们。谢谢!
【问题讨论】:
标签:
node.js
aws-lambda
oauth-2.0
aws-api-gateway
amazon-sqs
【解决方案1】:
执行这些集成的最简单方法是什么?
最简单的方法是在生产者的应用程序代码中使用 aws sdk,然后他们直接将消息发布到队列。但是,您需要获得许可才能这样做。如果您的生产者应用程序已经承担了 IAM 角色,您可以将此权限添加到该角色。
当我的消费者 1 要求 oAuth2 时,是否有任何 aws 服务可以解决这个问题,或者我需要使用 Lambda 或其他东西手动完成?
您需要在 Lambda 中定义事件源映射以检查新消息(或轮询的应用程序)。
然后,您的 Lambda(或应用程序)需要通过 第 3 方应用程序正在使用的身份提供程序/服务对自己进行身份验证,以获取不记名令牌并将此不记名令牌传递给消费者 API 请求。
生产者是否可以仅使用 token/api 密钥直接向 sqs 发送消息,还是我需要使用中间服务来处理请求?
如果我正确理解了你的问题,我认为这不是一个好主意
- 您的生产者将通过身份提供者/服务进行身份验证,并将其令牌作为 SQS 的消息传递。这意味着任何对该 SQS 具有读取权限的人都可以在队列中看到您的令牌。
这可能是一个安全问题,例如,仅对 SQS 具有读取权限的人可以获取此令牌,模拟生产者应用程序并将数据推送到消费者应用程序,即使它们不是授权这样做。
- 当然,您必须考虑令牌的 ttl 以及如果消息在 SQS 中停留的时间过长可能会过期。并从消息中提取令牌并发出消费者可以进行身份验证的有效请求。
更好地将其卸载到从 SQS 中读取消息的应用程序/lambda 函数可以做到这一点。