인스턴스 생성하는 방법은 구글에 많으니 생략
루트 계정은 우리가 흔히 아는 그 최상위 계정을 말한다. 이 계정이 해킹 당하면 아주아주 큰일 나니까 쓰지 않는 것을 AWS도 공식적으로 추천한다.
AWS Identity and Access Mansgement
그래서 제어된 권한을 가지고 있는 IAM 계정을 사용한다. 이 IAM 계정을 사용하면 분리된 계정을 가지고 하나의 인스턴스를 공유하고 접근할 수 있다. 아이디, 비밀번호 등을 서로 공유하지 않고 분리된 계정이기 때문에 보다 보안에 덜 취약하다.
처음에 루트 계정으로 인스턴스를 생성했다가 뒤늦게 IAM 계정을 만들어 인스턴스에 접근하려 하니 아래 사진처럼 API 에러가 떠있었다. (사진은 캡처 못 해서 퍼 왔다.)
그래서 루트 계정 인스턴스를 삭제하고 IAM 계정으로 인스턴스를 다시 만들려는데 키 페어를 생성하는데 권한 오류가 났다. 찾아보니 AmazonEC2FullAccess
권한을 해당 IAM 계정이 속한 그룹에 줘야 했다. 권한을 수정하고 다시 시도하니 정상적으로 키 페어가 생성이 되고 인스턴스도 마저 생성할 수 있었다.
인스턴스가 실행되면 연결하고 싶은 인스턴스를 체크하고 연결 버튼을 누르면 연결하기 위한 방법이 나온다 터미널을 키 페어 파일이 위치한 디렉토리로 이동하고 방법을 순서대로 따라 하면
연결된 터미널을 확인할 수 있다.
인스턴스가 연결된 상태에서 장고를 설치한다. 나는 poetry를 사용해 가상환경을 만들고 설치했다.
이제 설정을 두 개를 해야 하는데 하나는 EC2에서 하나는 장고에서 해야 한다.
장고의 config 폴더 안에 있는 settings.py
파일을 확인하면 ALLOWED_HOSTS = []
부분이 있다. 그 부분을 ALLOWED_HOSTS = ['인스턴스에서 확인한 퍼블릭 ip']
로 수정해 준다.
# 이 부분을
ALLOWED_HOSTS = []
# 이렇게
ALLOWED_HOSTS = [13.114.52.207]
장고는 8000번이 기본이라 EC2 인스턴스의 8000번 포트를 열어줘야 한다.
EC2 -> 보안 그룹 -> 인바운드 규칙 -> 인바운드 규칙 편집
으로가서 8000번 포트를 추가해 준다.
배포하는 과정은 AWS EC2, Django 프로젝트 배포하기 이 글을 참고했다.
그리고 장고를 실행하면 되는데... 안되길래 위 참고글처럼 8000번 포트로 실행했더니 성공했다. (왜지..? 기본이 8000번이 아니었나..)
python3 manage.py runserver 0:8000
이제 퍼블릭 ip:8000
으로 접속하면 장고 실행 화면을 볼 수 있다.