티스토리 뷰

스프링부트로 웹서비스 만들기 #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

 

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2.html

 

docs.aws.amazon.com

$ 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설정을 해보겠다.

 

 

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함