문서 데이터베이스 설정

Amazon DocumentDB(MongoDB 호환) 및 AWS Cloud9 사용

Amazon DocumentDB(MongoDB 호환)는 MongoDB 워크로드를 지원하는 빠르고, 확장 가능하며, 가용성이 높은 완전관리형 문서 데이터베이스 서비스이며, JSON 데이터를 간편하게 저장, 쿼리하고 색인할 수 있습니다.

이 자습서에서는 AWS Cloud9을 사용하여 Amazon DocumentDB를 시작하는 방법을 보여줍니다. AWS Cloud9 환경에서 mongo 셸을 사용하여 Amazon DocumentDB 클러스터에 연결하고 몇 가지 쿼리를 실행하는 방법을 알아봅니다.

시연을 완료하는 데 약 0.08 USD의 비용이 발생합니다.

다음의 다이어그램은 이 시연의 최종 아키텍처를 나타냅니다.

getting-started-amazon-documentdb-with-aws-cloud9-1
자습서 소개
시간 10분 이하                                  
요금

이 자습서는 Amazon DocumentDB T3 미디엄 인스턴스에 대해 약 0.08 USD의 비용이 발생합니다. 자세한 내용은 Amazon DocumentDB 요금을 참조하세요.

AWS Cloud9는 프리 티어로 사용할 수 있습니다. 자세한 내용은 AWS Cloud9 요금을 참조하세요.

사용 사례 데이터베이스
제품 Amazon DocumentDB(MongoDB 호환), AWS Cloud9
대상 개발자
레벨 200: 중급. 이 콘텐츠는 고객이 주제에 대한 업무 지식이 있다는 가정하에 AWS 서비스 또는 기능에 대한 개요를 소개하는 데 중점을 둡니다.
최종 업데이트 날짜 2020년 8월

1. AWS Cloud9 환경 생성

1.1 – AWS Management Console을 사용하여 AWS Cloud9 관리 콘솔에서 [환경 생성]을 선택합니다.

getting-started-amazon-documentdb-with-aws-cloud9-2

1.2 – 이름에 DocumentDBCloud9을 입력합니다.

getting-started-amazon-documentdb-with-aws-cloud9-3

1.3 – [다음 단계]를 선택합니다.

getting-started-amazon-documentdb-with-aws-cloud9-4

1.4 – 구성 설정 섹션에서 모든 기본값을 수락합니다.

1.5 – [다음 단계]를 선택합니다.

1.6 – 검토 섹션에서 [환경 생성]을 선택합니다.

getting-started-amazon-documentdb-with-aws-cloud9-5

1.7 – AWS Cloud9 환경의 프로비저닝은 최대 3분이 소요될 수 있습니다.

2. 보안 그룹 생성

2.1 – Amazon EC2 관리 콘솔의 [네트워크 및 보안]에서 [보안 그룹]을 선택합니다.

2.2 – [보안 그룹 생성]을 선택합니다.

2.3 – 보안 그룹 이름demoDocDB를 입력합니다.

2.4 – [설명]에 설명을 입력합니다.

2.5 – [VPC]에서 기본 VPC 사용량을 수락합니다.

2.6 – [인바운드 규칙] 섹션에서 [규칙 추가]를 선택합니다.

2.7 – [유형]에서 [사용자 지정 TCP 규칙]을 선택합니다.

2.8 – [포트 범위]에 27017을 입력합니다.

2.9 – 소스 보안 그룹은 조금 전에 생성한 AWS Cloud9 환경의 보안 그룹입니다. [소스]는 [사용자 지정]을 기본값으로 두고 [사용자 지정]에 인접한 필드에 "cloud9"을 입력하여 사용 가능한 보안 그룹을 확인합니다.

getting-started-amazon-documentdb-with-aws-cloud9-6

2.10 – aws-cloud9-<환경 이름>이라는 이름의 보안 그룹을 선택합니다.

2.11 – 그 외에 다른 모든 기본값을 수락하고 [보안 그룹 생성]을 선택합니다. 아웃바운드 규칙을 수정할 필요가 없습니다.

다음 스크린샷은 이 단계에서 생성된 보안 그룹과 AWS Cloud9 환경을 생성할 때 생성한 AWS Cloud9 보안 그룹을 보여줍니다.

getting-started-amazon-documentdb-with-aws-cloud9-7

3. Amazon DocumentDB 클러스터 생성

3.1 – Amazon DocumentDB 관리 콘솔의 [클러스터]에서 [생성]을 선택합니다.

