일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준
- annotate
- DjangoCache
- 도커
- EC2
- DjangoRestFramework
- database
- Git
- Continuous Delivery
- Coroutine
- F객체
- Transaction
- CI
- docker
- testcase
- DRF
- nestedfunction
- Python
- Prefetch_related
- dry-yasg
- 코루틴
- racecondition
- aws
- Continuous Deployment
- QuerySet
- to_attr
- apitestcase
- CD
- aggregate
- django
- Today
- Total
BackEnd King KY
TIL33 - AWS EC2 인스턴스 생성 본문

AWS EC2 인스턴스 생성
서버를 띄우기 위한 기본 세팅이 끝나서 서버 구축을 해보겠습니다.
서버는 AWS EC2(AWS Compute Cloud)를 통해 구축할 수 있습니다.
AWS EC2 공식문서를 보며 직접 구축해보겠습니다.
티스토리에서 보기 불편하실경우, Github에서 읽어보실 수 있습니다.
AWS Key Pair
우선, 서버 구축전에 키 페어 먼저 생성이 되어있어야 합니다.
퍼블릭 키 암호화를 통해 인스턴스에 대한 로그인 정보를 보호하기 때문인데, Linux 인스턴스에는 암호가 없으므로 인스턴스에 안전하게 로그인 하기 위해 키페어를 사용한다고 합니다.
EC2 메뉴로 이동하면, 리소스 항목 -> 키 페어를 클릭합니다.
키 페어 생성을 클릭한뒤, 각 항목들을 입력합니다.
키 페어 유형에서 ED25519는 윈도우 인스턴스에서는 지원되지 않는다고 합니다.
프라이빗 키 형식의 경우, OpenSSH에서 사용할 수 있게 하려면 pem을 선택해야 합니다.
생성하게 되면 키 페어가 다운로드 되는데, 이 때가 다운받을 수 있는 마지막 기회이니 잘 보관해야 합니다.
macOS 또는 Linux 컴퓨터에서 SSH 클라이언트를 사용하여 Linux 인스턴스에 연결하려면 아래와 같은 명령어를 입력하여 해당 파일의 권한을 설정합니다. 이러한 권한을 설정하지 않으면 키 페어를 통해 인스턴스에 접근할 수 없다고 합니다.
chmod 400 키페어이름.pem
chmod 400 이란, chmodcommand 공식문서에 의하면 소유자가 읽을 수 있도록 해주는 명령어로 아래 이미지에 각 역할이 정리된 걸 확인할 수 있습니다.
보안그룹생성
보안 그룹은 인스턴스에 대한 방화벽 역할을 하며 인스턴스 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어합니다. SSH를 사용하여 IP주소에서 인스턴스에 연결할 수 있게 하는 규칙을 보안 그룹에 추가해야합니다.
EC2 메뉴 접속 후 네트워크 및 보안 -> 보안그룹으로 이동한 뒤, 보안 그룹 생성 버튼을 클릭합니다.
기본 세부 정보, 인바운드 규칙, 아웃바운드 규칙 3가지로 나뉘어져 있으며 기본 세부 정보에선 보안 그룹의 이름과 설명을 입력합니다.
저는 제가 적용할 Repository의 이름이 dockers라서 dockers로 이름을 설정했습니다.
인바운드 규칙은 인스턴스에 특정 트래픽들이 도달할 수 있도록 허용하는 규칙을 의미합니다.
보안 규칙의 유형등에 대해 설정을 하는데, 소스의 경우 Anywhere(위치 무관)을 선택하면 절대 안됩니다.
이렇게 되면 모든 인터넷의 IP주소에서 인스턴스에 엑세스 할 수 있기 때문입니다. 지금과 같은 테스트 환경에서야 잠시 하는 건 괜찮지만 프로덕션에선 절대 설정해선 안됩니다.
접근IP에 대해 추가로 설명을 하면,
- IP주소는 0.0.0.0 ~ 255.255.255.255까지 있고 이진수로 표현하면 11111111.11111111.11111111.11111111 이렇게 되어 있어서 32비트로 불립니다.
- 0.0.0.0/0 은 모든 IPv4 주소를 의미합니다.
- 0.0.0.0/n 은 이진수로 풀었을 때 n번째 자리까지 고정하겠다는 의미입니다. 0.0.0.0/16 이렇게 된다면 11111111.11111111.??? 이런식으로 쓰이게 됩니다.
- ::/0 은 모든 IPv6 주소를 의미합니다. 뒤에 /가 붙었다면 IPv4와 같이 어디까지 고정하겠다라고 할 수 있습니다.
아웃바운드 규칙은 모든 아웃바운드 트래픽을 허용하는 기본 규칙을 유지합니다.
상황에 따라 허용할 프로토콜, 포트 범위 등을 설정할 수 있습니다.
태그의 경우, 선택사항이라 지금은 설정하지 않겠습니다.
이제 보안그룹 생성까지 마무리 되었으니, EC2 인스턴스를 만들어보겠습니다.
EC2 Instance 생성
EC2 메뉴에서 인스턴스 시작을 누르면 이름, AMI 설정 등 다양한 항목들이 나옵니다.
이름은 각자 원하는 명으로 입력하시면 되고, AMI의 경우 프리티어 사용가능한 Amazon Linux를 선택하겠습니다.
다만, 커널이 5.10과 4.14버전 두 개를 선택할 수 있는데 2023년 6월 이후로 4.14버전 지원이 종료되어 5.10으로 선택했습니다.
인스턴스 유형은 t2.micro를 설정했고, 키 페어의 경우 위에서 생성한 걸 적용했습니다.
키 페어 없이 진행은 할 수는 있는데, 키 페어없이 인스턴스 시작 시 인스턴스에 연결할 수 없어 권장하지 않는다고 합니다.
네트워크 설정의 경우, 보안그룹은 위에서 만든 보안그룹으로 변경했고 VPC/서브넷은 아직 공부가 필요하여 기본으로 설정한 후 인스턴스를 시작했습니다.
인스턴스가 연결되기까지 시간이 꽤 걸리며 연결되었다면 아래와 같이 나타나는 걸 볼 수 있습니다.
'AWS' 카테고리의 다른 글
TIL42 - linux에서 redis permission denied 문제 해결 (0) | 2023.01.11 |
---|---|
TIL37 - Elastic Beanstalk에 Django 애플리케이션 배포 (1) (0) | 2022.11.19 |
TIL36 - EC2에 Pull받기 (0) | 2022.11.13 |
TIL32 - AWS IAM을 이용한 사용자 권한 설정과 MFA 설정 (0) | 2022.09.11 |
TIL12 - AWS AI&ML 온라인 컨퍼런스 : ML 데이터 준비 및 WorkFlow 프로토타이핑 배워보기 (0) | 2022.03.01 |