

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

# Amazon MQ で RabbitMQ 設定を自動化する
<a name="automate-rabbitmq-configuration-in-amazon-mq"></a>

*Yogesh Bhatia、Afroz Khan (Amazon Web Services)*

## 概要
<a name="automate-rabbitmq-configuration-in-amazon-mq-summary"></a>

[Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) は、多くの人気メッセージブローカーとの互換性を提供するマネージドメッセージブローカーサービスです。RabbitMQ で Amazon MQ を使用すると、複数のブローカーと設定オプション AWS クラウド を備えた で管理される堅牢な RabbitMQ クラスターが提供されます。 RabbitMQ Amazon MQ は、可用性、安全性、スケーラビリティの高いインフラストラクチャを提供し、毎秒多数のメッセージを簡単に処理します。複数のアプリケーションが、さまざまな仮想ホスト、キュー、交換でインフラストラクチャを使用できます。ただし、これらの設定オプションの管理またはインフラストラクチャの手動作成には、時間と労力が必要になることがあります。このパターンでは、単一ファイルで、RabbitMQ の構成を 1 つの手順で管理する方法について説明します。このパターンで提供されるコードは、Jenkins または Bamboo などの継続的インテグレーション（CI）ツールに組み込みできます。 

このパターンを使用して、任意の RabbitMQ クラスターを設定できます。必要なのはクラスターへの接続のみです。RabbitMQ 設定を管理する方法は他にも多くありますが、このソリューションではアプリケーション全体の設定をワンステップで作成するため、キューやその他の詳細を簡単に管理できます。

## 前提条件と制限
<a name="automate-rabbitmq-configuration-in-amazon-mq-prereqs"></a>

