Amazon DocumentDB エラスティッククラスターの開始方法 - Amazon DocumentDB

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

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 アカウントにサインアップするには
  1. https://portal.aws.amazon.com/billing/signup を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話キーパッドで検証コードを入力するように求められます。

    AWS アカウント にサインアップすると、AWS アカウントのルートユーザー が作成されます。ルートユーザーには、アカウントのすべてのAWS のサービスとリソースへのアクセス権があります。セキュリティのベストプラクティスとして、ユーザーに管理アクセスを割り当て、ルートユーザーのみを使用してルートユーザーアクセスが必要なタスクを実行してください。

必要な AWS Identity and Access Management (IAM) アクセス許可を設定します。

クラスター、インスタンス、クラスターパラメータグループなどの Amazon DocumentDB リソースを管理するためのアクセスでは、リクエストの認証に AWS が使用できる認証情報が必要です。詳細については、「Amazon DocumentDB の Identity and Access Management」を参照してください。

  1. AWS Management Console の検索バーで、IAM と入力し、表示されるドロップダウンメニューから [IAM] を選択します。

  2. IAM コンソールにアクセスしたら、ナビゲーションペインから [ユーザー] を選択します。

  3. ユーザーネームを選択します。

  4. [アクセス許可の追加] ボタンをクリックします。

  5. [ポリシーを直接アタッチする] を選択します。

  6. 検索バーに AmazonDocDBFullAccess と入力し、検索結果に表示されたら、それを選択します。

  7. [次へ] ボタンをクリックします。

  8. [アクセス許可の追加] ボタンをクリックします。

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 を使用してエラスティッククラスタースナップショットを手動で作成する方法とその手順を説明します。

Using the AWS Management Console

AWS Management Console を使用して エラスティッククラスター設定を作成するには、以下の手順に従います。

  1. AWS Management Console にサインインし、Amazon DocumentDB コンソールを開きます。

  2. Amazon DocumentDB マネジメントコンソール[クラスター][作成] を選択します。

    図: エラスティッククラスターの作成
  3. [Amazon DocumentDB クラスターの作成] ページの [クラスタータイプ] セクションで、[エラスティッククラスター] を選択します。

    図: エラスティッククラスターのタイプ
  4. [Amazon DocumentDB クラスターの作成] ページの [設定] セクションで、一意のクラスター識別子を入力します (フィールドの下の命名要件に従います)。

    図: エラスティッククラスターの識別子
  5. シャード設定フィールドの場合:

    1. [シャード数] フィールドに、クラスターに必要なシャードの数を入力します。クラスターあたりのシャードの最大数は 32 です。

      注記

      シャードごとに 2 つのノードが展開されます。両方のノードのシャード容量は同じになります。

    2. [シャードインスタンス数] フィールドで、各シャードに関連付けるレプリカインスタンスの数を選択します。シャードインスタンスの最大数は 16 で、1 刻みで設定できます。すべてのレプリカインスタンスのシャード容量は、次のフィールドで定義するものと同じになります。

      注記

      レプリカインスタンスの数は、Elastic クラスター内のすべてのシャードに適用されます。シャードインスタンス数の値が 1 の場合、ライターインスタンスが 1 つあり、それ以外の追加のインスタンスはすべてレプリカで、読み取りや可用性の向上に使用できます。

    3. [シャード容量] フィールドで、各シャードインスタンスに関連付ける仮想 CPU (vCPU) の数を選択します。1 シャードインスタンスあたりの vCPU の最大数は 64 です。使用できる値は、2、4、8、16、32、64 です。

    図: エラスティッククラスターのシャードの数と容量
  6. [仮想プライベートクラウド (VPC)] フィールドのドロップダウンリストから VPC を選択します。

    [サブネット][VPC セキュリティグループ] では、デフォルトを使用するか、選択した 3 つのサブネットと最大 3 つの VPC セキュリティグループ (最低 1 つ) を選択できます。

    図: エラスティッククラスターの VPC とサブネット
  7. [認証] セクションの [ユーザー名] フィールドで、プライマリユーザーのログイン名を示す文字列を入力します。

    [パスワード] フィールドに、指示に従った一意のパスワードを入力します。

    図: エラスティッククラスターのユーザー名とパスワード
  8. [暗号化] セクションは、デフォルト設定をそのまま使用します。

    必要に応じて、作成した AWS KMS key ARN を入力できます。詳細については、「Amazon DocumentDB エラスティッククラスターで保管中のデータ暗号化」を参照してください。

    重要

    エラスティッククラスターでは暗号化を有効にする必要があります。

  9. [バックアップ] セクションで、該当するバックアップ要件に従ってフィールドを編集します。

    バックアップウィンドウを設定するステップを示すバックアップペインのスクリーンショット。
    1. [バックアップ保持期間] - リストで、このクラスターの自動バックアップを削除するまで保持する日数を選択します。

    2. [バックアップウィンドウ] - Amazon DocumentDB によってこのクラスターのバックアップが作成される毎日の時刻と期間を設定します。

      1. バックアップの作成タイミングと期間を設定したい場合は、[ウィンドウを選択] を選択します。

        [開始時刻] - 最初のリストで、自動バックアップを開始する時間 (UTC 時) を選択します。2 番目のリストで、自動バックアップを開始する時間 (UTC 分) を選択します。

        [期間] - リストで、自動バックアップの作成に割り当てる時間を選択します。

      2. Amazon DocumentDB 動作に従ってバックアップの作成タイミングや期間を自動選択する場合は、[設定なし] を選択します。

  10. [メンテナンス] セクションで、クラスターに変更やパッチを適用する日と時間、期間を選択します。

    図: エラスティッククラスターのユーザー名とパスワード
  11. [クラスターを作成] を選択します。

