開始使用 Amazon DocumentDB 彈性叢集 - Amazon DocumentDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用 Amazon DocumentDB 彈性叢集

此入門章節將逐步說明如何建立和查詢您的第一個彈性叢集。有許多方法可以連接並開始使用彈性叢集。本指南使用AWS Cloud9一個基於 Web 的終端機來連接和查詢您的彈性集群使用 mongo shell 直接 AWS Management Console從.

設定

如果您想要透過建立與 Amazon EC2 執行個體的 SSH 連線,從本機電腦連線到 Amazon DocumentDB,請參閱使用 Amazon 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 服務 和資源。安全性最佳做法是將管理存取權指派給使用者,並僅使用 root 使用者來執行需要 root 使用者存取權的工作。

設定所需的 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 Virtual Private Cloud(Amazon VPC)

只有在您還沒有預設的 Amazon VPC 時,才需要執行此步驟。如果不這樣做,請完成 Amazon VPC 使用者指南中的 Amazon VPC 入門步驟 1。這將需要不到五分鐘。

步驟 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. 在 [碎片執行個體計數] 欄位中,選擇要與每個碎片產生關聯的複本執行個體數目。碎片執行個體的最大數目為 16,以 1 為增量。所有複本執行個體都具有與下列欄位中定義的相同碎片容量。

      注意

      複本執行個體的數目會套用至彈性叢集中的所有碎片。碎片執行個體計數值為 1 表示有一個寫入器執行個體,而任何其他執行個體都是可用於讀取和改善可用性的複本。

    3. 在 [碎片容量] 欄位中,選擇要與每個碎片執行個體產生關聯的虛擬 CPU (vCPUs) 數目。每個碎片執行個體的 vCPUs 數目上限為 64 個。允許的值為 2、4、8、16、32、64。

    圖:彈性群集碎片數量和容量
  6. 在「V irtual Private Cloud (VPC)」欄位中,從下拉式清單中選擇 VPC。

    對於子網路VPC 安全群組,您可以使用預設值或選取三個您選擇的子網路和最多三個 VPC 安全群組 (至少一個)。

    圖表:彈性叢集 VPC 和子網路
  7. 在「驗證」段落中,在「使用者名稱」欄位中輸入識別主要使用者登入稱的字串。

    在「密碼」欄位中,輸入符合指示的唯一密碼。

    圖:彈性群集用戶名和密碼
  8. 在「加」區段中,保留預設設定。

    或者,您可以輸入您建立的 AWS KMS key ARN。如需詳細資訊,請參閱 Amazon DocumentDB Elastic Clusters 的靜態靜態資料加密

    重要

    彈性叢集必須啟用加密。

  9. 在「Backup」區段中,根據您的備份需求編輯欄位。

    備份窗格的螢幕擷取畫面,顯示設定叢集備份時段的步驟。
    1. Backup 保留期間:在清單中,選擇在刪除叢集之前保留自動備份的天數。

    2. Backup 時段 — 設定 Amazon DocumentDB 要備份此叢集的每日時間和持續時間。

      1. 如果您要設定建立備份的時間和持續時間,請選擇「選取視窗」

        開始時間 — 在第一個清單中,選擇開始時間小時 (UTC) 以開始自動備份。在第二個清單中,選擇您要自動備份開始進行的時間 (分)。

        持續時間 — 在清單中,選擇要分配給建立自動備份的小時數。

      2. 如果您希望 Amazon DocumentDB 選擇建立備份時的時間和持續時間,請選擇無偏好設定。

  10. 在「維護」段落中,選擇將修改或修正程式套用至叢集的日期、時間和持續時間。

    圖:彈性群集用戶名和密碼
  11. 選擇建立叢集

現在已佈建彈性叢集。這可能需要幾分鐘才能完成。當彈性叢集狀態顯示為 [叢集] 清單active中時,您可以連線到集。

Using the AWS CLI

