ドキュメントデータベースのセットアップ

Amazon DocumentDB (MongoDB 互換) と AWS Cloud9

Amazon DocumentDB (MongoDB 互換) は高速でスケーラブルかつ高可用性の完全マネージド型ドキュメントデータベースサービスです。MongoDB のワークロードをサポートし、JSON データの保存、クエリ、インデックス作成を容易にします。

このチュートリアルでは、AWS Cloud9 を使用して Amazon DocumentDB を使用する方法を示します。mongo シェルを使用して AWS Cloud9 環境から Amazon DocumentDB クラスターに接続し、クエリをいくつか実行する方法を学びます。

チュートリアルの費用は約 0.08 USD です。

次の図は、このチュートリアルの最終的なアーキテクチャを示しています。

getting-started-amazon-documentdb-with-aws-cloud9-1
このチュートリアルの内容
時間 10 分以内                                  
料金

このチュートリアルの費用は、Amazon DocumentDB T3 のミディアムインスタンスで約 0.08 USD かかります。詳細については、Amazon DocumentDB の料金を参照してください。

AWS Cloud9 は無料利用枠の対象です。詳細については、AWS Cloud9 の料金をご覧ください。

ユースケース データベース
製品 Amazon DocumentDB (MongoDB 互換)、AWS Cloud9
対象者 デベロッパー
レベル 200: 中級コース。 このコンテンツは、AWS のサービスまたは機能についての概要を提供することに焦点を当てており、お客様がトピックに関して実用的な知識を持っていることを前提としています。
最終更新日 2020 年 8 月

1.AWS Cloud9 環境の作成

1.1 – AWS マネジメントコンソールを使用して、AWS Cloud9 マネジメントコンソールで、[環境を作成] を選択します。

getting-started-amazon-documentdb-with-aws-cloud9-2

1.2 – DocumentDBCloud9 という名前を入力します。

getting-started-amazon-documentdb-with-aws-cloud9-3

1.3 – [次のステップ] をクリックします。

getting-started-amazon-documentdb-with-aws-cloud9-4

1.4 – [設定の構成] セクションで、すべてのデフォルトを承認します。

1.5 – [次のステップ] をクリックします。

1.6 – [レビュー] セクションで、[環境を作成] を選択します。

getting-started-amazon-documentdb-with-aws-cloud9-5

1.7 – AWS Cloud9 環境のプロビジョニングには、最大 3 分かかります。

2.セキュリティグループの作成

2.1 – Amazon EC2 マネジメントコンソールの [ネットワークとセキュリティー] で、[セキュリティグループ] を選択します。

2.2 – [セキュリティグループを作成] をクリックします。

2.3 – [セキュリティグループ名] に、demoDocDB と入力します。

2.4 – [説明] に説明を入力します。

2.5 – [VPC] に、デフォルト VPC の使用を承認します。

2.6 – [受信ルール] セクションで、[ルールを追加] を選択します。

2.7 – [タイプ] に [カスタム TCP ルール] を選択します。

2.8 – [ポート範囲] に「27017」と入力します。

2.9 – ソースセキュリティグループは、作成した AWS Cloud9 環境のセキュリティグループです。ソースカスタムのデフォルト値のままにし、カスタムの横にあるフィールドに「cloud9」と入力して、使用可能なセキュリティグループのリストを表示します。

getting-started-amazon-documentdb-with-aws-cloud9-6

2.10 – aws-cloud9- <環境名> という名前のセキュリティグループを選択します。

2.11 – 他のすべてのデフォルトを承認し、[セキュリティグループを作成] を選択します。送信ルールを変更する必要はありません。

次のスクリーンショットは、このステップで作成されたセキュリティグループと、AWS Cloud9 環境を作成したときに作成された AWS Cloud9 セキュリティグループを示しています。

getting-started-amazon-documentdb-with-aws-cloud9-7