エラスティッククラスターは現在プロビジョニング中です。このプロセスには数分かかることがあります。[クラスター] リストに エラスティッククラスターのステータスが active と表示されている場合は、クラスターに接続できます。

Using the AWS CLI

AWS CLI を使用してクラスタースナップショットを作成するには、以下のパラメータを指定して create-cluster オペレーションを実行します。

  • --cluster-name — 必須 作成時に入力した、または最終変更時のエラスティックスケールクラスターの現在の名前。

  • --shard-capacity — 必須 各シャードに割り当てられた vCPU の数。最大数は 64 です。使用できる値は、2、4、8、16、32、64 です。

  • --shard-count — 必須 クラスターに割り当てられたシャードの数。最大数は 32 です。

  • --shard-instance-count - オプションです。このクラスター内のすべてのシャードに適用されるレプリカインスタンスの数。最大数は 16 です。

  • --admin-user-name — 必須 管理者ユーザーに関連付けられているユーザー名。

  • --admin-user-password — 必須 管理者ユーザーに関連付けられているパスワード。

  • --auth-type — 必須 エラスティッククラスターへのアクセスに使用するパスワードの取得先の特定に使用している認証タイプ。有効なタイプは、PLAIN_TEXT または SECRET_ARN です。

  • --vpc-security-group-ids - オプションです。このクラスターに関連付ける EC2 VPC セキュリティグループのリストを設定します。

  • --preferred-maintenance-window - オプションです。週 1 回のシステムメンテナンスを実行できる時間帯 (世界標準時 (UTC)) を設定します。

    形式は ddd:hh24:mi-ddd:hh24:mi です。有効な曜日 (ddd): 月、火、水、木、金、土、日

    デフォルトは、1 週間のうちのランダムな日に起こる、Amazon Web Services リージョンあたり 8 時間の範囲からランダムに選択された 30 分のウィンドウです。

    最短 30 分のウィンドウ。

  • --kms-key-id - オプションです。暗号化されたクラスターの KMS キー識別子を設定します。

    KMS キー識別子は、AWS KMS 暗号化キーの Amazon リソースネーム (ARN) です。新しいクラスターの暗号化に使用する KMS 暗号化キーを所有する Amazon Web Services アカウントと同じアカウントを使用してクラスターを作成する場合、KMS 暗号化キーの ARN の代わりに KMS キーエイリアスを使用できます。

    KmsKeyId で暗号化キーが指定がなく、かつ StorageEncrypted パラメータが true の場合、Amazon DocumentDB はデフォルトの暗号化キーを使用します。

  • --preferred-backup-window - オプションです。毎日自動バックアップを作成する希望の時間帯。デフォルトは、AWS リージョンごとに 8 時間の範囲からランダムに選択された、30 分の時間枠です。

  • --backup-retention-period - オプション。自動バックアップを保管する日数。デフォルト値は 1 です。

  • --storage-encrypted - オプションです。クラスターが暗号化されているかどうかを設定します。

    --no-storage-encrypted はクラスターが暗号化されていない指定です。

  • --subnet-ids - オプションです。ネットワークのサブネット ID を設定します。

次の例では、各 ユーザー入力プレースホルダー を独自の情報に置き換えます。

注記

以下の例には、特定の KMS キーの作成例が含まれています。デフォルトの KMS キーを使用するには、--kms-key-id パラメータを含めないでください。

Linux、macOS、Unix の場合:

aws docdb-elastic create-cluster \ --cluster-name sample-cluster-123 \ --shard-capacity 8 \ --shard-count 4 \ --shard-instance-count 3 \ --auth-type PLAIN_TEXT \ --admin-user-name testadmin \ --admin-user-password testPassword \ --vpc-security-group-ids ec-65f40350 \ --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 \ --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \ --preferred-backup-window 18:00-18:30 \ --backup-retention-period 7

Windows の場合:

