跨AWS账户将消息从一个SQS队列复制到另一个SQS队列的最佳方法是什么?搜索之后,我将允许IAM用户(在目标帐户中)的完全读写访问权限的策略附加到源队列。然后,我在源队列上附加了一个权限,以使每个人都可以在队列上发送和接收消息。
我遇到错误-
线程“ main”中的异常com.amazonaws.AmazonServiceException: 请求中包含的安全令牌无效。 (服务: AmazonSQS;状态码:403
IAM用户凭据可能存在问题,但是,我已经刷新了凭据,但是仍然出现错误
答案 0 :(得分:6)
权限是次要的事情。主要问题是如何“将消息从一个SQS队列复制到整个AWS账户中的另一个队列”。
Amazon SQS最近引入了在消息到达时触发AWS Lambda函数的功能。您可以创建一个Lambda函数,然后在另一个队列(可以在不同的帐户,区域等)中创建消息。但是,原始邮件在处理后将被删除,因此它并不是真正在“复制”邮件。
更好的方法是:
有一个great video from AWS re:Invent展示了如何一起使用SQS和SNS。
更新:如何复制队列中的现有邮件
“队列中已有消息,需要将其复制到新帐户中的新队列中。”
如果是这样,那么您就有麻烦了!
队列的思想是对消息进行检索处理并删除。显然,这对于“复制”邮件是个坏主意,因为您不想删除它们。
您可以尝试增加队列的 invisible超时,然后检索队列中的所有消息。它们将在飞行中被放置,这意味着它们暂时不可见,但是如果在可见性超时期间结束时未删除,它们将重新出现在队列中。因此,您的应用可以读取每条消息(但不能删除它们)并在第二个队列中创建新消息。然后,每条原始消息将重新出现在原始队列中。
或者,您可以编写一个应用程序来读取每条消息并将其发送到两个队列,并随即删除源消息。然后,将其中一个新队列替换为原始队列。
底线:没有预先提供的方法。您必须自己做。