EC2 내 파일 소유권 변경하기

2024년 7월 31일 수요일

Today I Learned

날짜

2024년 7월 31일 수요일

내용

실서버 운영을 위한 EC2 구축하기

실서버 배포를 위한 환경을 구축했다. VPC를 만들고, ECR, ECS 클러스터 이것 저것 다 만들고 CI CD도 구축했다. 이제 나름 몇번 해봤다고 할 줄 알게 됨.. 물론 실서버에서 이슈처리를 위해 X-Ray를 구축할 예정인데, 이 부분은 아직 건드리지 못헀다는 게 첫번쨰 문제고 두번째는 서비스를 운영할 기반을 만드는 거였다.

실서버에서 마이그레이션을 하거나, 커맨드를 돌리기 위해 사용할 EC2를 만들어주려고 한다. 기존 글로벌 프로덕트 리뷰가 그렇게 되있다. ECS에서 돌아가는 컨테이너가 실서버는 항상 2개길래 “아 하나가 사용하는 서버고, 나머지 하나가 EC2를 위한 거구나” 라고 생각했다. ECS는 도커 이미지로 서버를 돌리는데 사용량에 따라 자동으로 스케일이 조정되는 Fargate 방식과, 생성해둔 EC2 인스턴스에서 구동하는 방식이 있기 떄문에 그런줄 알았다. 설정을 들어가보니 전혀 아니었지만…

ECS에서 실행중인 최소 태스크 수를 설정할 수 있었고, 그게 2개였다. 하나만 구동하다가 혹시 하나 삑나면 서버가 아예 다운되니 예비용으로 하나를 돌리고 있는 설정이었다. 서버 사용량이 늘어나면 최대 4개까지 실행될 수 있고… EC2는 그냥 아예 별개의 이야기였다.

그래서 나도 그냥 인스턴스 하나 만들고, 그 안에서 도커 설치하고 main 브랜치를 클론해와서 도커를 백그라운드로 구동시켰다. 근데 데이터베이스 마이그레이션을 위해 alembic을 설치할 때 상당히 난감한 문제를 겪었다.

alembic init migration 으로 migration 이라는 이름의 폴더로 alembic이 설정되는 디렉토리를 만들었다. 여기에 생성된 env.py 파일을 수정해서 내 데이터베이스를 지정해야 하는데 수정 후 저장이 안됐다. 오류의 내용은 migration 폴더가 생성될 때 소유자가 root로 처리됐는데, 내가 ec2-user 라는 유저로 인스턴스에 들어와서 파일을 수정할 권한이 없다는 이야기였다.

이 migration 폴더의 소유자를 ec2-user로 바꿔주면 해결되는 문제였다. linux 에선 chown 명령어를 이용하면 되는데, 내가 실수로 인스턴스 내 모든 디렉토리의 소유자를 ec2-user로 바꿔버렸다.. 소유자와 권한 설정과 관련된 파일이 바뀌면서 골떄리는 오가 발생했다

1
2
3
4
sudo: /etc/sudo.conf is owned by uid 1000, should be 0
sudo: /etc/sudo.conf is owned by uid 1000, should be 0
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: error initializing audit plugin sudoers_audit

sudo 명령어를 사용할 수 없게 됐다.. 내가 sudo 명령어를 사용하기 위한 권한을 다시 얻으려면, 저 sudo.conf 파일을 변경해야 하는데, 저 파일을 변경할 수 없어졌다. 뭐랄까.. 다음 왕은 반드시 왕이 선택해야 하는데, 왕이 없어서 아무도 왕을 다시 못뽑는다는 느낌이라고 해야되나…

온갖 방법을 다쓰다가 그냥 인스턴스 다시 만들었다. 권한은 최소한만으로 변경하고, 함부로 건들지 말자..

실서버 데이터베이스

실서버 데이터베이스를 만들때 퍼블릭 액세스를 꺼놨다. 제한된 루트로만 접근 가능하도록 하기 위해. 근데 내 로컬 PGAdmin4 에서 접근이 안된다. 당연히 못하게 해놨으니까… 보려면 VPC의 특정 서브넷에 올린 EC2 인스턴스를 통해 접근해야 한다. 이론적으론 뭐 깔끔하기도 하고, 보안상 그게 가장 좋기야 하겠다만.. CS 들어오면 처리하기도 힘들고, 보기도 힘들다! KMS나 시크릿 매니저로 보안은 철저하게 해놨으니 퍼블릭 액세스를 열었다. 대신 보안그룹 인바운드 규칙도 필요한 것만 설정해서 아무나 못보게 했다.

회고

X Ray 언제하냐!