aws docdb-elastic create-cluster ^ --cluster-name sample-cluster-123 ^ --shard-capacity 8 ^ --shard-count 4 ^ --shard-instance-count 3 ^ --auth-type PLAIN_TEXT ^ --admin-user-name testadmin ^ --admin-user-password testPassword ^ --vpc-security-group-ids ec-65f40350 ^ --kms-key-id arn:aws:docdb-elastic:us-east-1:477568257630:cluster/b9f1d489-6c3e-4764-bb42-da62ceb7bda2 ^ --subnet-ids subnet-9253c6a3, subnet-9f1b5af9 \ --preferred-backup-window 18:00-18:30 \ --backup-retention-period 7

ステップ 2: インバウンド接続を有効にする

Amazon DocumentDB クラスターへのアクセスは、関連づけされたセキュリティグループによって制御されます。このステップでは、Amazon DocumentDB セキュリティグループを変更して、Elastic クラスターで設定されたポート (デフォルト 27017) を介した Amazon EC2 インスタンスからの通信を許可します。

  1. Amazon DocumentDB マネジメントコンソールで、[クラスター] の下にあるお客様のクラスターを選択します。

    1. クラスター識別子をクリックして、作成したクラスターを選択します。

    2. [接続とセキュリティ] タブの [セキュリティ] セクションで、[VPC セキュリティグルループ] を選択します。

      これにより、Amazon EC2 管理コンソールの[セキュリティグループ] リストが開きます。または、Amazon EC2 管理コンソールにアクセスし、[ネットワークおよびセキュリティ] セクションで [セキュリティグループ] を選択します。

    3. [Amazon DocumentDB] のセキュリティグループ (デフォルト) を選択します。

    イメージ: Amazon DocumentDB セキュリティグループリスト
  2. [インバウンドルール] タブ (必要に応じてウィンドウの一番下までスクロールして探してください) を選択し、[インバウンドルールの編集] を選択します。

    イメージ: Amazon EC2 のインバウンドルールダイアログ
  3. [インバウンドのルールの編集] ダイアログボックスで、[ルールの追加] をクリックします。

    1. [ポート範囲] には、27017 を入力します。

    2. [ソース][カスタム] のままにして、前提条件 での EC2 インスタンス作成時にメモしておいたセキュリティグループ値を検索します。

    3. [Save Rules] (ルールの保存) を選択します。

    イメージ: Amazon EC2 のインバウンドルール編集ダイアログ

ステップ 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 シェルを使用してクラスターに接続します。

  1. Amazon DocumentDB マネジメントコンソールの [クラスター] でクラスターがある場所を確認します。ロール別にソートして、エラスティッククラスターというロールを持つすべてのクラスターを表示します。

    図: エラスティッククラスターのリスト画面
  2. クラスター識別子をクリックして、作成したクラスターを選択します。[接続とセキュリティ] からエンドポイントをコピーして、Amazon EC2 インスタンスに貼り付けます。

    図: エラスティッククラスターの接続画面
  3. 接続されると、次のような出力が表示されます。

    図: エラスティッククラスターの最終的な接続画面

ステップ 5: コレクションをシャーディングし、データを挿入してクエリする

エラスティッククラスターでは Amazon DocumentDB でのシャーディングのサポートが追加されています。クラスターに接続できたので、クラスターをシャーディングし、データを挿入して、クエリを実行できます。

  1. コレクションをシャーディングするには、次のように入力します。

    sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })

  2. 1 つのドキュメントを挿入するには、次のように入力します。

    db.Employee1.insert({"Employeeid":1, "Name":"Joe", "LastName": "Bruin", "level": 1 })

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

    WriteResult({ "nInserted" : 1 })

  3. findOne() コマンドで書き込んだドキュメントを読み取るには、 コマンドを入力します (コマンドから一つのドキュメントが返される)。

    db.Employee1.findOne()

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

    { "_id" : ObjectId("61f344e0594fe1a1685a8151"), "EmployeeID" : 1, "Name" : "Joe", "LastName" : "Bruin", "level" : 1 }
  4. さらにクエリを実行するには、ゲームプロファイルのユースケースを検討してみてください。最初に、「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 ] }

  5. プロファイルコレクション内のすべてのドキュメントを取得するには、find() コマンドを使用します。

    db.Employee1.find()

    ステップ 4 で入力したデータが表示されます。

  6. 1 つのドキュメントに対してクエリを発行するには、フィルター (「Katie」など) を含めます。次のように入力します。

    db.Employee1.find({name: "Katie"})

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

    { "_id" : 4, "name" : "Katie", "lastname": "Schaper", "level": 3}

  7. プロファイルを見つけて変更するには、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, }
  8. レベルが上がったことを確認するには、次のクエリを入力します。

    db.Employee1.find({name: "Matt"})

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

    { "_id" : 1, "name" : "Matt", "lastname" : "winkle", "level" : 14 }