getting-started-amazon-documentdb-with-aws-cloud9-8

3.2 – [Amazon DocumentDB 클러스터 생성] 페이지에서 [인스턴스 클래스] 아래의 db.t3.medium을 선택한 다음, [인스턴스 개수]에서 1을 선택합니다. 이 옵션은 비용을 최소화하는 데 도움이 됩니다.

getting-started-amazon-documentdb-with-aws-cloud9-9

3.3 – 나머지 설정은 기본값으로 유지합니다.

3.4 – [인증] 섹션에 사용자 이름과 암호를 입력합니다.

getting-started-amazon-documentdb-with-aws-cloud9-10

3.5 – [고급 설정 보기]를 활성화합니다.

getting-started-amazon-documentdb-with-aws-cloud9-11

3.6 – [네트워크 설정] 섹션의 [VPC 보안 그룹]에서 demoDocDB를 선택합니다.

getting-started-amazon-documentdb-with-aws-cloud9-12

3.7 – [클러스터 생성]을 선택합니다.

Amazon DocumentDB가 클러스터에서 프로비저닝되기 시작하며, 완료하기까지 몇 분이 소요될 수 있습니다. 클러스터와 인스턴스 상태가 사용 가능으로 표시되면 클러스터에 연결할 수 있습니다. Amazon DocumentDB가 클러스터를 프로비저닝하는 동안 Amazon DocumentDB 클러스터에 연결하기 위한 나머지 단계를 완료합니다.

4. mongo 셸 설치

4.1 – AWS Cloud9 환경이 아직 열려 있다면 3단계를 건너뛸 수 있습니다.

4.2 – AWS Cloud9 관리 콘솔의 [내 환경]에서 DocumentDBCloud9을 선택합니다.

4.3 – [IDE 열기]를 선택합니다.

4.4 – 명령 프롬프트에서 다음의 코드로 리포지토리 파일을 생성합니다.

echo -e "[mongodb-org-3.6] \nname=MongoDB Repository\nbaseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.6/x86_64/\ngpgcheck=1 \nenabled=1 \ngpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc" | sudo tee /etc/yum.repos.d/mongodb-org-3.6.repo

4.5 – 생성이 완료되면 다음의 코드로 mongo 셸을 설치합니다.

sudo yum install -y mongodb-org-shell

4.6 – 전송되는 데이터를 암호화하기 위해 Amazon DocumentDB에 CA 인증서를 다운로드합니다. 다음 코드를 참조하세요.

wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

4.7 – 이제 Amazon DocumentDB 클러스터에 연결할 준비가 끝났습니다.

5. Amazon DocumentDB 클러스터에 연결하기

5.1 – Amazon DocumentDB 관리 콘솔의 [클러스터]에서 클러스터를 찾습니다. 이 게시물에서는 docdb-2020-02-08-14-15-11 클러스터를 사용합니다.

getting-started-amazon-documentdb-with-aws-cloud9-13

5.2 – 클러스터 식별자(이 예시에서는 docdb-2020-02-08-14-15-11)를 클릭하여 생성해둔 클러스터를 선택합니다.

5.3 – "mongo 셸로 이 클러스터에 연결"에서 제공되는 연결 문자열을 복사합니다.

연결 후에는 mongo 셸에서 암호를 묻는 <insertYourPassword>는 생략합니다. 이렇게 하면 평문으로 암호를 입력하지 않아도 됩니다.

getting-started-amazon-documentdb-with-aws-cloud9-14

5.4 – 연결 문자열은 다음의 코드와 유사해야 합니다(스크린샷 참조).

getting-started-amazon-documentdb-with-aws-cloud9-15

5.5 – 암호를 입력하고 rs0:PRIMARY> 프롬프트가 보이면 Amazon DocumentDB 클러스터에 연결된 것입니다.

문제 해결에 대한 정보는 Amazon DocumentDB 문제 해결을 참조하세요.

6. 데이터 삽입 및 쿼리

6.1 - 클러스터에 연결되었으므로 몇 개의 쿼리를 실행하여 문서 데이터베이스 사용에 익숙해져야 합니다.

문서 하나를 삽입하려면 다음의 코드를 입력합니다.

db.collection.insert({"hello":"DocumentDB"})

다음과 같은 결과가 표시됩니다.

WriteResult({ "nInserted" : 1 })

6.2 - findOne() 명령으로 자신이 작성한 문서를 읽을 수 있습니다(문서 하나만 반환하기 때문). 다음 코드를 참조하세요.

