티스토리 뷰
스프링부트로 웹서비스 만들기 #2
먼저 AWS에 가입한다.
1. EC2 - CentOS 7
서비스 - EC2 - 좌측메뉴중 인스턴스 이동
[인스턴스 시작]클릭
첫화면에서 검색창에 CentOS로 검색 후 CentOS 7을 선택한다.
인스턴스 유형에서는 프리티어 사용 가능한 거로 선택.
프리티어는 적당한 성능으로 1년간 무료로 쓸수있게 제공해주는 서비스(?)이다.
이제 우측하단에 [검토 및 시작]버튼을 클릭.
그럼 바로 7단계로 넘어가게 되고 내가 선택한 인스턴스 유형의 정보와 요금등 정보가 나온다.
적당히 확인 후 우측하단에 [시작하기]버튼을 클릭
생성이 되면 아래와 같은 화면이 나온다
EC2서버에 접근할때 필요한 인증키이고 절대! 잃어버리면 안된다.
새 키 페어 생성을 선택하고 키페어 이름은 임의대로 정해서 다운로드 한다.
다운로드를 받고 나면 [인스턴스 시작]버튼이 활성화된다. 클릭.
맨 처음에 진입했던 EC2 서비스 - 인스턴스로 돌아가게 되면 내가 방금 생성한 인스턴스가 보인다
클릭을 하고 바로 위에 있는 [연결]버튼을 클릭하면 인스턴스에 연결할 수 있는 방법이 나온다.
접속을 위해 터미널을 켜고 연결 설명서에 나온대로 따라한다.
pem파일이 있는 위치로 이동 후 chmod를 이용해 파일의 사용권한 설정을 한다
그리고 AWS에서의 연결 명령어대로 root로 접근을 하려고 했더니
5번 라인에서처럼 root말고 centos라는 계정으로 접근하라는 문구가 나오며 접속을 끊어버린다.
이 부분은 다른 리눅스서버를 올리면 바르게 동작하는진 모르겠지만
CentOS를 설치했을때에는 바로 root로 접근하지 못한다.
그래서 똑같은 명령어에서 접속 계정만 centos로 변경해서 시도해보면 접속 성공.
% ls
my-ec2.pem
% sudo chmod 400 my-ec2.pem
% ssh -i "my-ec2.pem" root@내 퍼블릭 DNS주소
Please login as the user "centos" rather than the user "root".
Connection to 내 퍼블릭 DNS주소 closed.
% ssh -i "my-ec2.pem" centos@내 퍼블릭 DNS주소
2. RDS - MySql
서비스 - RDS - 인스턴스 - 데이터베이스 생성 클릭
손쉬운 생성으로 하고 MySql을 선택한다.
인스턴스 크기는 꼭 프리티어를 선택한다.
인스턴스 식별자와 마스터 암호는 임의대로 적도록 한다.
모두 입력하고 생성을 하게 되면 몇분의 시간이 소요된 후 완료가 된다.
생성이 완료가 되면 외부접근을 위한 추가 작업을 해줘야한다.
인스턴스를 선택 후 [수정]버튼을 눌러 진입한다.
스크롤을 내리다 보면 퍼블릭 액세스 가능성이 아니요로 되어있는데 이를 예를 바꿔준다.
물론 보안을 위해서라면 신중해야 하겠지만 나는 개발DB용으로 쓸거고 보안그룹에서 IP제한을 둘 것이기 때문에 예로 설정했다.
포트 인바운드 규칙또한 변경해줘야 한다.
인스턴스 정보 - 연결&보안 우측끝에 보면 VPC보안 그룹이 보인다. 클릭해 진입
한개의 보안그룹만이 보일거고 그 보안그룹을 클릭해 진입
하단에 [인바운드 규칙 편집]버튼을 클릭해 편집화면 진입
[규칙 추가] - MYSQL 선택 - 소스는 위치무관을 선택 - 규칙 저장
이제 DB에 연결을 해보자.
인스턴스 정보에서 연결&보안탭을 보면 엔드포인트 및 포트정보가 보인다.
나는 툴을 이용해 접속할 거고 툴은 DataGrip을 사용함.
접속 완료
3. S3
초반 진입과정은 위 둘과 비슷하다.
서비스 - S3 - 버킷 만들기 - 정보 입력 - 생성
S3의 생성자체는 쉽고 빠르다.
난 여기에 EC2를 통해서만 액세스를 할 수 있게 만들거다.
이를 위해선 IAM을 통해 역할 생성을 해야한다.
4. IAM(EC2 <-> S3용)
서비스 - IAM - 역할 - [역할 만들기] 진입
AWS 서비스 - 일반 사용 사례 -EC2 선택 - 우측하단 [다음:권한]
정책 S3 검색 후 AmazonS3FullAccess 선택 후 [다음:태그]
태그는 선택사항이라 Skip
역할 이름 대충 정하고 아래에 정책 제대로 선택했는지 확인 후 생성.
이제 다시 EC2 인스턴스로 이동을 한다
인스턴스 선택 후 위에 [작업] - [인스턴스 설정] - [IAM 역할 연결/바꾸기] 진입
위에 만들었던 IAM역할을 연결.
테스트를 위해 터미널을 열고 EC2에 접속한다.
test 디렉토리 아래에 mytext.txt파일을 생성하고 AWS CLI명령어를 통해 버킷에 업로드를 했다.
아래는 AWS CLI설치방법
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2.html
$ ls
centos test
$ ls test/
mytext.txt
$ aws s3 cp test s3://내 버킷 이름/ --recursive
upload: test/mytext.txt to s3://내 버킷 이름/mytext.txt
여기서 IAM을 왜 설정했는지 알아보도록 하겠다.
내가 올린 mytext.txt를 클릭하고 상세정보에 진입한 뒤 아래에
바로 다운로드를 받을 수 있게 제공해주는 객체URL이 있다. 이를 클릭하면 Access Denied가 뜨게된다.
아까 내가 설정한 IAM에 의해서 내 버킷에 대한 행위는 모두 내 EC2서버에서 이루어져야 하기 때문이다.
아까 올렸던 파일을 그대로 이름만 바꿔서 복사해오기.
EC2에서 S3로는 업로드/다운로드 모두 가능하지만 외부에서는 아무것도 할 수 없는걸 확인했다.
$ ll
합계 4
-rwxr-xr-x. 1 root root 29 4월 10 15:09 mytext.txt
$ pwd
/home/test
$ aws s3 cp s3://내 버킷 이름/mytext.txt /home/test/download.txt
download: s3://내 버킷 이름/mytext.txt to ./download.txt
$ ll
합계 8
-rw-rw-r--. 1 centos centos 29 4월 10 15:13 download.txt
-rwxr-xr-x. 1 root root 29 4월 10 15:09 mytext.txt
AWS를 이용한 환경 구성을 해봤다.
다음 시간엔 형상관리와 CI를 위한 Github과 Jenkins, 그리고 Docker설정을 해보겠다.
'개발' 카테고리의 다른 글
Spring Boot #4 : Docker 설치, Dockerfile을 이용한 Jar build, Docker Run (0) | 2020.04.15 |
---|---|
Spring Boot #3 : Jenkins로 CI하기, Github Webhook 연동 (0) | 2020.04.12 |
Spring Boot #1 : Spring Boot Multi Module, Gradle, JPA (0) | 2020.04.06 |
- Total
- Today
- Yesterday
- 스프링
- docker
- 프로그래머스
- jenkins
- 디비전2
- AWS
- 쿼리
- 킹스의킹
- 스팀
- 벤치멤버
- 점심
- 수원
- 디비전
- java
- 자바
- 토이프로젝트
- 패드
- ec2
- Spring
- 이클립스
- NBA
- 새크라멘토킹스
- Oracle
- springboot
- 오라클
- nba2k19
- 유플레이
- android
- 게임
- 엑스박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |