[AWS] S3 배포
DevOps

[AWS] S3 배포

반응형

S3는 Simple Storage Service의 약자로 AWS에서 제공하는 클라우드 스토리지 서비스입니다.

Amazon S3를 사용하여 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있다고 아마존에서는 설명 합니다.

https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/Welcome.html

 

 

S3 사용 시 얻을 수 있는 이점으로 높은 확장성이 있습니다. 확장성이 높으면 많은 시간과 수고를 들이지 않고 스토리지 규모를 확장/축소할 수 있습니다. 또한 S3에서는 스토리지의 용량을 무한히 확장할 수 있습니다. 그리고 사용한 만큼만 비용을 지불하면 되기 때문에 비용적인 측면에서 매우 효율적입니다.  S3는 99.999999999%의 내구성을 보장합니다.

슬라이드에 첨부된 지도를 보시면 주황색 동그라미가 쳐진 지역이 있습니다.

이 지역을 '리전(Region)'이라고 부릅니다. 리전이란 AWS에서 클라우드 서비스를 제공하기 위해서 운영하는 물리적인 서버의 위치를 뜻합니다. 그리고 지도를 다시 보시면 주황색 동그라미 안에 숫자가 새겨져 있는데, 이 숫자는 리전에 위치한 가용 영역의 수를 뜻합니다. 가용 영역(Availability Zone)이란 각 리전 안에 존재하는 데이터 센터(IDC)를 뜻합니다. 가용 영역은 각각 개별적인 위치에 떨어져서 존재합니다. 그래서 한 곳의 가용 영역이 재난이나 사고로 인해 가동이 불가능해지더라도 다른 가용 영역에 백업을 해놓은 데이터를 활용하여 문제없이 서버가 가동되게 합니다. 이런 가동 방식 덕분에 AWS에서 제공하는 서비스들은 높은 가용성과 내구성을 보장합니다.

 

S3 사용자들이 대표적으로 많이 선택하는 스토리지 클래스는 두 가지가 있습니다. Standard 클래스와 Glacier 클래스입니다. Standard 클래스는 범용적인 목적으로 사용하기 좋습니다. 데이터에 빠른 속도로 접근할 수 있고, 데이터 액세스 요청에 대한 처리 속도가 빠릅니다. 대신 데이터를 오래 보관하는 목적으로는 효율적인 선택지가 아닙니다. 보관 비용이 높게 발생하기 때문입니다.

 

정적 웹 사이트 호스팅

정적 파일은 서버의 개입 없이 생성된 파일을 뜻합니다. 반대로 클라이언트가 서버에 요청을 보내면, 서버가 요청에 맞추어 그 자리에서 생성한 파일을 '동적' 파일이라고 부릅니다.

 

웹 호스팅(Web Hosting)

웹 호스팅이란 서버의 한 공간을 임대해 주는 서비스를 뜻합니다. 구글에 '웹 호스팅'이란 단어를 검색하시면 여러 웹 호스팅 업체의 목록이 뜨시는 것을 확인하실 수 있습니다. 웹 호스팅 업체들을 통해 개인 또는 단체가 웹 호스팅 업체가 제공하는 서버의 한 공간을 빌려서 원하는 서비스를 배포할 수 있습니다.

 

S3에서 버킷

사용자들이 정적 웹 사이트를 배포할 수 있는 공간을 제공합니다. 버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있습니다.

 

S3에 저장되는 파일들이 담기는 바구니입니다. 파일을 저장하는 최상위 디렉터리라고도 설명할 수 있습니다. S3에서 저장되는 모든 파일은 버킷 안에 저장되어야 하고, 버킷에는 무한한 양의 파일을 저장할 수 있습니다. 그리고 각각의 버킷은 이름을 가지고 있는데, 버킷의 이름은 버킷이 속해 있는 리전(버킷이 생성된 지역)에서 유일해야 합니다. 또한 버킷 정책을 생성하여 해당 버킷에 대한 다른 유저의 접근 권한을 수정할 수 있습니다.

 

S3에서 버킷에 담기는 파일을 객체

