기본 골자는 EC2와 RDS 연결하는 것과 비슷하다. 그런데, 공식 AWS DocumentDB 예제가 Deprecated mongo를 사용하고 있다.
각 서브넷마다 256개의 IP를 가짐. (참고 링크의 벨로그랑 같음)
1.과 2.를 끝내면, VPC 대시보드에서 만들어진 VPC를 확인할 수 있다. 이를 A라 하자.
VPC 정보를 클릭하고, A를 클릭한다. 이 보안 그룹을 B라고 하자.
22번 ssh, 443 https, 80 http 등 인바운드 규칙을 추가한다.
DocumentDB VPC 보안 그룹을 생성한다. 이 보안 그룹을 C라고 하자. 이때 VPC는 A다.
사용자 지정 TCP 선택, 보안그룹은 C 선택, 포트 범위는 몽고 db이므로 27017.
VPC - 필수에는 A를, 일반 보안 그룹에는 B를 선택한다. 만들어진 EC2를 D라고 하자.
인스턴스 D 선택.
vpc A 선택.
인스턴스 개수는 3개 이상이 권장.
(이 화면은 고급 설정 표시해야 나옴)
VPC에는 A, 서브넷 그룹은 알아서 나오고, VPC 보안 그룹은 C 선택.
echo "[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2023/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc
" | sudo tee /etc/yum.repos.d/mongodb-org-7.0.repo
sudo yum install mongodb-mongosh-shared-openssl3
sudo yum install mongodb-mongosh
sudo yum install -y mongodb-org-7.0.2 mongodb-org-database-7.0.2 mongodb-org-server-7.0.2 mongodb-org-mongos-7.0.2 mongodb-org-tools-7.0.2
sudo systemctl start mongod
위 화면은 AWS가 공식적으로 제공하는 자료다. 위 화면으로 진입하려면, AWS DocumentDB에서 "연결"을 찾으면 된다.
단, 위 그림은 Deprecated나 마찬가지다.
올바른 것은 다음 코드다. mongo 말고 mongosh로 바꿔라.
mongosh --ssl host docdb-2020-02-08-14-15-11. cluster.region.docdb.amazonaws.com:27107 --sslCAFile global-bundle.pem --username demoUser --password
이렇게 하면, 패스워드 치라고 나온다. 11.에서 만든 비밀번호 기입하면 된다.
최종적으로
rs0:PRIMARY>
란 게 나오면 접속 완료다.
접속해도 Insert가 안먹힌다.
다음 에러가 발생한다.
MongoServerError: Retryable writes are not supported
이에 대한 해결법은 다음과 같다.
mongosh "mongodb://docabnoob:<insertYourPassword>@docdb-2020-09-29-17-50-35. cluster-165zzwncn6j.us-
east-1.docdb. amazonaws.com: 27017//?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"
위 코드를 ec2에서 실행시키자. 그러면 DocumentDB에 접속되면서 Insert문들도 먹히게 된다.
https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-amazon/