**前提条件**
+ AWS Command Line Interface (AWS CLI) [がインストールされ、 を指すように設定](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html)されている AWS アカウント
+ Ansible がインストールされている（プレイブックを実行して構成を作成できる）
+ **rabbitmqadmin** がインストールされている (手順については、[RabbitMQ ドキュメント](https://www.rabbitmq.com/management-cli.html)を参照)
+ 正常な Amazon CloudWatch メトリクスで作成されたAmazon MQ の RabbitMQ クラスター

**その他の要件**
+ JSON の一部としてではなく、仮想ホストとユーザーの設定を別に作成します。
+ 設定 JSON がリポジトリの一部であり、バージョン管理されていることを確認します。
+ **rabbitmqadmin** CLI のバージョンは RabbitMQ サーバーのバージョンと同じである必要があるため、最善のオプションは RabbitMQ コンソールから CLI をダウンロードすることです。
+ パイプラインの一部として、各実行前に JSON 構文が検証されていることを確認します。

**製品バージョン**
+ AWS CLI バージョン 2.0
+ Ansible バージョン 2.9.13
+ **rabbitmqadmin** バージョン 3.9.13 (RabbitMQ サーバーバージョンと同じである必要があります)

## アーキテクチャ
<a name="automate-rabbitmq-configuration-in-amazon-mq-architecture"></a>

**ソーステクノロジースタック**
+ 既存のオンプレミス仮想マシン (VM) または Kubernetes クラスター (オンプレミスまたはクラウド) で実行中の RabbitMQ クラスター

**ターゲットテクノロジースタック**
+ Amazon MQ for RabbitMQ での RabbitMQ の自動設定

**ターゲットアーキテクチャ**

RabbitMQ を設定する方法は多くあります。このパターンでは、単一 JSON ファイルにすべての設定が含まれるインポート設定機能を使用します。このファイルにはすべての設定が適用され、Bitbucket または Git などのバージョン管理システムで管理できます。このパターンは Ansible を使用して、**rabbitmqadmin** CLI で設定を実装します。

![Amazon MQ で RabbitMQ 設定を自動化する](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/294120b6-c95f-4cc5-bf85-5ad7e2abdad5/images/292e1284-5c9e-4c82-bb41-010fa84d8d74.png)


## ツール
<a name="automate-rabbitmq-configuration-in-amazon-mq-tools"></a>

**AWS サービス**
+ [Amazon MQ](https://docs.aws.amazon.com/amazon-mq/) は、クラウドでメッセージブローカーを簡単にセットアップして操作できるマネージドメッセージブローカーサービスです。
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) は、 AWS Infrastructure as Code を使用してインフラストラクチャをセットアップし、クラウドプロビジョニングを高速化するのに役立ちます。
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) では、コマンドラインシェルでコマンド AWS のサービス を使用して を操作できます。 

**その他のツール**
+ [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) は RabbitMQ HTTP ベースの API 用のコマンドラインツールです。RabbitMQ ノードとクラスターの管理と監視に使用されます。
+ [Ansible](https://www.ansible.com/) は、アプリケーションと IT インフラストラクチャを自動化するオープンソースツールです。

**コードリポジトリ**

このパターンで使用する JSON 設定ファイルと Ansible プレイブックのサンプルが添付ファイルで提供されます。

## エピック
<a name="automate-rabbitmq-configuration-in-amazon-mq-epics"></a>

### AWS インフラストラクチャを作成する
<a name="create-your-aws-infrastructure"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| で RabbitMQ クラスターを作成します AWS。 | RabbitMQ クラスターがまだない場合は、 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用してスタックを作成できます AWS。または、[CloudFormation Ansible の モジュール](https://docs.ansible.com/projects/ansible/latest/collections/amazon/aws/cloudformation_module.html)を使用してスタックを作成できます。後者のアプローチでは、Ansible は、RabbitMQ インフラストラクチャの作成と設定の管理の両方のタスクに使用できます。  | AWS 全般、Ansible | 

### Amazon MQ for RabbitMQ 設定を作成する
<a name="create-the-amqlong-for-rabbitmq-configuration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プロパティファイルを作成します。 | 添付ファイルの JSON 設定ファイル (`rabbitmqconfig.json`) をダウンロード、または RabbitMQ コンソールからエクスポートします。 変更して、キュー、交換、バインドを設定します。この設定ファイルでは、以下が示されます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)<br />これらの設定は、**rabbitmqadmin** が要求するルート (/) 仮想ホストで実行されます。  | JSON | 
| Amazon MQ for RabbitMQ インフラストラクチャの詳細を取得します。 | で RabbitMQ インフラストラクチャの以下の詳細を取得します AWS。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-rabbitmq-configuration-in-amazon-mq.html)<br /> AWS マネジメントコンソール または を使用して、この情報 AWS CLI を取得できます。これらの詳細により、Ansible プレイブックは に接続 AWS アカウント し、RabbitMQ クラスターを使用してコマンドを実行できます。Ansible プレイブックを実行するコンピュータは、*「前提条件*」セクションで説明されているように AWS アカウント、 にアクセスできる必要があり、既に設定されている AWS CLI 必要があります。 | AWS 全般 | 
| `hosts_var` ファイルの作成 | Ansible の `hosts_var` ファイルを作成し、すべての変数がファイルで定義されていることを確認します。Ansible Vault を使用してパスワードを保存することを検討します。`hosts_var` ファイルは次のように設定できます（アスタリスクと情報を入れ替えます）。<pre>RABBITMQ_HOST: "***********.mq.us-east-2.amazonaws.com"<br />RABBITMQ_VHOST: "/"<br />RABBITMQ_USERNAME: "admin"<br />RABBITMQ_PASSWORD: "*******"</pre> | Ansible | 
| Ansible プレイブックを作成します。 | サンプルプレイブックについては、添付の `ansible-rabbit-config.yaml` を参照してください。このファイルをダウンロードして保存します。Ansible プレイブックは、アプリケーションが必要とするキュー、交換、バインドなどのすべての RabbitMQ 設定をインポートして、管理します。 <br />パスワードの保護など、Ansible プレイブックのベストプラクティスに従います。パスワードの暗号化には Ansible Vault を使用し、暗号化されたファイルから RabbitMQ パスワードを取得します。 | Ansible | 

### 設定をデプロイする
<a name="deploy-the-configuration"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| プレイブックを実行します。 | 前のエピックで作成した Ansible プレイブックを実行します。<pre>ansible-playbook ansible-rabbit-config.yaml</pre><br />RabbitMQ コンソールで新しい設定を確認できます。 | 一般的な AWS、RabbitMQ、Ansible | 

## 関連リソース
<a name="automate-rabbitmq-configuration-in-amazon-mq-resources"></a>
+ [RabbitMQ から Amazon MQ への移行](https://aws.amazon.com/blogs/compute/migrating-from-rabbitmq-to-amazon-mq/) (AWS ブログ記事)
+ [管理コマンドラインツール](https://www.rabbitmq.com/management-cli.html) (RabbitMQ ドキュメント)
+ [AWS CloudFormation スタックの作成または削除](https://docs.ansible.com/ansible/latest/collections/amazon/aws/cloudformation_module.html) (Ansible ドキュメント)
+ [メッセージ駆動型アプリケーションを Amazon MQ for RabbitMQ に移行する](https://aws.amazon.com/blogs/compute/migrating-message-driven-applications-to-amazon-mq-for-rabbitmq/) (AWS ブログ記事)

## アタッチメント
<a name="attachments-294120b6-c95f-4cc5-bf85-5ad7e2abdad5"></a>

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