프론트엔드 배포, 데이터 아카이브 용도의 S3 버킷 생성입니다.

실무에서 사용이 목적이라면 맞지 않습니다.

 

S3검색 > 버킷

 

버킷 만들기

 

버킷 이름과 리전을 알맞게 선택

도메인을 사용할 것이라면, naver.com 이런식으로 www를 제외한 .com or .net 까지 도메인명으로 버킷이름을 만들어야 한다.

데이터 아카이브 용도라면 알아보기 쉽게 버킷 이름을 설정.

모두 해제 ( 실무 사용 시 ACL 및 암호 지정 필요 )

나머지는 디폴트로 버킷 생성

 

데이터 아카이브 용도라면 여기까지 설정 하면 됩니다.

 

 

프론트 배포 용도라면 추가로 몇가지 설정이 필요합니다.

속성 항목 최하단

정적 웹 사이트 호스팅 편집

 

정적 웹 사이트 호스팅 활성화

인덱스 문서, 오류 문서 index.html 입력

 

권한 > 버킷 정책 편집

 

정책 생성기

 

Select Type of Policy : S3 Bucket Policy

 

Principal : *

 

Actions : GetObject

 

ARN 복사

 

ARN 입력 후 /* 추가

 

Add Statement 클릭 > Generate Policy 클릭

 

복사

 

버킷 정책 편집으로 돌아와 붙여넣기 > 변경사항 저장

 

 

 

EC2 검색 > 인스턴스

 

인스턴스 시작 클릭

 

이름 지정

 

OS 선택 (여기선 ubuntu Server 22.04 LTS )

 

 

인스턴스 유형 t2.micro 

 

 

키 페어 선택 

없다면 새 키 페어 생성

 

.pem으로 생성

putty 사용자라면 .ppk

 

네트워크 설정 > 네트워크 편집

VPC 선택 > 서브넷 선택 여기선 ap-northeast-2a

 

퍼블릭 IP 자동 할당 ( 탄력적 IP 사용 예정이라면 비활성화)

https://yes5.tistory.com/25

 

AWS 탄력적 IP 할당 ( 퍼블릭 IP 고정 )

AWS에서 EC2 검색 네트워크 및 보안 > 탄력적 IP 탄력적 IP 주소 할당 네트워크 경계 그룹 ap-northeast-2(서울) 탄력적 IP주소 할당 성공 화면 이전 게시물에서 복사한 test2 인스턴스에 할당 https://yes5.tist

yes5.tistory.com

 

보안 그룹이 이미 있다면 기존 보안 그룹에서 선택

없다면 위와 같이 ssh (22번 port) 0.0.0.0/0으로 열어준다.

자신의 PC 아이피를 안다면 0.0.0.0/0 모든 허용 대신

자신의 아이피/32 허용으로 하는게 더 바람직하다.

 

EBS 볼륨크기는 30GB 이하로 알맞게 설정한다.

인스턴스 시작

 

인스턴스 목록에서 first ec2 인스턴스가 생성된 것을 확인.

 

1~2분 후 대기중 > 실행중으로 변경된 것을 확인.

 

ssh 클라이언트를 이용해 접속 확인을 해보고 싶다면

https://yes5.tistory.com/26

 

AWS EC2 ssh 비밀번호로 접속

보통 EC2 인스턴스를 생성하거나, 복제할 때 키 페어를 생성 및 선택한다. 혹은 EC2 검색 > 네트워크 및 보안 > 키 페어에서 키 페어 생성 및 수정이 가능하다. ssh client로 xshell 사용자는 .pem putty 사

yes5.tistory.com

 

 

EC2 서버와 S3 버켓은 구축 되어 있다고 가정하고 시작한다.

안 되어 있다면

https://yes5.tistory.com/29

 

AWS EC2 생성 (ubuntu 프리티어)

EC2 검색 > 인스턴스 인스턴스 시작 클릭 이름 지정 OS 선택 (여기선 ubuntu Server 22.04 LTS ) 인스턴스 유형 t2.micro 키 페어 선택 없다면 새 키 페어 생성 .pem으로 생성 putty 사용자라면 .ppk 네트워크 설

yes5.tistory.com

https://yes5.tistory.com/30

 

AWS S3 버킷 생성 JS, React 배포, 데이터 백업

프론트엔드 배포, 데이터 아카이브 용도의 S3 버킷 생성입니다. 실무에서 사용이 목적이라면 맞지 않습니다. S3검색 > 버킷 버킷 만들기 버킷 이름과 리전을 알맞게 선택 도메인을 사용할 것이라

yes5.tistory.com

 

먼저 s3와 통신이 되는지 확인해 본다.

aws s3 ls

aws configure를 지정하지 않아

Unable to locate credentials. You can configure credentials by running "aws configure".

에러가 발생한다.

 

IAM 검색 > 엑세스 관리 > 사용자

 

사용자 생성 클릭

 

IAM 권한에 관한 게시물이 아니기 때문에 test용 계정을 생성한다.

사용자 이름 : test등 임의로 설정

AWS Management Console에 대한 사용자 엑세스 권한 제공 > IAM 사용자를 생성하고 싶음

콘솔 암호 > 사용자 지정 암호

 

다음

사용자 생성

 

사용자 목록으로 돌아가기

 

계속

 

사용자 이름 클릭

 

보안 자격 증명 > 엑세스 키 > 엑세스 키 만들기

 

CLI 체크 다음

 

엑세스 키 만들기

 

엑세스 키 및 비밀 엑세스 키 확인

비밀 엑세스 키는 이 화면에서 한번 확인 후 확인이 불가능 하니 따로 저장해 놓는다.

 

엑세스 관리 > 사용자 그룹 > 그룹생성

 

그룹 이름을 설정하고, 방금 만든 계정을 추가, AdministratorAccess 정책 선택 후 그룹 생성

 

이제 다시 xshell로 돌아가

aws configure

1. 엑세스 키 복붙

2. 비밀 엑세스 키 복붙

3. ap-northeast-2 ( 해외 리전의 경우 알맞게 입력 )

4. 엔터

 

aws s3 ls

 

 

s3와 통신이 되는 것을 확인

 

touch test.txt
echo "test" > test.txt

 

# aws s3 cp test.txt ( S3 버켓 명과 도착지 경로 및 파일명 입력 예시 : s3://kimohseong-test/test.txt )
aws s3 cp test.txt s3://kimohseong-test/test.txt

 

AWS 콘솔 화면에서 S3 버켓 접속 후 파일 복사 확인

 

EC2 - S3 간 파일 복사는 위 설명대로 하면 될것이다.

이제 crontab과 bash 스크립트를 이용해 로그 백업 시스템을 만들어보자.

 

EC2 검색 > 인스턴스

 

용량 증설 할 인스턴스 ID 클릭 (test2)

 

스토리지 탭 > 볼륨 ID 클릭

 

볼륨 선택 > 작업 > 볼륨 수정

 

크기 지정 10 > 20

 

 

 

옵티마이징하는 동안 시간이 소요된다.

 

일정 시간 기다리면 크기가 10 > 20 GB로 변경 됐고, 사용 중으로 표시된다.

 

 

df -Th

ec2 서버에 접속해서 확인 해보면 여전히 10G.

 

lsblk

lsblk 명령어로 20G 확인 및 디스크 유형 확인 (xvda or nvme)

# xvda의 경우
sudo growpart /dev/xvda 1

# nvme의 경우
sudo growpart /dev/nvme0n1 1

# xvda, nvme 동일
sudo xfs_growfs -d /

 

20G 증설 확인

 

 

AWS에서 EC2 검색

 

네트워크 및 보안 > 탄력적 IP

 

탄력적 IP 주소 할당

 

네트워크 경계 그룹 ap-northeast-2(서울)

 

탄력적 IP주소 할당 성공 화면

 

이전 게시물에서 복사한 test2 인스턴스에 할당

https://yes5.tistory.com/24

 

AMI를 이용한 서버 복사

인스턴스 Name test로 진행 인스턴스 ID 클릭 작업 > 이미지 및 템플릿 > 이미지 생성 이미지 이름 : 알아보기 쉬운 이름으로 지정 예) 서버용도_날짜 이미지 설명 : 이미지에 대한 설명 재부팅 안 함

yes5.tistory.com

 

인스턴스 및 프라이빗 IP 주소 선택

 

 

EC2 인스턴스 목록에서

퍼블릭 IP, 탄력적 IP 할당된 모습 확인.

 

고정된 IP로 ssh 접속 확인.

 

탄력적 IP는 할당 받고 연결 하지 않으면 요금이 발생한다. 미사용시 삭제.

인스턴스 Name test로 진행

인스턴스 ID 클릭

 

작업 > 이미지 및 템플릿 > 이미지 생성

 

이미지 이름 : 알아보기 쉬운 이름으로 지정 예) 서버용도_날짜

이미지 설명 : 이미지에 대한 설명

재부팅 안 함 : 복제 시 재부팅 여부 결정, 서비스 중이라면 활성화를 하여 재부팅 방지

크기 : 복제 본의 용량 크기 설정 Gbyte 단위

종료시 삭제 : 종료 시 삭제 여부 결정

 

이미지 > AMI 이동

대기중 상태로 이미지가 생성된다.

이미지 크기가 클 수록 생성되는데 시간이 많이 소요된다.

 

이미지 > AMI 카탈로그에서 사용 가능한 퍼블릭 AMI 목록을 볼 수 있다.

 

이미지 상태가 사용 가능으로 변경 되면,

 

AMI ID 클릭 > AMI로 인스턴스 시작 

 

사용 할 서버 이름을 입력하고,

AMI는 자동으로 지정이 된다.

 

인스턴스 유형과 키 페어를 선택

 

putty를 ssh 클라이언트로 이용할 경우 .ppk

xshell 이용 시 .pem

 

네트워크 설정 (vpc, 서브넷, 보안그룹 등) 상황에 맞춰 설정

탄력적 IP를 사용할 예정이라 IP 자동할당을 비활성화 했다. 탄력적 IP 사용하지 않을 경우 활성화

https://yes5.tistory.com/25

 

AWS 탄력적 IP 할당 ( 퍼블릭 IP 고정 )

AWS에서 EC2 검색 네트워크 및 보안 > 탄력적 IP 탄력적 IP 주소 할당 네트워크 경계 그룹 ap-northeast-2(서울) 탄력적 IP주소 할당 성공 화면 이전 게시물에서 복사한 test2 인스턴스에 할당 https://yes5.tist

yes5.tistory.com

 

 

test2 인스턴스 대기 중 상태 확인

잠시 기다리면 실행 중으로 변경된다.

 

  • 시나리오 : nginx를 이용한 로드 밸런싱 구현
  • 필요 서버 : nginx 1ea, express 2ea

이번 포스팅은 기존 express 서버가 있고, express 서버 한 대를 추가하는 내용이다.

- 추가로 node 버전이 두 서버 안 맞는 경우가 있어 버전 통일도 진행.

 

  • EC2 설치

  • 프리티어로 사용할 것이기 때문에 ubuntu Server 22.04 LTS를 선택한다. 

  • 인스턴스 유형은 t2.micro
  • 키 페어는 만들어 둔 페어로 사용

 

  • 2대 이상 서버로 구축할 것이라면 서브넷, 보안그룹을 맞춰주는게 편한다.

  • 서브넷은 기존  ec2서버 서브넷이 ap-northeast-2a 로 되어있어 같이 맞춰준다.

  • 보안 그룹도 launch-wizard-1로 맞춰준다.

  • 8GiB 이상 필요하지 않아 기본값으로 만들었다. 30GiB까지 프리티어라고 한다.

  • 인스턴스 시작 버튼 클릭

 

 

  • 퍼블릭 IP를 확인하고 ec2에 접속한다. (여기선 git bash 사용)

 


  • node, npm 버전 맞추기

기존 코드 clone을 받아 npm i를 했다. read-shrinkwrap 에러가 발생한다.

이유는 lockfileVersion이 1, 이는 npm 버전이 6이하라는 것이다. 7부터 lockfileVersion 2로 변경

 

  • 우선 node와 npm을 지우자

sudo apt-get remove nodejs -y

sudo apt-get remove npm -y

 

  • 버전 확인해서 지워진것 확인해보고

node -v

npm -v

 

  • node 다시 설치

sudo apt install curl

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

(setup_숫자는 버전을 의미한다.)

sudo apt-get install node.js -y

 

  • 버전 확인

node -v

npm -v

 

'Infra > AWS' 카테고리의 다른 글

AWS EC2 생성 (ubuntu 프리티어)  (0) 2023.10.23
EC2 - S3 파일 복사  (1) 2023.10.23
AWS EC2 용량 추가 (EBS 볼륨 증설)  (1) 2023.10.23
AWS 탄력적 IP 할당 ( 퍼블릭 IP 고정 )  (0) 2023.10.23
AMI를 이용한 서버 복사  (1) 2023.10.23

+ Recent posts