若要使用建立彈性叢集 AWS CLI,請使用具有下列參數的create-cluster作業:

  • --cluster-name - 必要項目。在建立或上次修改期間輸入的彈性縮放叢集的目前名稱。

  • --shard-capacity - 必要項目。指派給每個碎片的 vCPUs 數目。最大值為 64 個。允許的值為 2、4、8、16、32、64。

  • --shard-count - 必要項目。指派給叢集的碎片數目。最大值為 32。

  • --shard-instance-count選擇性。套用至此叢集中所有碎片的複本執行個體數目。最大值為 16。

  • --admin-user-name - 必要項目。與管理員使用者關聯的使用者名稱。

  • --admin-user-password - 必要項目。與管理員使用者相關聯的密碼。

  • --auth-type - 必要項目。用來決定從何處擷取用於存取彈性叢集之密碼的驗證類型。有效類型為PLAIN_TEXTSECRET_ARN

  • --vpc-security-group-ids選擇性。設定要與此叢集關聯的 EC2 VPC 安全群組清單。

  • --preferred-maintenance-window選擇性。以世界協調時間 (UTC) 為單位,設定可進行系統維護的每週時間範圍。

    格式為:ddd:hh24:mi-ddd:hh24:mi。有效日期(ddd):星期一,星期二,星期三,星期四,星期五,星期六,星期日

    預設值為每個 Amazon Web Services 區域的 8 小時時段隨機選取 30 分鐘的時段,每週的隨機日期發生。

    最少 30 分鐘的窗口。

  • --kms-key-id選擇性。設定加密叢集的 KMS 金鑰識別碼。

    KMS 金鑰識別碼是 AWS KMS 加密金鑰的 Amazon 資源名稱 (ARN)。如果您使用擁有用於加密新叢集的 KMS 加密金鑰的相同 Amazon Web Services 帳戶建立叢集,則可以使用 KMS 金鑰別名而非 ARN 作為 KMS 加密金鑰。

    如果未在中指定加密金鑰, KmsKeyId 且StorageEncrypted參數為真,Amazon DocumentDB 會使用您的預設加密金鑰。

  • --preferred-backup-window選擇性。建立自動備份的每日偏好時間範圍。預設值為 30 分鐘的視窗,每 AWS 區域個視窗從 8 小時的時間段中隨機選取。

  • --backup-retention-period選擇性。自動備份保留的天數。預設值為 1。

  • --storage-encrypted選擇性。設定叢集是否已加密。

    --no-storage-encrypted指定叢集未加密。

  • --subnet-ids選擇性。設定網路子網路識別碼。

在下列範例中,將每個使用者輸入預留位置取代為您自己的資訊。

注意

下列範例包括建立特定 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 提供一個基於 Web 的終端機,您可以使用蒙戈殼層連接和查詢您的 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 和您在建立彈性叢集時使用的其中一個子網路。

    選擇 下一個步驟

    圖表:Cloud9 網路設定
  7. 檢閱您的 AWS Cloud9 組態。

    如果您的組態正確,請選擇 [建立環境]。

第 3 步:安裝蒙戈外殼

一旦您的 AWS Cloud9 環境準備就緒,您就可以連線到叢集了。接下來,在您在步驟 3 中創建的 AWS Cloud9 環境中安裝 mongo 外殼。mongo shell 是一個命令行實用程序,用於連接和查詢彈性集群。

如果您的 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:Connect 到新的彈性叢集

使用您在步驟 4 中安裝的 mongo 外殼 Connect 到您的叢集。

  1. 在 Amazon DocumentDB 理主控台的叢集下,找到您的叢集。依角色排序,以顯示具有彈性叢集角色的所有叢集

    圖:彈性集群列表畫面
  2. 選取叢集識別碼以選擇您建立的叢集。從連線和安全性,複製您的端點並將其貼到您的 AWS Cloud9 環境中。

    圖:彈性集群連接屏
  3. 連接後,您應該會看到以下輸出:

    圖:最終彈性集群連接屏

第 5 步:分片您的收藏; 插入和查詢數據

彈性群集增加了對 Amazon DocumentDB 中的分片支持。現在您已連接到叢集,您可以分片叢集、插入資料並執行一些查詢。

  1. 若要分片集合,請輸入下列內容:

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

  2. 若要插入單一文件,請輸入下列內容:

    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. 若要執行更多查詢,請考慮使用遊戲設定檔使用案例。首先,將幾個條目插入到標題為「員工」的集合中。輸入下列資料:

    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. 要查詢單個文檔,請包括一個過濾器(例如:「Katie」)。輸入下列資料:

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

    將顯示以下輸出:

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

  7. 若要尋找輪廓並加以修改,請輸入findAndModify指令。在這個例子中,員工「馬特」被賦予的「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 }