
vCPU : 가상 CPU의 갯수
EBS : EC2인스턴스에 장착되는 SSD같은 보조기억장치


서브넷 : 가용 영역이라고도 함.
종료 방식 : 중지라고 할 경우 종료시에 중지만하고, 다른 옵션은 종료시에 인스턴스까지 다 삭제해버리는 기능.
테넌시 : 가상 서버 실행 방식 설정, 공유됨과 전용 옵션이 있습니다.

위 항목에 대한 설명들은 여기에 정의 해놓았습니다.
단, 볼륨 유형에서 옵션들에 대한 정의는 여기에 있습니다.(General Purpose, Burst ... )


보안그룹 구성에서는 일단 테스트를 해보고 싶어서 아무거나 집어 넣었습니다.
후에 서버를 올리고 나면 오류와 같이 겪으면서 인바운드 규칙에 대해서 살펴보려고 합니다.

다음을 누르게 되면 마지막으로 키 페어를 생성하는데 새 키 페어 생성을 누르고 RSA방식으로 키를 생성한다.
아마존 웹 서비스를 다루는 기술 [키쌍으로 보안성 높이기]


PUTTY 사이트에 가서 PUTTY를 다운로드 받으면 puttygen 이라는 exe파일이 있는데 실행.

- Conversions를 클릭 후 import를 눌러서 키 페어를 생성하면서 받은 pem파일 열기.
- Save Private Key를 눌러서 파일 저장 (경고창 무시하고 '예' 클릭)


public 공인아이피가 생기긴 했지만 동적으로 변하는 아이피에 대해서 elastic ip를 생성해야함.
- 네트워크 및 보안에서 탄력적 IP를 클릭.

주의할 점은 탄력적 IP를 할당 받고, EC2 인스턴스에 연결하여 사용해야만 요금이 부과되지 않음.(http://aws.amazon.com/ko/ec2/pricing/)

탄력적 IP주소 할당 클릭

네트워크 경계 그룹에 내 EC2의 가용영역을 선택

이렇게 계속 다음을 눌러주게 되면 IP가 생성되는데 IP를 누르게 되면 탄력적 IP에 대한 정보와 다음과 같은 버튼이 하나 나온다. 클릭.

- 인스턴스를 선택해주고, 인스턴스를 입력 칸을 클릭하면 내가 생성한 EC2의 이름이 존재하는데 선택하면 프라이빗 IP주소도 자동으로 찾아진다.
- 인스턴스 대시보드에서 다시 내 인스턴스를 클릭하게 되면 인스턴스 정보와 탄력적 IP주소가 뜨게 되는데 그 아이피를 복사한다.

ip 주소 입력하고 좌측에 ssh -> auth로 이동.

[Brows...]를 누른 후 아까 puttygen에서 생성한 파일을 업로드.
putty 접속 상태 (ubuntu 라는 계정으로 로그인)

콘솔에 붙게되면
home경로에서 sudo git clone (git repository 저장소) .git 내 깃허브 저장소에 있는 프로젝트 파일들을 가져옵니다.
ex) git clone https://github.com/kimgy0/Spring_DATA_JPA.git
이렇게 clone을 하면 해당 디렉토리에 내 깃허브 저장소 이름의 폴더가 하나 생성되면 끝.
sudo apt-get update
sudo apt install openjdk-8-jdk
나는
java -version이라고 쳤을 때 명령어가 나와서 프로젝트를 java11로 했기 때문에 11을 다운로드 받았다.
ubuntu@:~/Android_API_Server$ java -version
Command 'java' not found, but can be installed with:
sudo apt install openjdk-11-jre-headless # version 11.0.11+9-0ubuntu2~20.04, or
sudo apt install default-jre # version 2:1.11-72
sudo apt install openjdk-16-jre-headless # version 16.0.1+9-1~20.04
sudo apt install openjdk-8-jre-headless # version 8u292-b10-0ubuntu1~20.04
sudo apt install openjdk-13-jre-headless # version 13.0.7+5-0ubuntu1~20.04
sudo apt install openjdk-17-jre-headless # version 17+35-1~20.04
sudo chmod 777 ./gradle
이 명령어를 통해서 권한을 777로 받는다.

sudo .graldew build
자바 설치하지 않았을 경우 $JAVA_HOME 환경 변수 에러.

😡 주의할 점
- 테스트 코드나 index.html은 API서버기 때문에 필요 없다. 지워줘야 빌드시 에러가 호출이 되지 않는다.
-git add --all , git commit -m "", git push origin branch
-git pull (github address).git
위 조치사항 후에 다시 빌드 해보자.


빌드가 정상적으로 완료되면 빌드 폴더가 생기고
build/libs폴더 안에jar파일이 생성됨 (일반 SNAPSHOT FILE을 실행)
java -jar 파일명.jar
😡 스프링부트는 톰캣 서버가 내장이라서 빌드된 파일만 실행해주면 서버가 가동된다.
커넥션 풀 연결 에러가 발생합니다.
보안 그룹 설정이 인스턴스를 생성 요청한 PC의 IP로만 제한되어 있는 상태인데 다른 IP의 EC2로는 접근이 불가능합니다. (현상태에서는 에러가남)
RDS 서비스로 돌아가서 인스턴스 정보에 VPC 보안그룹을 클릭합니다.

그다음 인바운드 규칙 편집에 들어가 MYSQL의 소스를 PRIVATE IP/32로 바꿔줍니다. (EC2로 올라간 스프링부트만 MYSQL을 건들거라서 이렇게 EC2의 PRIVATE IP로 설정했습니다.)

클라이언트 -> EC2로의 접근을 설정하는 작업.

EC2의 대시보드로 가서 인스턴스의 인바운드 규칙 편집을 클릭

생각해보니까 스프링부트 8080포트로 했는데 880이건 443이건 필요없는것같아서 지웠다.
서버 포트를 8080으로 yml에 설정해놓아서 사용자 정의로 8080으로 정의하고 모든 IP에 대해서 열어 두었다.
java -jar 파일명.jar

https://velog.io/@ovan/Ubuntu-Java8-%EC%84%A4%EC%B9%98
http://pyrasis.com/book/TheArtOfAmazonWebServices
https://webdir.tistory.com/105
https://wickies.tistory.com/100?category=768093