3.Amazon DocumentDB クラスターの作成

3.1 – Amazon DocumentDB マネジメントコンソールの [クラスター] で、[作成] を選択します。

getting-started-amazon-documentdb-with-aws-cloud9-8

3.2 – [Amazon DocumentDB クラスターの作成] ページで、[インスタンスクラス] の下にある [db.t3.medium] を選択し、[インスタンス数] で 1 を選択します。これらのオプションで、費用を最小限に抑えることができます。

getting-started-amazon-documentdb-with-aws-cloud9-9

3.3 – 他の設定はデフォルトのままにします。

3.4 – [認証] セクションで、ユーザー名とパスワードを入力します。

getting-started-amazon-documentdb-with-aws-cloud9-10

3.5 – [詳細設定を表示] をオンにします。

getting-started-amazon-documentdb-with-aws-cloud9-11

3.6 – [ネットワーク設定] セクションの [VPC セキュリティグループ] で、[demoDocDB] を選択します。

getting-started-amazon-documentdb-with-aws-cloud9-12

3.7 – [クラスターを作成] を選択します。

Amazon DocumentDB がクラスターをプロビジョニングしています。完了するまでに数分かかることがあります。クラスターとインスタンスの両方のステータスが「利用可能」と表示されたら、クラスターに接続できます。Amazon DocumentDB がクラスターをプロビジョニングしている間に、残りの手順を実行して、Amazon DocumentDB クラスターに接続します。

4.mongo シェルのインストール

4.1 – AWS Cloud9 環境がまだ開いている場合は、ステップ 3 にスキップできます。

4.2 – AWS Cloud9 マネジメントコンソールの [使用環境] で、[DocumentDBCloud9] を選択します。

4.3 – [IDE を開く] を選択します。

4.4 – コマンドプロンプトで、次のコードを使用してリポジトリファイルを作成します。

echo -e "[mongodb-org-3.6] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc" | sudo tee /etc/yum.repos.d/mongodb-org-3.6.repo

4.5 – 完了したら、次のコードを使用して mongo シェルをインストールします。

sudo yum install -y mongodb-org-shell

4.6 – 送信中のデータを暗号化するには、Amazon DocumentDB の CA 証明書をダウンロードします。以下のコードをご覧ください。

wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

4.7 – これで、Amazon DocumentDB クラスターに接続する準備ができました。

5.Amazon DocumentDB クラスターに接続する

5.1 – Amazon DocumentDB マネジメントコンソールの [クラスター] で、クラスターを見つけます。この投稿では、クラスター docdb-2020-02-08-14-15-11 を使用します。

getting-started-amazon-documentdb-with-aws-cloud9-13

5.2 – クラスター識別子 (この例では docdb-2020-02-08-14-15-11) をクリックして、作成したクラスターを選択します。

5.3 – 「mongo シェルでこのクラスターに接続する」で提供されている接続文字列をコピーします。

<insertYourPassword> を省略して、接続時に mongo シェルによってパスワードの入力を求められるようにします。これにより、パスワードをクリアテキストで入力を行う必要がなくなります。

getting-started-amazon-documentdb-with-aws-cloud9-14

5.4 – 接続文字列は次のコードのようになります (スクリーンショットを参照)。

getting-started-amazon-documentdb-with-aws-cloud9-15

5.5 – パスワードを入力して rs0:PRIMARY> プロンプトが表示されると、Amazon DocumentDB クラスターに正常に接続されているということです。

トラブルシューティングについては、Amazon DocumentDB のトラブルシューティングを参照してください。

6.データの挿入とクエリ

6.1 - これでクラスターに接続されたので、ドキュメントデータベースの使用に慣れるためにいくつかのクエリを実行できます。

ドキュメントを 1 つ挿入するには、次のコードを入力します。

db.collection.insert({"hello":"DocumentDB"})

以下の出力が表示されます。

WriteResult({ "nInserted" : 1 })

