

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# メッセージキューを Microsoft Azure Service Bus から Amazon SQS に移行
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs"></a>

*Amazon Web Services、Nisha Gambhir*

## 概要
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-summary"></a>

このパターンでは、.NET Framework、.NET Core ウェブまたはコンソールアプリケーションを Microsoft Azure Service Bus キューメッセージングプラットフォームを使用していたものから Amazon Simple Queue Service (Amazon SQS) に移行する方法を説明します。

アプリケーションはメッセージングサービスで、他のアプリケーションとの間でデータを送受信します。これらのサービスは、分離された拡張性の高いマイクロサービス、分散システム、サーバーレスアプリケーションをクラウド上に構築するのに役立ちます。

Azure Service Bus キューは、キューイングとパブリッシュ/サブスクライブメッセージングをサポートする幅広い Azure メッセージングインフラストラクチャの一部となっています。 

Amazon SQS は、フルマネージド型のメッセージキューイングサービスであり、マイクロサービス、分散システム、およびサーバーレスアプリケーションのデカップリングとスケーリングを容易にします。Amazon SQS は、メッセージ指向ミドルウェアの管理と運用に伴う複雑さとオーバーヘッドを排除し、開発者が差別化作業に集中できるようにします。Amazon SQS を使用すると、メッセージを失い、または他のサービスを利用する必要がなく、ソフトウェアコンポーネント間でメッセージを送受信、保存できます。

## 前提条件と制限
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-prerequisites-and-limitations"></a>

**前提条件**
+ アクティブな AWS アカウント 
+ AAzure Service Bus キューを使用する .NET Framework、.NET Core ウェブまたはコンソールアプリケーション (サンプルコードが添付されています)

**製品バージョン**
+ .NET Framework 3.5 以降または .NET Core 1.0.1、2.0.0 以降

## アーキテクチャ
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-architecture"></a>

**ソーステクノロジースタック**
+ Azure Service Busキューを使用してメッセージを送信する .NET (コアまたはフレームワーク) ウェブアプリケーションまたはコンソールアプリケーション

 

**ターゲットテクノロジースタック**
+ Amazon SQS

## ツール
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-tools"></a>

**ツール**
+ Microsoft Visual Studio

**Code**

Amazon SQS のために、AWS Identity and Access management (IAM) ポリシーを作成するには:

1. AWS マネジメントコンソールにサインインして、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/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 ロールにアタッチするか、新しいロールを作成します。

## エピック
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-epics"></a>

### AWS で Amazon SQS をセットアップ
<a name="set-up-amazon-sqs-in-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Amazon SQS IAMポリシーを作成します。 | Amazon SQS へのアクセスを実現する IAM ポリシーを作成します。サンプルポリシーについては、「コード」セッションを参照してください。 | システムエンジニア | 
| AWS プロファイルを作成します。 | AWS Tools for PowerShell コマンド「Set-AWScredential」を実行して、新しいプロファイルを作成します。アクセスキーとシークレットキーは、指定したプロファイル名の下のデフォルトの認証情報ファイルに保存されます。前に作成した Amazon SQS ポリシーをこのアカウントにリンクします。アクセスキー ID とシークレットアクセスキーを保管します。これらは次のステップで必要になります。 | システムエンジニア | 
| SQS キューを作成します。 | 標準キューまたは先入れ先出し (FIFO) キューを作成できます。手順については、「参考文献」セクションのリンクを参照してください。 | システムエンジニア | 

### .NET アプリケーションコードを見直してください。
<a name="revise-your-net-application-code"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS Toolkit for Visual Studio をインストールします。 | このツールキットは Microsoft Visual Studio の拡張機能で、.NET アプリケーションを AWS で簡単に構築してデプロイできます。インストールと使用方法については、「参考文献」セクションのリンクを参照してください。 | アプリケーション開発 | 
| AWSSDK.SQS NuGet パッケージをインストールします。 | AWSSDK.SQS をインストールするには、Visual Studio で［Manage NuGet Package］を選択するか、［Install-Package AWSSDK.SQS］コマンドを実行します。 | アプリケーション開発 | 
| .NET アプリケーションに AWSCredentials オブジェクトを作成します。 | 添付ファイルのサンプルアプリケーションは、AWScredentials から継承する BasicAWScredentials オブジェクトを作成する方法を示しています。先ほど使用したアクセスキー ID とシークレットアクセスキーを使用することも、実行時にユーザープロファイルの一部として.aws フォルダーからオブジェクトにこれらを選択させることもできます。 | アプリケーション開発 | 
| SQS クライアントオブジェクトを作成します。 | .NET フレームワーク用の SQS クライアントオブジェクト (AmazonSQSClient) を作成します。これは Amazon.SQS ネームスペースの一部です。このオブジェクトは Microsoft.Azure.ServiceBus ネームスペースの一部である iQueueClient の代わりに必要です。 | アプリケーション開発 | 
| SendMessageAsync メソッドを呼び出して SQS キューにメッセージを送信します。 | メッセージをキューに送信するコードを変更して AmazonSQSClient.SendMessageAsync メソッドを使用します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 
| SQS キューからメッセージを受信するには、ReceiveMessageAsync メソッドを呼び出します。 | メッセージを受信するコードを変更して AmazonSQSClient.ReceiveMessageAsync メソッドを使用します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 
| DeleteMessageAsync メソッドを呼び出して SQS キューからメッセージを削除します。 | メッセージを削除するには、コードを QueueClient.CompleteAsync メソッドから AmazonSQSClient.DeleteMessageAsync メソッドに変更します。詳細については、添付のコードサンプルを参照してください。 | アプリケーション開発 | 

## 関連リソース
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-related-resources"></a>
+ [AWS SDK for .NET 開発者ガイド](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html)
+ 「[Amazon SQS を使用したメッセージング](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/sqs-apis-intro.html)」
+ 「[AWS SDK for .NET による Amazon SQS キューの作成と使用](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/how-to-sqs.html)」
+ [Amazon SQS メッセージの送信](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/SendMessage.html)
+ 「[Amazon SQS キューからメッセージを受信する](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/ReceiveMessage.html)」
+ 「[Amazon SQS キューからメッセージを削除する](https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/DeleteMessage.html)」
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/welcome.html)

## 追加情報
<a name="migrate-a-messaging-queue-from-microsoft-azure-service-bus-to-amazon-sqs-additional-information"></a>

このパターンには 2 つのサンプルアプリケーションを含んでいます (添付ファイルのセクションを参照)。
+ **AzureSbTestApp** には Azure Service Bus キューを使用するコードが含まれています。
+ **AmazonSqsTestApp** は Amazon SQS を使用します。これは.NET Core 2.2 を使用するコンソールアプリケーションで、メッセージの送受信の例を含んでいます。

注記:
+ queueClient は iQueueClient のオブジェクトで、Microsoft.Azure.ServiceBusネームスペース (Microsoft.Azure.ServiceBus NuGet パッケージに含まれている) の一部です。
+ amazonSQSClient は Amazon.SQS ネームスペース (AWSSDK.SQS NuGet パッケージに含まれている) の一部である AmazonSQSClient のオブジェクトです。
+ コードが実行されている位置 (EC2 で実行されているかどうかなど) によっては、ロールに SQS キューに書き込む権限が必要です。

## アタッチメント
<a name="attachments-25334709-7000-4f60-87ed-ea41acb41a99"></a>

このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「[attachment.zip](samples/p-attach/25334709-7000-4f60-87ed-ea41acb41a99/attachments/attachment.zip)」