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

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

開始使用 Amazon DocumentDB 彈性叢集

本入門章節將逐步說明如何建立和查詢第一個彈性叢集。連接和開始使用彈性叢集的方法有很多種。本指南使用 Amazon Elastic Compute Cloud (Amazon EC2) 直接從 連線和查詢 Amazon DocumentDB 彈性叢集 AWS Management Console。

設定

如果您想要透過建立與 Amazon 執行個體的連線,從本機機器連線至 Amazon DocumentDB,請參閱與 Amazon 連線EC2。 SSH EC2

必要條件

建立第一個 Amazon DocumentDB 叢集之前,您必須執行下列動作:

建立 Amazon Web Services (AWS) 帳戶

您必須先擁有 Amazon Web Services () 帳戶,才能開始使用 Amazon DocumentDB 。AWS AWS 帳戶是免費的。您僅需按使用的服務和資源量付費。

如果您沒有 AWS 帳戶,請完成下列步驟以建立 。

若要註冊 AWS 帳戶
  1. 開啟https://portal.aws.amazon.com/billing/註冊

  2. 請遵循線上指示進行。

    部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。

    當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務

設定所需的 AWS Identity and Access Management (IAM) 許可。

管理叢集、執行個體和叢集參數群組等 Amazon DocumentDB 資源的存取權,需要 AWS 可用於驗證請求的憑證。如需詳細資訊,請參閱Amazon DocumentDB 的身分和存取管理

  1. 在 的搜尋列中 AWS Management Console,輸入 IAM,然後在下拉式選單IAM中選取 。

  2. 進入IAM主控台後,請從導覽窗格中選取使用者

  3. 選取您的使用者名稱。

  4. 按一下 按鈕 新增許可

  5. 選取直接連接政策

  6. 在搜尋列AmazonDocDBFullAccess中輸入 ,並在搜尋結果中出現時選取它。

  7. 按一下下一步按鈕。

  8. 按一下新增許可按鈕。

建立 Amazon Virtual Private Cloud (Amazon VPC)

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. 碎片執行個體計數欄位中,選擇您希望與每個碎片相關聯的複本執行個體數量。碎片執行個體的最大數量為 16,以 1 為增減單位。所有複本執行個體具有與下列欄位中定義的相同碎片容量。

      注意

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

    3. 碎片容量欄位中,選擇您希望與每個碎片執行個體相關聯的虛擬 CPUs(vCPUs) 數量。 vCPUs 每個碎片執行個體的最大數量為 64。允許的值為 2、4、8、16、32、64。

    圖表:彈性叢集碎片編號和容量
  6. 虛擬私有雲端 (VPC) 欄位中,VPC從下拉式清單中選擇 。

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

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

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

    圖表:彈性叢集使用者名稱和密碼
  8. 加密區段中,保留預設設定。

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

    重要

    必須為彈性叢集啟用加密。

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

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

    2. 備份時段 — 設定 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- 選用。設定要與此叢集建立關聯的EC2VPC安全群組清單。

  • --preferred-maintenance-window- 選用。以通用協調時間 () 設定系統維護可以發生的每週時間範圍UTC。

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

    預設值是 30 分鐘的時段,從每個 Amazon Web Services 區域的 8 小時時段中隨機選取,該時段在一週的隨機日期進行。

    最短 30 分鐘時段。

  • --kms-key-id- 選用。設定加密叢集的KMS金鑰識別符。

    KMS 金鑰識別符是 AWS KMS 加密金鑰的 Amazon Resource Name (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。

在下列範例中,取代每個 user input placeholder 使用您自己的資訊。

注意

下列範例包括建立特定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 安全群組,以允許透過使用彈性叢集設定的連接埠從 Amazon EC2執行個體進行通訊 (預設 27017)。

  1. 在 Amazon DocumentDB 管理主控台的叢集 下,找到您的叢集。

    1. 按一下叢集識別符,選擇您建立的叢集。

    2. 連線與安全索引標籤的安全區段中,選擇VPC安全群組

      這會開啟 Amazon EC2管理主控台安全群組清單。或者,您也可以存取 Amazon EC2管理主控台,從網路和安全區段中選取安全群組

    3. 選擇 Amazon DocumentDB (預設 ) 安全群組。

    圖片:Amazon DocumentDB 安全群組清單
  2. 選擇傳入規則索引標籤 (您可能需要捲動至視窗底部),然後選擇編輯傳入規則。

    映像:Amazon EC2 傳入規則對話方塊
  3. 編輯傳入規則對話方塊中,選取新增規則

    1. 對於連接埠範圍 ,輸入 27017

    2. 來源保留為自訂,並搜尋您在 中建立的EC2執行個體記錄的安全群組值必要條件

    3. 選擇儲存規則

    映像:Amazon EC2 編輯傳入規則對話方塊

步驟 3:安裝 mongo shell

將 mongo shell 安裝在您在 中建立的 Amazon EC2執行個體中必要條件。mongo Shell 是命令列公用程式,用於連接和查詢彈性叢集。

連線至您的 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 shell:

sudo yum install -y mongodb-org-shell

步驟 4:連線至新的彈性叢集

使用您在步驟 2 中安裝的 mongo shell 連線到叢集。

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

    圖表:彈性叢集清單畫面
  2. 選取叢集識別符,以選擇您建立的叢集。從連線與安全 複製您的端點,並將其貼到您的 Amazon EC2執行個體。

    圖表:彈性叢集連線畫面
  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. 若要執行其他一些查詢,請考慮遊戲設定檔使用案例。首先,在名為 "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. 若要查詢單一文件,請包含篩選條件 (例如:"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 }