db.collection.findOne()

다음과 같은 결과가 표시됩니다.

{ "_id" : ObjectId("5e401fe56056fda7321fbd67"), "hello" : "DocumentDB" }

6.3 - 몇 개의 쿼리를 더 실행하려면 게임 프로필 사용 사례를 참조하세요. 먼저 profiles라는 컬렉션에 몇 개의 항목을 삽입합니다. 다음 코드를 참조하세요.

db.profiles.insertMany([

{ "_id" : 1, "name" : "Tim", "status": "active", "level": 12, "score":202},

{ "_id" : 2, "name" : "Justin", "status": "inactive", "level": 2, "score":9},

{ "_id" : 3, "name" : "Beth", "status": "active", "level": 7, "score":87},

{ "_id" : 4, "name" : "Jesse", "status": "active", "level": 3, "score":27}

])

다음과 같은 결과가 표시됩니다.

{ "acknowledged" : true, "insertedIds" : [ 1, 2, 3, 4 ] }

6.4 - find() 명령을 사용하여 profiles 컬렉션에 모든 문서를 반환합니다. 다음 코드를 참조하세요.

db.profiles.find()

다음과 같은 결과가 표시됩니다.

{ "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 202 }

{ "_id" : 2, "name" : "Justin", "status" : "inactive", "level" : 2, "score" : 9 }

{ "_id" : 3, "name" : "Beth", "status" : "active", "level" : 7, "score" : 87 }

{ "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3,

6.5 - 필터를 적용하여 단일 문서 쿼리를 사용합니다. 다음 코드를 참조하세요.

db.profiles.find({name: "Jesse"})

다음과 같은 결과가 표시됩니다.

{ "_id" : 4, "name" : "Jesse", "status" : "active", "level" : 3, "score" : 27 }

6.6 - 일반적으로 게임에서는 지정된 사용자의 프로필을 찾아 사용자 프로필 값을 증분합니다. 이 시나리오에서는 활동이 가장 활발한 게이머를 대상으로 프로모션을 실행하려고 합니다. 게이머가 설문조사를 작성하면 점수를 10점 올립니다.

이를 위해서는 findAndModify 명령을 사용합니다. 이 사용 사례에서 사용자 Tim은 설문조사를 수신하고 완료했습니다. Tim에게 점수에 대한 크레딧을 제공하려면 다음의 코드를 입력하세요.

db.profiles.findAndModify({

   query: { name: "Tim", status: "active"},

   update: { $inc: { score: 10 } }

})

다음과 같은 결과가 표시됩니다.

{

      "_id" : 1,

      "name" : "Tim",

      "status" : "active",

      "level" : 12,

      "score" : 202

}

6.7 - 다음의 쿼리로 결과를 확인할 수 있습니다.

db.profiles.find({name: "Tim"})

다음과 같은 결과가 표시됩니다.

{ "_id" : 1, "name" : "Tim", "status" : "active", "level" : 12, "score" : 212 }

7. 정리

시연을 완료하면 Amazon DocumentDB 클러스터를 정지해서 비용을 낮추거나 아예 클러스터를 삭제합니다.

기본적으로 사용하지 않고 30분이 지나면 AWS Cloud9 환경이 기본 EC2 인스턴스를 정지해 비용을 절약하도록 도와줍니다.

 

축하합니다!

이 자습서에서는 AWS Cloud9 환경을 생성하여 Amazon DocumentDB를 시작하는 방법을 보여주었습니다.

mongo 셸을 설치하고, Amazon DocumentDB 클러스터를 생성하고, 클러스터에 연결하여 몇 개의 쿼리를 실행하면서 Amazon DocumentDB에서 JSON 문서를 삽입하고 쿼리하기가 얼마나 쉬운지 알아보았습니다.

Amazon DocumentDB(MongoDB 호환)는 MongoDB 워크로드를 지원하는 빠르고, 확장 가능하며, 가용성이 높은 완전관리형 문서 데이터베이스 서비스이며, JSON 데이터를 간편하게 저장, 쿼리하고 색인할 수 있습니다.

이 자습서가 유용했습니까?

감사합니다.
좋아하는 사항을 알려주세요.
닫기
실망을 드려 죄송합니다.
오래되었거나 혼란스럽거나 부정확한 사항이 있습니까? 피드백을 제공하여 이 자습서를 개선할 수 있도록 도와주십시오.
닫기