S3에서 저장소에 데이터를 저장할 때 키-값 페어 형식으로 데이터를 저장하기 때문입니다. S3에 저장되는 객체는 파일과 메타데이터로 구성됩니다. 파일에 대해서 먼저 알아보겠습니다. 파일은 위에 설명한 대로 키-값 페어 형식으로 데이터를 저장합니다. 파일의 값에는 실제 데이터를 저장합니다. S3 객체의 값으로써 저장될 수 있는 데이터의 최대 크기는 5TB입니다. 파일의 키는 각각의 객체를 고유하게 만들어주는 식별자 역할을 합니다. 파일의 키를 이용하여 원하는 객체를 검색할 수 있습니다. 메타데이터는 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터입니다. 객체를 설명하는 데이터라고 이해하시면 좋습니다. 모든 객체는 고유한 URL 주소를 가지고 있습니다.

 

 

1. 버킷 생성

 

 

버킷 만들기에서 버킷 이름만 자유롭게 지어 생성합니다.

그러면 생성 목록이 나오고 목록에 이름을 클릭하게 되면 정보가 나오게 됩니다.

 

 

2. 정적 웹 사이트 호스팅 용으로 구성

여기서 속성에서 맨 아래 정적 웹사이트 호스팅 편집을 누릅니다.

 

비활성화를 활성화로 바꾸어 줍니다.

인덱스 문서, 오류문서에는 index.html 값을 기입해 줍니다.

혹시 모를 오류 발생 시 메인 페이지를 반환하기 위해서 'index.html'을 기입합니다.

 

 

 

다시 정적 웹사이트 호스팅으로 돌아가면 엔드포인트가 생성되어있지만 아직 사용할 수 없습니다.

버킷에 정적 웹 페이지 파일을 아직 업로드하지 않았고, 퍼블릭 액세스 설정 변경과 정책 생성을 하지 않았기 때문입니다.

 

 

3. 정적 웹 페이지 빌드

 

올리고자 하나는 파일 클라이언트에서 .env를 생성해주고 

클라이언트에서 리엑트를 REACT_APP_API_URL<주소> 를 넣어 입력 해줍니다. 

주소를 구매하여 따로 주소가 없는 경우에는 ec2로 시작하는 EC2 엔드포인트를 입력해 주면 됩니다.

 

서버와 클라이언트를 연결해주는 부분이라 생각하면 쉽습니다.

 

클라이언트에서 아래의 명령어를 입력하면

npm run build

build 폴더가 생성 됩니다.

 

그 폴더 안에 있는 각 파일 목록들을 전부 선택하여 

AWS 페이지 업로드 화면 아무곳에 드래그 하면 됩니다.

 

그리고 업로드를 하게 되면 아래와 같이 완료 해주면 됩니다.

 

 

4. 퍼블릭 액세스 차단 해제

목록중에 권한에 들어가

퍼블릭 액세스 차단 해제를 해주면 됩니다.

 

 

 

 

 

 

 

5. 정책 생성

이제 마지막으로 버킷 정책을 편집해주면 됩니다.

편집을 누르게 되면 아래 화면같이 생성 됩니다.

정책 생성기를 눌러주고 그림과 같이 설정해 준 다음

최종적으로 'Generate Policy' 버튼을 누르면 정책이 생성이 되고

복사를 하여 정책란에 복사 붙여넣기를 하면 됩니다.

 

 

 

정책을 저장하면 끝입니다.

 

확인해 보려면 속성 맨 아래 정적 웹 사이트 호스팅에 엔드포인트를 눌러보면 확인이 가능합니다.

업로드 하고자 하는 페이지가 뜨지 않으면

1. 빌드과정 주소를 잘못 입력

2. 빌드 파일 업로드를 잘못

3. 속성 설정 잘못

4. 속성 입력 잘못

순으로 확인 해보는게 좋을 것 같습니다.

 

 

반응형

'DevOps' 카테고리의 다른 글

[AWS] HTTPS 적용  (0) 2022.01.19
[AWS] RDS  (0) 2022.01.18
[AWS] EC2 배포 및 생성  (0) 2021.11.22
[AWS] EC2 ubuntu 시간 변경  (0) 2021.11.22
[배포] 자동화  (0) 2021.08.17