跨 AWS 账户将消息从一个 SQS 队列复制到另一个的最佳方法是什么?搜索后,我将授予 IAM 用户(在目标账户中)完全读写访问权限的策略附加到源队列。然后我将一个权限附加到源队列,让每个人都可以在队列上发送和接收消息。
我收到以下错误 -
Exception in thread "main" com.amazonaws.AmazonServiceException: The security token included in the request is invalid. (Service: AmazonSQS; Status Code: 403
IAM 用户凭据可能有问题,但是,我已刷新凭据,但仍然收到错误消息
最佳答案
权限是次要的。主要问题是如何“跨 AWS 账户将消息从一个 SQS 队列复制到另一个”。
Amazon SQS 最近推出了 的功能触发 AWS Lambda 函数 当消息到达时。您可以创建一个 Lambda 函数,然后在另一个队列(可能位于不同的账户、区域等)中创建消息。然而,原邮件一经处理即被删除 ,所以它并不是真正“复制”消息。
更好的方法是:
见:Sending Amazon SNS messages to an Amazon SQS queue in a different account - Amazon Simple Notification Service
有一个great video from AWS re:Invent展示了如何一起使用 SQS 和 SNS。
更新:如何复制队列中的现有消息
"there are existing messages in a queue that needs to be copied to a new queue in a new account."
如果是这样,那你就麻烦了!
队列的思想是检索处理和删除消息。显然,这是“复制”消息的坏主意,因为您不想删除它们。
您可以尝试增加队列的不可见超时,然后检索队列中的所有消息。它们将被放置在飞行中,这意味着它们暂时不可见,但如果在不可见超时期限结束时未被删除,它们将重新出现在队列中。因此,您的应用程序可以读取每条消息(但不能删除它们)并在第二个队列中创建新消息。然后,每条原始消息将重新出现在原始队列中。
或者,您可以编写一个应用程序来读取每条消息并将其发送到两个队列,同时删除源消息。然后,将新队列之一视为原始队列的替代。
底线:没有预先提供的方法。你必须自己做。
关于amazon-web-services - 跨 AWS 账户在 2 个 SQS 队列中复制消息的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113549/