6.2 - 作成したドキュメントでは 1 つのドキュメントしか返されないため、findOne() コマンドで読み取ることができます。以下のコードをご覧ください。

db.collection.findOne()

以下の出力が表示されます。

{ "_id" : ObjectId("5e401fe56056fda7321fbd67"), "hello" : "DocumentDB" }

6.3 - いくつかのクエリを追加で実行するには、ゲームプロファイルの使用例を検討してください。まず、プロファイルというタイトルのコレクションにいくつかのエントリを挿入します。以下のコードをご覧ください。

db.profiles.insertMany([

{ "_id" : 1, "name" : "Tim", "status": "active", "level": 12, "score":202},

{ "_id" : 2, "name" : "Justin", "status": "inactive", "level": 2, "score":9},

{ "_id" : 3, "name" : "Beth", "status": "active", "level": 7, "score":87},

{ "_id" : 4, "name" : "Jesse", "status": "active", "level": 3, "score":27}

])

以下の出力が表示されます。

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4 ] }

6.4 - find() コマンドを使用して、プロファイルコレクション内のすべてのドキュメントを返します。以下のコードをご覧ください。

db.profiles.find()

以下の出力が表示されます。

{ "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 202 }

{ "_id" : 2, "name" : "Justin", "status" : "inactive", "level" : 2, "score" : 9 }

{ "_id" : 3, "name" : "Beth", "status" : "active", "level" : 7, "score" : 87 }

{ "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3,

6.5 - フィルターを使用して 1 つのドキュメントのクエリを使用します。以下のコードをご覧ください。

db.profiles.find({name: "Jesse"})

以下の出力が表示されます。

{ "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3, "score" : 27 }

6.6 - ゲームの一般的な使用例では、指定ユーザーのプロファイルを見つけて、ユーザーのプロファイルの値を増分します。このシナリオでは、上位のアクティブなゲーマーに対してプロモーションを実行します。ゲーマーがアンケートに応答すると、スコアが +10 増加します。

そのためには、findAndModify コマンドを使用します。この使用例では、ユーザー Tim がアンケートを完了しました。Tim にスコアのクレジットを付与するには、次のコードを入力します。

db.profiles.findAndModify({

   query: { name: "Tim", status: "active"},

   update: { $inc: { score: 10 } }

})

以下の出力が表示されます。

{

      "_id" : 1,

      "name" : "Tim",

      "status" : "active",

      "level" : 12,

      "score" : 202

}

6.7 - 次のクエリで結果を確認できます。

db.profiles.find({name: "Tim"})

以下の出力が表示されます。

{ "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 212 }

7.まとめ

チュートリアルを完了したら、Amazon DocumentDB クラスターを停止して費用を削減するか、クラスターを完全に削除します。

デフォルトでは、30 分間操作を行わないと、AWS Cloud9 環境が基になる EC2 インスタンスを停止して費用を節約します。

 

お疲れ様でした。

このチュートリアルでは、AWS Cloud9 環境を作成して Amazon DocumentDB を使用する方法を示しました。

mongo シェルをインストールし、Amazon DocumentDB クラスターを作成し、クラスターに接続し、いくつかのクエリを実行して、Amazon DocumentDB 内に JSON ドキュメントを挿入してクエリするまでの操作をいかに簡単に行えるかを確認できました。

Amazon DocumentDB (MongoDB 互換) は高速でスケーラブルかつ高可用性の完全マネージド型ドキュメントデータベースサービスです。MongoDB のワークロードをサポートし、JSON データの保存、クエリ、インデックス作成を容易にします。

このチュートリアルは役に立ちましたか?

ありがとうございます
このチュートリアルで良かった点をお聞かせください。
ご期待に添えず申し訳ありません
古い説明、わかりにくい説明、間違った説明はございませんでしたか? このチュートリアルの改善のために、ぜひフィードバックをお寄せください。