다들 알고 있다시피 AWS는 양아치다.
free tier로 EC2의 t2.micro 인스턴스를 거의 공짜로 사용할 수는 있지만, 이 t2.micro의 성능이 허접하기 짝이 없어서 vs code와의 원격 연결을 버티는 게 거의 불가능하다.
그렇기 때문에 나는 코드를 작성하거나 수정해야 할 때는 인스턴스 유형을 t2.medium으로 올리고 실시간으로 돈이 빠져나가는 것에 위기감을 느끼면서 코딩을 한 후에, 다시 인스턴스를 중지시킨 후 인스턴스 유형을 다시 t2.micro로 되돌리곤 했었다.
그러나 이렇게 ec2를 이용한 것도 거의 1년 반 전, 정글입소 후에는 최대한 aws를 이용하지 않는 방식으로 공부를 하다가(linux를 써야할 땐 WSL로 때웠다.) 결국 나만의 무기 만들기를 위한 사전 연습과정 주차가 되어서야 ec2와 마주하게 되었고 익숙한 거지같음을 다시 맛보게 되었다.
그런데 ssh를 통하여 연결을 하려 하니, 한번 연결이 되었다가 계속 연결이 불가능해지는 것이 아닌가? 저
"프로세스에서 없는 파이프에 쓰려고 했습니다."
라는 오류메시지를 내보내면서 연결이 안 되는 것이었다.
저 오류 메시지를 구글링해가면서 본 많은 해결책들을 적용해보아도 해결되지 않는 것이었다. 애초에 한번 연결이 되었다가 안 되는 경우는 대체 무슨 경우지 싶었다. 그러던 와중 .ssh 폴더 내의 config 파일 내의 HostName 뒤에 붙는 IP와 ec2 인스턴스의 IP가 어느새 달라진 것을 확인했다.
어째서 달라진 것일까 하고 확인해 본 결과를 대충 요약하자면, IPv4의 고질적 문제인 개수 부족 문제 때문에 AWS의 EC2 에서는 인스턴스를 중지, 재시작 할 때마다 IP 주소를 다르게 부여하기 때문에 일어나는 문제였던 것이다.
이를 해결하기 위해선 ec2 인스턴스에 탄력적 IP를 설정해주어야 한다.
우선 왼쪽 사이드 바를 눌러서 탄력적 IP를 할당받아야 한다.
이후 할당 버튼만 누르면 쉽게 할당받을 수 있다. 그리고 나서 할당받은 탄력적 IP를 ec2 인스턴스에 연결해주어야 한다.
할당받은 탄력적 IP를 클릭하고 다음과 같은 창에서 탄력적 IP 주소 연결을 할 수 있다.
이후 내가 탄력적 IP를 연결하고 싶은 인스턴스를 골라서 연결하기만 하면 끝이다.
이렇게 하면 ec2를 중지했다가 재시작하더라도 IP주소가 변경되지 않으므로 .ssh 폴더의 config 파일이나 git bash 의 ssh를 통한 연결시에도 항상 동일한 명령어를 써서 연결할 수 있게 된다.
그리고 여기에는 한가지 주의점이 있는데, 먼저 활성화 된 인스턴스에 탄력적 IP를 할당하는 것은 요금이 부과되지 않으나, 인스턴스에 등록되지 않은 채 탄력적 IP만 청구하는 경우에는 비용이 발생한다고 한다. 그렇기 때문에 인스턴스 사용을 종료한 후에 탄력적 IP를 반드시 릴리스해줘야 추가적인 요금이 청구되지 않을 것이다.