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

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

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

このセクションでは、初めてのエラスティッククラスターを作成してクエリする方法を順を追って説明します。エラスティッククラスターに接続して開始する方法は複数あります。このガイドでは、AWS Cloud9 というウェブベースのターミナルを利用して、 AWS Management Console から直接 mongo シェルを使用して Amazon DocumentDB クラスターに接続してクエリします。

セットアップ

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. [Attach existing policies directly ( 既存のポリシーを直接アタッチ )] を選択します。

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

  7. [Next: レビュー] と表示されている青いボタンをクリックします。

  8. [アクセス許可の追加] となっている下の青いボタンをクリックします。

Amazon VPC (Amazon Virtual Private Cloud) を作成する

このステップは、デフォルトの Amazon VPC がない場合にのみ必要です。デフォルトの VPC がない場合は、「Amazon VPC のユーザーガイド」の「Amazon VPC の開始方法」のステップ 1 を完了させます。これには 5 分もかかりません。

ステップ 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 は、ライターインスタンスが 1 つあり、追加のインスタンスは読み取りや可用性の向上に使用できるレプリカであることを意味します。

    3. シャード容量 フィールドで、各シャードインスタンスに関連付ける仮想 CPUs (vCPUs) の数を選択します。シャードインスタンスあたりの vCPUs の最大数は 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. Backup セクションで、バックアップ要件に従ってフィールドを編集します。

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

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

      1. バックアップの作成時間と期間を設定する場合は、ウィンドウの選択を選択します。

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

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

      2. Amazon DocumentDB でバックアップの作成日時を選択する場合は、「設定なし」を選択します。

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

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

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

Using the AWS CLI

を使用して Elastic クラスターを作成するには 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 - オプションです。自動バックアップが作成される毎日の優先時間範囲。デフォルトは、各 について 8 時間の時間ブロックからランダムに選択された 30 分の時間枠です AWS リージョン。

  • --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: AWS Cloud9 環境を作成する

AWS Cloud9 は、mongo シェルを使用して Amazon DocumentDB エラスティッククラスターに接続してクエリするために使用できるウェブベースのターミナルを提供します。

注記

注: AWS Cloud9 環境はインスタンスと同じセキュリティグループに存在する必要があります。セキュリティグループは Amazon EC2 コンソールで変更できます。

  1. AWS アカウントを使用して にアクセスしますAWS Management Console

  2. AWS Cloud9 コンソールに移動します。[検索] フィールドに「Cloud9」と入力して検索できます。

  3. AWS Cloud9 環境のホームページで、[環境の作成] を選択します。

  4. [環境名] ページの [名前] フィールドに、任意の名前を入力します。

    [次のステップ] を選択します。

    
      図: Cloud9 の名前
  5. [環境タイプ] セクションの [環境設定] で、[環境用の新しい EC2 インスタンスを作成(直接アクセス)] を選択します。

    [インスタンスタイプ] セクションで、ネットワークに応じた適切なインスタンスタイプを選択します。

    [プラットフォーム] セクションで [Amazon Linux 2(推奨)] を選択します。

    
      図: Cloud9 の環境設定
  6. [Network settings (advanced)] (ネットワーク設定 (高度)) を展開します。

    エラスティッククラスターの作成時に使用した VPC とサブネットの 1 つを選択します。

    [次のステップ] を選択します。

    
      図: Cloud9 のネットワーク設定
  7. AWS Cloud9 設定を確認します。

    設定が正しければ、[環境の作成] を選択します。

ステップ 3: mongo シェルをインストールする

AWS Cloud9 環境の準備ができたら、クラスターに接続する準備が整います。次に、ステップ 3 で作成した AWS Cloud9 環境に mongo シェルをインストールします。mongo シェルは、DocumentDB クラスターを接続してクエリするために使用するコマンドラインユーティリティです。

AWS Cloud9 環境がまだステップ 3 から開いている場合は、その環境に戻り、手順 3 に進みます。 AWS Cloud9 環境から移動した場合は、 AWS Cloud9 コンソールの環境 で、前のステップで設定した名前でラベル付けされた環境を見つけます。[IDE を開く] を選択します。

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

    echo -e "[mongodb-org-4.0] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/4.0/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-4.0.repo
  2. 完了したら、次のコマンドで mongo シェルをインストールします。

    sudo yum install -y mongodb-org-shell

ステップ 4: 新しいエラスティッククラスターに接続する

ステップ 4 でインストールした mongo シェルを使用してクラスターに接続します。

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

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

    
       図: エラスティッククラスターの接続画面
  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 }