AWS EC2 인스턴스 생성부터 접속까지
이 포스팅을 시작으로 앞으로 서술될 3개의 포스팅은 AWS EC2 인스턴스를 이용해 Ubuntu 운영체제에 설치된 Nginx 서버에서 PHP 코드를 구동할 수 있는 개발환경을 구축하기 위한 가이드 포스팅입니다.
가장 먼저 진행할 내용은 AWS EC2 인스턴스 생성부터 터미널을 이용한 접속까지 해보는 방법에 대해서 입니다. 먼저 아마존에 계정을 만들고 로그인을 진행합니다. 제품 중 EC2를 눌러 인스턴스 생성화면에 와서 인스턴스를 생성합니다. 인스턴스 생성전에 우측 상단에 리전(Region)이 서울인지 꼭 확인하고 만듭시다.
물론 원하는 리전이 있다면 그 리전으로 지역변경 후 인스턴스를 생성합니다.
이 포스팅에서 예제로 다룰 운영체제는 Ubuntu 18.04 LTS 입니다. 사용하는 운영체제에 따라 본 포스팅과 다르게 로그인 계정정보나 약간의 환경차이가 발생할 수 있습니다.
만약에 새로운 계정을 생성하고 1년 이내에는 프리티어(t2.micro)로 무료로 기능을 이용할 수 있습니다. 이외에는 EC2 인스턴스 유형이나 요금을 확인하시고 원하는 인스턴스 유형을 선택합니다.
여기서 바로 '검토 및 시작'을 누르면 후속 단계가 디폴트 값으로 지정되어 바로 인스턴스를 생성할 수 있습니다.
3단계에서는 T2/T3무제한 부분이 기본값으로는 활성화 처리가 되어있을 수 있는데 이 부분을 체크를 해제해줍니다. 서버의 한계보다 더 높은 컴퓨팅을 요구할때 과금을 해서라도 인스턴스를 늘려 컴퓨팅을 처리하도록 하는 옵션입니다. 굳이 그런것 까지 고려할 수준이면 이 내용을 확인할 정도는 아니라고 생각합니다...
4단계는 연결하는 스토리지 설정을 할 수 있습니다. 기본값으로는 8GiB의 ESB를 할당하도록 설정이 되어있는데 작다 싶으면 30GiB까지 늘려둡시다.
ESB 크기는 인스턴스를 운영하는도중에 늘리는것은 자유롭게 할 수 있으며 위의 사진에서 안내되는 바와 같이 프리티어 사용중이라면 30GiB까진 무료로 사용할 수 있습니다.
AWS EC2 인스턴스는 전용 키파일을 이용한 키 페어 로그인 방식이 디폴트 입니다. 이 키가 노출되면 누구나 내가 만든 인스턴스에 접속할 수 있다는 이야기이니 꼭 키는 안전한 위치에 저장합시다.
만약에 이전에 인스턴스를 만든적이 있어서 AWS에서 발급받은 키가 있다면 그 키에 값을 물려서 이용할 수 도 있습니다.
여기까지 하고 '시작하기'를 누르면 지금까지 설정한 내용으로 인스턴스가 생성되어 시작됩니다.

생성된 인스턴스는 'EC2 - 인스턴스 - 인스턴스'에서 확인할 수 있습니다. 처음에 인스턴스를 만들면 상태 검사가 Initialize 상태입니다. 조금 기다렸다가 아래처럼 상태가 변화되면 접속을 시도할 수 있습니다.
그동안 우리는 몇가지 접속을 위한 설정을 진행해볼겁니다. 우선 위의 인스턴스에 바로 접근 가능한 공인 IP를 하나 만들어 볼겁니다. 이 서비스는 탄력적 IP(Ellastic IP) 서비스라고 해서 AWS가 보유하고있는 공인 IP를 사용자의 인스턴스에 물려서 공인 IP를 통한 인스턴스의 접근, 웹 서버의 접근등을 지원해줍니다.
이 '탄력적 IP'는 발급해두고 인스턴스에 연결하지 않으면 과금 대상이 되니 쓰지않을때는 꼭 반환(Release)를 해주는것을 잊지 맙시다.
위 이미지와 같이 'EC2 - 네트워크 및 보안 - 탄력적 IP'에서 새 탄력적 IP를 발행할 수 있습니다.
발행한 IP는 주소 연결작업을 꼭 진행해줍시다.
리소스 유형에서 인스턴스를 선택하고 위에서 만든 인스턴스를 선택하고 연결작업을 진행합니다.
그러면 앞으로 연결된 인스턴스는 복잡한 DNS 접속방식이 아닌 발행한 퍼블릭 IP 주소를 통해 접근할 수 있습니다.
이어서 한가지 더 설정해야하는 부분은 'EC2 - 네트워크 및 보안 - 보안 그룹'의 내용입니다. 윈도우 컴퓨터의 방화벽과 비슷한 역할을 하는 이 보안 그룹은 기본값은 ssh 접속을 제외한 모든 것이 차단되어 있으므로 자신이 원하는 인바운드 규칙으로 새로 작성하거나 수정해줘야 합니다.
'보안 그룹 생성' 버튼을 통해 아래와 같은 새로운 보안그룹 규칙을 만들어 봅시다.

간단히 식별할 수 있는 이름과 설명을 적고, 아래 인바운드 탭에서 원하는 몇가지 인바운드 규칙을 추가합니다.
우선 일반적으로 웹서버로 운용하려고 만든 인스턴스이므로 http 유형은 모든 아이피에서 접근할 수 있도록 추가해놓고, SSH와 MySql등 개발에 관련된 규칙은 특정 아이피 주소로 제한해둡시다. 물론 접속환경에 따라 이 부분은 각자 수정하셔도 됩니다.
만약에 나중에 추가규칙이 필요하다면 언제든지 '보안 그룹' 화면에서 해당 보안그룹을 선택하고 하단의 '편집' 버튼을 통해서 인바운드 조건을 수정할 수 있습니다.
이렇게 일단 추가로 설정해야되는 두가지 사항이 준비가 되었으면 이를 아까 만든 인스턴스에 연동해봅시다. 탄력적 IP는 이미 해당 페이지에서 연동작업이 완료된 상태고 금방 위에서 만든 보안그룹을 설정해주기 위해 인스턴스를 우클릭해 '네트워킹 - 보안 그룹 변경'을 통해 보안그룹을 변경합니다.
여기까지의 내용을 정리하면 아래와 같습니다.
마지막으로 터미널(또는 putty)로 인스턴스에 접속해봅시다.

연결할 인스턴스의 매뉴의 '연결'버튼을 누르면 연결을 위한 가이드라인이 표시됩니다.
가이드라인의 내용을 정리하면 아래와 같습니다.
$ chmod 400 kiweb.pem
$ ls -al
-r-------- 1 erusya staff 1696 Feb 10 10:21 kiweb.pem
$ ssh -i kiweb.pem ubuntu@13.209.131.66
The authenticity of host '13.209.131.66 (13.209.131.66)' cant be established.
ECDSA key fingerprint is SHA256:???.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '13.209.131.66' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-1057-aws x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon Feb 10 02:13:31 UTC 2020
System load: 0.0 Processes: 90
Usage of /: 3.6% of 29.02GB Users logged in: 0
Memory usage: 7% IP address for ens5: 172.31.17.222
Swap usage: 0%
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
ubuntu@ip-172-31-17-222:~$
Copy
ssh -i "pem" ubuntu@"ip"
문법으로 인스턴스에 접속을 요청합니다.
다음 글에서 계속됩니다.


