本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
開始使用 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 帳戶
開啟https://portal.aws.amazon.com/billing/註冊
。 請遵循線上指示進行。
部分註冊程序需接收來電,並在電話鍵盤輸入驗證碼。
當您註冊 時 AWS 帳戶,AWS 帳戶根使用者會建立 。根使用者有權存取該帳戶中的所有 AWS 服務 和資源。作為安全最佳實務,請將管理存取權指派給使用者,並且僅使用根使用者來執行需要根使用者存取權的任務。
- 設定所需的 AWS Identity and Access Management (IAM) 許可。
-
管理叢集、執行個體和叢集參數群組等 Amazon DocumentDB 資源的存取權,需要 AWS 可用於驗證請求的憑證。如需詳細資訊,請參閱Amazon DocumentDB 的身分和存取管理。
-
在 的搜尋列中 AWS Management Console,輸入 IAM,然後在下拉式選單IAM中選取 。
-
進入IAM主控台後,請從導覽窗格中選取使用者。
-
選取您的使用者名稱。
-
按一下 按鈕 新增許可 。
-
選取直接連接政策 。
-
在搜尋列
AmazonDocDBFullAccess
中輸入 ,並在搜尋結果中出現時選取它。 -
按一下下一步按鈕。
-
按一下新增許可按鈕。
-
- 建立 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 搭配下列指示來建立新的彈性叢集。
步驟 2:啟用傳入連線
對 Amazon DocumentDB 叢集的存取由其相關聯的安全群組控制。在此步驟中,您將修改 Amazon DocumentDB 安全群組,以允許透過使用彈性叢集設定的連接埠從 Amazon EC2執行個體進行通訊 (預設 27017)。
-
在 Amazon DocumentDB 管理主控台的叢集 下,找到您的叢集。
按一下叢集識別符,選擇您建立的叢集。
在連線與安全索引標籤的安全區段中,選擇VPC安全群組 。
這會開啟 Amazon EC2管理主控台安全群組清單。或者,您也可以存取 Amazon EC2管理主控台,從網路和安全區段中選取安全群組。
選擇 Amazon DocumentDB (預設 ) 安全群組。
-
選擇傳入規則索引標籤 (您可能需要捲動至視窗底部),然後選擇編輯傳入規則。
-
在編輯傳入規則對話方塊中,選取新增規則 。
對於連接埠範圍 ,輸入
27017
。將來源保留為自訂,並搜尋您在 中建立的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 連線到叢集。
-
在 Amazon DocumentDB 管理主控台的叢集 下,找到您的叢集。依角色排序,以顯示具有角色 Elastic Cluster 的所有叢集。
-
選取叢集識別符,以選擇您建立的叢集。從連線與安全 複製您的端點,並將其貼到您的 Amazon EC2執行個體。
-
連線後,您應該會看到類似下列輸出的內容:
步驟 5:扭曲集合;插入和查詢資料
彈性叢集新增了對 Amazon DocumentDB 中分割的支援。現在您已連線至叢集,您可以碎片化叢集、插入資料並執行一些查詢。
-
若要碎片集合,請輸入下列內容:
sh.shardCollection("db.Employee1" , { "Employeeid" : "hashed" })
-
若要插入單一文件,請輸入下列內容:
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 中輸入的資料。
-
若要查詢單一文件,請包含篩選條件 (例如:"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 }