Javascript API를 이용해 유튜브 영상을 재생, 일시정지 합니다.
DocumentDB #1 DocumentDB – EC2에 연결하기
2021-06-15
Explanation
요즘 포스팅도 안 하고 개인 프로젝트도 안 하고 눈누난나 지내고 있었는데,
근래 회사 동생들이 블로그 얘기도 많이 하고 해서, 마지못해 작성하는…
아주아주 오랜만의 포스팅!
오늘은 AWS의 DocumentDB를 EC2에 연결해서 외부에서 접속하는 방법에 대해 적어보려 합니다.
사실 이미 AWS에 잘 작성되어 있습니다..
* AWS DocumentDB – EC2 연결:
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/connect-ec2.html
* Studio 3T 연결:
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/studio3t.html
AWS의 글과 너무 똑같은 내용이라 별 의미가 없을 것 같지만, (아마도) 다른 내용으로 이어서 포스팅을 작성하게 될 것 같아서 우선 가볍게 1편으로 작성해보려 합니다.
크게 진행 순서는
1. EC2 보안그룹 만들기
2. EC2 만들기
3. DocumentDB 보안그룹 만들기
4. DocumentDB 만들기
5. EC2 – DocumentDB 연결하기
6. Studio 3T로 연결하기
그런데 여기에서, 저는 이미 EC2를 사용하고 있어서 EC2를 따로 만들지 않고 EC2의 보안그룹도 그냥 그대로 사용할 예정입니다.
그리고 따로 언급하지 않았는데, 아래 내용은 모두 기본 VPC를 동일하게 사용하고 있습니다.
AWS 에서 EC2 서비스로 이동해서 보안그룹 -> 보안그룹 생성을 누릅니다.
그리고 이름과 설명을 입력한 후 인바운드를 설정해 줍니다.
이건 지금 제가 사용하고 있는 EC2의 보안그룹인데요. 옛날에 무지성으로 만들어서 보안그룹 이름도 디폴트 이름이고 http, https, ssh에 모든 ip를 허용해두었네요.
현재 블로그로 사용하고 있는 EC2라서 http, https 는 모두 열어두더라도 ssh는 제가 사용하는 ip로 제한해두는 편이 좋겠네요.
일단, 이번에 새로 보안그룹을 만드셨다면.
ssh로 자신의 ip를 통해 접근할 수 있도록 인바운드 규칙에 추가해주세요.
(이따가 ssh로 EC2에 접속해서 DocumentDB에 액세스 할 예정이에요.)
저는 기존의 사용하고 있던 EC2를 사용하고,
EC2를 만드는 방법은 이번 포스팅 논지에 좀 벗어나는 것 같아서 생략할게요.
(저는 Ubuntu 18.04.2 LTS 버전을 사용하고 있습니다.)
1번과 동일하게 보안그룹 생성 버턴을 누릅니다.
보안그룹의 이름과 설명을 적어주고, 인바운드 규칙에 ‘사용자 지정 TCP’ 그리포 포트번호는 ‘27017’ 그리고 소스는 아까 1번에서 만들었던 EC2의 보안그룹을 설정한 후에 생성해줍니다.
약간의 설명을 더하자면, DocumentDB는 Amazon VPC 내에서 배포되어 EC2나 또는 동일한 VPC에 배포된 AWS의 서비스를 통해서만 직접 액세스 할 수 있습니다.
그래서 보안그룹에 동일한 VPC에 있는 EC2에 인바운드를 추가해서 외부에서 EC2를 통해서 DocumentDB에 액세스 합니다.
Amazon DocumentDB 서비스로 이동해서 클러스트에서 생성 버튼을 누릅니다.
이름과 인스턴스 클래스, 개수 그리고 마스터 이름과 비밀번호를 입력합니다.
저는 포스팅을 하고 바로 지울거라 가장 저렴한 인스턴스 클래스와 개수는 1개로 하였습니다.
그리고 아래의 ‘고급 설정 표시’를 활성화 한 후 3번에서 만들었던 보안그룹을 설정해 줍니다.
리전 클러스터는 금방 만들어지는데 인스턴스는 만들어지는데 조금 시간이 걸려요 (한.. 3분?)
이제 EC2에 가서 DocumentDB에 접속해볼까요? 우선 ssh로 EC2에 접속합니다.
1 |
$ ssh -i "falsyxxxx.pem" ubuntu@ec2-12-345-678-910.ap-northeast-2.compute.amazonaws.com |
여기 부분은 AWS 가이드 문서와 완전 동일합니다.
저는 ubuntu 18.04 버전을 사용하고 있습니다.
1. 패키지 관리 시스템에서 사용할 퍼블릭 키를 가져옵니다.
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 |
2. Ubuntu 버전에 맞는 명령을 사용하여 MongoDB의 목록 파일 /etc/apt/sources.list.d/mongodb-org-3.6.list를 생성합니다.
1 |
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list |
3. 다음 명령을 사용하여 로컬 패키지 데이터베이스를 다시 로드합니다.
1 |
sudo apt-get update |
4. MongoDB 셸을 설치합니다.
1 |
sudo apt-get install -y mongodb-org-shell |
설치가 끝나면 DocumentDB의 클러스트 탭으로 이동해서 생성한 클러스터를 선택합니다.
이제 저 페이지에 ‘연결’에 보이는 것처럼 EC2의 ssh에 입력해주시면 되는데요.
우선 현재 인증기관 인증서가 없으니까 우선 인증서를 다운로드 해줍니다.
EC2에 ssh로 접속한 상태로 아래 명령어를 통해 Ubuntu에 인증서를 다운로드해 주는 거에요.
1 |
wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem |
설치 후 ls 명령어를 입력해보시면 rds-combined-ca-bundle.pem 파일이 추가된 걸 확인 하실 수 있습니다.
그리고 아래에 적힌(‘mongo –ssl …’) 명령어를 입력해주시면 접속이 된답니다.
1 |
mongo --ssl --host docdb-test-falsy.cluster-cavb6csgrp65.ap-northeast-2.docdb.amazonaws.com:27017 --sslCAFile rds-combined-ca-bundle.pem --username falsy --password <암호삽입> |
짜잔
처음에는 Robo 3T 로 시도했는데, MacOS Big Sur v11.4 기준으로 접속이 안되더라고요.
Robo 3T랑 Studio 3T가 같은 회사 제품이던데.. 설마..
이거 막 오라클에서 오라클DB 에서는 되고 MySQL에서는 안되게 만들고 그런 전략인가??
그리고 Studio 3T로 글을 작성하려고 봤는데.. 이건, AWS 가이드의 Studio 3T의 내용과 너무 똑같네요.
(사실 앞선 내용들도…)
이건 정말로 그냥 AWS 가이드 글 보면서 따라하시면 뚝딱 될 거 같아요!
* 스튜디오 3T에서 Amazon DocumentDB 클러스터에 연결
https://docs.aws.amazon.com/ko_kr/documentdb/latest/developerguide/studio3t.html
이번 포스팅은.. 너무 간단한 내용이라 조금 민망한 감이 없지 않지만, 오랜만에 포스팅이라는 점에 의미를 두고 다음엔 조금 더 유익한 포스팅을 할 수 있기를…