[英]Best way to copy messages within 2 SQS queues across AWS accounts
將消息從一個SQS隊列復制到整個AWS賬戶的另一個隊列的最佳方法是什么? 搜索之后,我將允許IAM用戶(在目標帳戶中)的完全讀寫訪問權限的策略附加到源隊列。 然后,我在源隊列上附加了一個權限,以便每個人都可以在隊列上發送和接收消息訪問權限。
我遇到錯誤-
線程“ main” com.amazonaws.AmazonServiceException中的異常:請求中包含的安全令牌無效。 (服務:AmazonSQS;狀態碼:403
IAM用戶憑據可能有問題,但是,我刷新了憑據,但仍然收到錯誤
許可是次要的。 主要問題是如何“將消息從一個SQS隊列復制到整個AWS賬戶中的另一個”。
Amazon SQS最近引入了在消息到達時觸發AWS Lambda函數的功能 。 您可以創建一個Lambda函數,然后在另一個隊列(可以在不同的帳戶,區域等)中創建消息。 但是, 原始郵件在處理后將被刪除 ,因此它並不是真正的“復制”郵件。
更好的方法是:
請參閱:將Amazon SNS消息發送到其他帳戶中的Amazon SQS隊列-Amazon Simple Notification Service
AWS re:Invent上有一段很棒的視頻 ,展示了如何一起使用SQS和SNS。
更新:如何復制隊列中的現有消息
“隊列中已有消息,需要將其復制到新帳戶中的新隊列中。”
如果真是這樣,那么您就有麻煩了!
隊列的思想是檢索一條消息並進行處理和刪除。 顯然,這對於“復制”郵件是個壞主意,因為您不想刪除它們。
您可以嘗試增加隊列的隱身超時時間 ,然后檢索隊列中的所有消息。 它們將在飛行中放置,這意味着它們暫時不可見,但是如果在看不見超時時間結束時未刪除,它們將重新出現在隊列中。 因此,您的應用可以讀取每條消息(但不能刪除它們)並在第二個隊列中創建新消息。 然后,每個原始消息將重新出現在原始隊列中。
或者,您可以編寫一個應用程序來讀取每條消息並將其發送到兩個隊列,並隨即刪除源消息。 然后,將其中一個新隊列替換為原始隊列。
底線:沒有預先提供的方法。 您必須自己做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.