翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DocumentDB エラスティッククラスターの開始方法
このセクションでは、初めてのエラスティッククラスターを作成してクエリする方法を順を追って説明します。エラスティッククラスターに接続して開始する方法は複数あります。このガイドでは、Amazon Elastic Compute Cloud (Amazon EC2) を使用して、AWS Management Consoleから Amazon DocumentDB Elastic クラスターに直接接続してクエリを実行します。
トピック
セットアップ
Amazon EC2 インスタンスへの SSH 接続を作成して、ローカルマシンから Amazon DocumentDB に接続する場合は、「EC2 との接続方法」を参照してください。
前提条件
最初の Amazon DocumentDB クラスターを作成する前に、以下の操作を行う必要があります。
- Amazon Web Services (AWS) アカウントを作成する
-
Amazon DocumentDB を使用する前に、Amazon Web Services (AWS) アカウントを持っている必要があります。AWS アカウントは無料です。使用しているサービスとリソースに対してのみ料金をお支払いいただきます。
AWS アカウント をお持ちでない場合は、以下の手順を実行してアカウントを作成してください。
AWS アカウントにサインアップするには
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。
AWS アカウント にサインアップすると、AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべてのAWS のサービスとリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。
- 必要な AWS Identity and Access Management (IAM) アクセス許可を設定します。
-
クラスター、インスタンス、クラスターパラメータグループなどの Amazon DocumentDB リソースを管理するためのアクセスでは、リクエストの認証に AWS が使用できる認証情報が必要です。詳細については、「Amazon DocumentDB の Identity and Access Management」を参照してください。
-
AWS Management Console の検索バーで、IAM と入力し、表示されるドロップダウンメニューから [IAM] を選択します。
-
IAM コンソールにアクセスしたら、ナビゲーションペインから [ユーザー] を選択します。
-
ユーザーネームを選択します。
-
[アクセス許可の追加] ボタンをクリックします。
-
[ポリシーを直接アタッチする] を選択します。
-
検索バーに
AmazonDocDBFullAccess
と入力し、検索結果に表示されたら、それを選択します。 -
[次へ] ボタンをクリックします。
-
[アクセス許可の追加] ボタンをクリックします。
-
- Amazon VPC (Amazon Virtual Private Cloud) を作成する
-
お使いの AWS アカウントでは、各リージョンごとに デフォルト VPC が含まれます。このステップは、デフォルトの Amazon VPC を使用する場合にのみ必要です。この場合、まず「Amazon VPC ユーザーガイド」の「Amazon VPC の作成」トピックに記載されているステップを実施します。
- Amazon EC2 インスタンスの起動
-
「Amazon Elastic Compute Cloud ユーザーガイド」の「Amazon EC2 の使用開始」トピック内のステップ 1 と 2 を実施します。
注記
Amazon EC2 インスタンス用に作成したセキュリティグループの名前と ID をメモしておきます。
ステップ 1: エラスティッククラスターを作成する
このセクションでは、AWS Management Console または AWS CLI を使用してエラスティッククラスタースナップショットを手動で作成する方法とその手順を説明します。
ステップ 2: インバウンド接続を有効にする
Amazon DocumentDB クラスターへのアクセスは、関連づけされたセキュリティグループによって制御されます。このステップでは、Amazon DocumentDB セキュリティグループを変更して、Elastic クラスターで設定されたポート (デフォルト 27017) を介した Amazon EC2 インスタンスからの通信を許可します。
-
Amazon DocumentDB マネジメントコンソールで、[クラスター] の下にあるお客様のクラスターを選択します。
クラスター識別子をクリックして、作成したクラスターを選択します。
[接続とセキュリティ] タブの [セキュリティ] セクションで、[VPC セキュリティグルループ] を選択します。
これにより、Amazon EC2 管理コンソールの[セキュリティグループ] リストが開きます。または、Amazon EC2 管理コンソールにアクセスし、[ネットワークおよびセキュリティ] セクションで [セキュリティグループ] を選択します。
[Amazon DocumentDB] のセキュリティグループ (デフォルト) を選択します。
-
[インバウンドルール] タブ (必要に応じてウィンドウの一番下までスクロールして探してください) を選択し、[インバウンドルールの編集] を選択します。
-
[インバウンドのルールの編集] ダイアログボックスで、[ルールの追加] をクリックします。
[ポート範囲] には、
27017
を入力します。[ソース] は [カスタム] のままにして、前提条件 での EC2 インスタンス作成時にメモしておいたセキュリティグループ値を検索します。
[Save Rules] (ルールの保存) を選択します。
ステップ 3: mongo シェルをインストールする
前提条件 で作成した Amazon EC2 インスタンスに mongo シェルをインストールします。mongo シェルは、DocumentDB クラスターを接続してクエリするために使用するコマンドラインユーティリティです。
Amazon EC2 インスタンスに接続し、コマンドプロンプトで、次のコマンドを使用してリポジトリファイルを作成します。
echo -e "[mongodb-org-5.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/5.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://pgp.mongodb.com/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
完了したら、次のコマンドで mongo シェルをインストールします。
sudo yum install -y mongodb-org-shell
ステップ 4: 新しいエラスティッククラスターに接続する
ステップ 2 でインストールした mongo シェルを使用してクラスターに接続します。
-
Amazon DocumentDB マネジメントコンソールの [クラスター] でクラスターがある場所を確認します。ロール別にソートして、エラスティッククラスターというロールを持つすべてのクラスターを表示します。
-
クラスター識別子をクリックして、作成したクラスターを選択します。[接続とセキュリティ] からエンドポイントをコピーして、Amazon EC2 インスタンスに貼り付けます。
-
接続されると、次のような出力が表示されます。
ステップ 5: コレクションをシャーディングし、データを挿入してクエリする
エラスティッククラスターでは Amazon DocumentDB でのシャーディングのサポートが追加されています。クラスターに接続できたので、クラスターをシャーディングし、データを挿入して、クエリを実行できます。
-
コレクションをシャーディングするには、次のように入力します。
sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })
-
1 つのドキュメントを挿入するには、次のように入力します。
db.Employee1.insert({"Employeeid":1, "Name":"Joe", "LastName": "Bruin", "level": 1 })
以下のような出力が表示されます。
WriteResult({ "nInserted" : 1 })
-
findOne()
コマンドで書き込んだドキュメントを読み取るには、 コマンドを入力します (コマンドから一つのドキュメントが返される)。db.Employee1.findOne()
以下のような出力が表示されます。
{ "_id" : ObjectId("61f344e0594fe1a1685a8151"), "EmployeeID" : 1, "Name" : "Joe", "LastName" : "Bruin", "level" : 1 }
-
さらにクエリを実行するには、ゲームプロファイルのユースケースを検討してみてください。最初に、「Employee」というタイトルのコレクションにエントリをいくつか挿入します。次のように入力します。
db.Employee1.insertMany([ { "Employeeid" : 1, "name" : "Matt", "lastname": "Winkle", "level": 12}, { "Employeeid" : 2, "name" : "Frank", "lastname": "Chen", "level": 2}, { "Employeeid" : 3, "name" : "Karen", "lastname": "William", "level": 7}, { "Employeeid" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3} ])
以下のような出力が表示されます。
{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4 ] }
-
プロファイルコレクション内のすべてのドキュメントを取得するには、
find
() コマンドを使用します。db.Employee1.find()
ステップ 4 で入力したデータが表示されます。
-
1 つのドキュメントに対してクエリを発行するには、フィルター (「Katie」など) を含めます。次のように入力します。
db.Employee1.find({name: "Katie"})
以下のような出力が表示されます。
{ "_id" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3}
-
プロファイルを見つけて変更するには、
findAndModify
コマンドを入力します。この例では、従業員「Matt」にはより高いレベル「14」が割り当てられています。db.Employee1.findAndModify({ query: { "Employeeid" : 1, "name" : "Matt"}, update: { "Employeeid" : 1, "name" : "Matt", "lastname" : "Winkle", "level" : 14 } })
以下のような出力が表示されます (レベルはまだ変更されていないことに注意してください)。
{ "_id" : 1, "name" : "Matt", "lastname" : "Winkle", "level" : 12, }
-
レベルが上がったことを確認するには、次のクエリを入力します。
db.Employee1.find({name: "Matt"})
以下のような出力が表示されます。
{ "_id" : 1, "name" : "Matt", "lastname" : "winkle", "level" : 14 }