將訊息佇列從微軟 Azure 服務匯流排移轉到 Amazon SQS - AWS Prescriptive Guidance

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將訊息佇列從微軟 Azure 服務匯流排移轉到 Amazon SQS

由尼沙甘比爾 (AWS) 創建

R 類型 平台重建

來源:應用程式使用 Azure 服務匯流排佇列

目標:Amazon SQS

建立者:AWS

:环境 PoC 或試驗

Technologies 網站與網路應用程式;移轉

工作負載:微軟

AWS 服務 Amazon SQS

Summary

此模式描述如何將 .NET 架構或 .NET 核心 Web 或主控台應用程式從使用 Microsoft Azure 服務匯流排佇列訊息平台遷移到 Amazon Simple Queue Service (Amazon SQS)。

應用程式使用訊息服務將資料傳送至其他應用程式,並從其他應用程式接收資料。這些服務有助於在雲端中建置分離、可高度擴充的微服務、分散式系統和無伺服器應用程式。

Azure 服務匯流排佇列是更廣泛的 Azure 訊息基礎結構的一部分,支援佇列和發佈/訂閱訊息。 

Amazon SQS 是一項完整受管的訊息佇列服務,可讓您解偶和擴展微服務、分散式系統和無伺服器應用程式。Amazon SQS 消除了管理和操作訊息導向中介軟體相關的複雜性和開銷,並讓開發人員能夠專注於差異化工作。使用 Amazon SQS,您可以在任何磁碟區的軟體元件之間傳送、儲存和接收訊息,而不會遺失訊息或需要其他服務可用。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶 

  • 使用 Azure 服務匯流排佇列的 .NET 架構或 .NET 核心 Web 或主控台應用程式 (附加範例程式碼)

產品版本

  • .NET 框架 3.5 或更新版本,或 .NET Core 1.0.1、2.0.0 或更新版本

Architecture

來源堆疊

  • 使用 Azure 服務匯流排佇列來傳送訊息的 .NET (核心或架構) Web 或主控台應用程式

目標堆疊

  • Amazon SQS

Tools

工具

  • Microsoft Visual Studio

Code

建立 Amazon SQS 的 AWS Identity and Access Management (IAM) 政策:

1. 登入 AWS 管理主控台,然後前往 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

2. 在左邊的導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)

3. 選擇JSON] 索引標籤,並貼上下列程式碼:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:GetQueueUrl", "sqs:ChangeMessageVisibility", "sqs:SendMessageBatch", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:ListQueueTags", "sqs:ListDeadLetterSourceQueues", "sqs:DeleteMessageBatch", "sqs:PurgeQueue", "sqs:DeleteQueue", "sqs:CreateQueue", "sqs:ChangeMessageVisibilityBatch", "sqs:SetQueueAttributes" ], "Resource": "arn:aws:sqs:*:<AccountId>:*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "sqs:ListQueues", "Resource": "*" } ] }

4. 選擇檢閱政策,輸入名稱,然後選擇建立政策

5. 將新建立的政策附加至您現有的 IAM 角色或建立新角色。

Epics

任務描述所需技能
建立 Amazon SQS 的 IAM 政策。

建立將提供 Amazon SQS 存取權的 IAM 政策。請參閱程式碼區段,取得範例政策。

系統工程師
建立 AWS 設定檔。

透過執行適用於 PowerShell 命令集的 AWS 工具來建立新的設定檔。此命令會將您的存取金鑰和秘密金鑰儲存在您指定的設定檔名稱下的預設認證檔案中。將您先前建立的 Amazon SQS 政策與此帳戶連結。保留 AWS 存取金鑰 ID 和私密存取金鑰。這些將在接下來的步驟中需要。

系統工程師
建立 SQS 佇列。

您可以建立標準佇列或先進先出 (FIFO) 佇列。如需說明,請參閱參考一節的連結。

系統工程師
任務描述所需技能
安裝 AWS Toolkit for Visual Studio。

此工具包是 Microsoft Visual Studio 的延伸,可讓您輕鬆地在 AWS 中建置和部署 .NET 應用程式。如需安裝和使用指示,請參閱〈參考〉一節中的連結。

應用程式開發
安裝 ASSDK.SQS NuGet 套件。

您可以通過在 Visual Studio 中選擇「管理 NuGet 包」或通過運行命令「安裝包 AWSSDK.SQS」來安裝 AWSSDK.SQS。

應用程式開發
在您的 .NET 應用程序中創建一個表示標識對象。

附件中的範例應用程式會顯示如何建立 BasicAWSCredentials 件,該物件會繼承自「清單識別」。您可以使用之前的存取金鑰 ID 和秘密存取金鑰,或讓物件在執行階段從 .aws 資料夾中選取這些金鑰做為使用者設定檔的一部分。

應用程式開發
建立 SQS 從屬端物件。

為 .NET 框架創建一個 SQS 客戶端對象(亞馬遜 SQL 客戶端)。這是 Amazon.sqs 命名空間的一部分。這個物件是必要的,而不是 IQueClient,這是微軟的一部分。

應用程式開發
呼叫傳送訊息同步方法,將訊息傳送至 SQS 佇列。

變更將訊息傳送至佇列的程式碼,以使用 AmazonSqsClient。如需詳細資訊,請參閱附加的程式碼範例。

應用程式開發
呼叫接收訊息同步方法,以接收來自 SQS 佇列的訊息。

變更接收訊息的程式碼,以使用 AmazonSqsClient 接收訊息同步方法。如需詳細資訊,請參閱附加的程式碼範例。

應用程式開發
呼叫 DeletemSync 方法來從 SQS 佇列刪除訊息。

若要刪除訊息,請變更程式碼從佇列方式。完成非同步方法到 AmazonSqsClient 刪除同步方法。如需詳細資訊,請參閱附加的程式碼範例。

應用程式開發

其他資訊

此樣式包含兩個範例應用程式 (請參閱附件部分):

  • 快速建立應用程式包含使用 Azure 服務匯流排佇列的程式碼。

  • 亞馬遜 SQL 應用程式使用 Amazon SQS。這是使用 .NET Core 2.2 的主控台應用程式,並包含用於傳送和接收訊息的範例。

備註:

  • 佇列屬性是一個物件的佇列屬性,它是微軟的一部分。服務匯流排命名空間 (包含在微軟。

  • AmazonSQSClient 是亞馬遜客戶端的一個對象,它是亞馬遜命名空間的一部分(包括在 AWSSDK.SQS NuGet 包中)。

  • 根據代碼的運行位置,比如說如果它在 EC2 上運行,角色需要有權寫入 SQS 隊列。

Attachments

attachment.zip