AWS-S3사용하기(구축)
전 세계에서 내 웹싸이트를 사용하게 하려면 어떻게 해야할까?
서버컴퓨터를 임대를 해서 서버컴퓨터에 내가 만든 API를 운영할 수 있도록 만들면된다.
그것을 도와주는 회사가 AWS,구글,MS 등이 있지만 AWS가 참조자료가 제일 많아서 사용해 보자!
S3란?
Simple Storage Service의 약자로 파일 서버의 역할을 하는 서비스다. 일반적인 파일서버는 트래픽이 증가함에 따라서 장비를 증설하는 작업을 해야 하는데 S3는 이와 같은 것을 대행한다. 트래픽에 따른 시스템적인 문제는 걱정할 필요가 없어진다. 또 파일에 대한 접근 권한을 지정 할 수 있어서 서비스를 호스팅 용도로 사용하는 것을 방지 할 수 있다. 아래는 S3의 주요한 기능적인 특성들이다.
S3에서는 파일서버라는 말을 사용하지 않고 객체라는 단어로 사용한다 이점을 주의할 수 있도록!!
S3관련된 기본 용어들 및 내용 정리
주요특징
- 많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다.
- 저장할 수 있는 파일 수의 제한이 없다.
- 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있다.
- 파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.
- HTTP와 BitTorrent 프로토콜을 지원한다.
- REST, SOAP 인터페이스를 제공한다.
- 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.
- 버전관리 기능을 통해서 사용자에 의한 실수도 복원이 가능하다.
- 정보의 중요도에 따라서 보호 수준을 차등 할 수 있고, 이에 따라서 비용을 절감 할 수 있다. (RSS)
객체
object, AWS는 S3에 저장된 데이터 하나 하나를 객체라고 명명하는데, 하나 하나의 파일이라고 생각하면 된다.
버킷
bucket, 객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다. 버킷 단위로 지역(region)을 지정 할 수 있고, 또 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.
버전관리
S3에 저장된 객체들의 변화를 저장. 예를들어 A라는 객체를 사용자가 삭제하거나 변경해도 각각의 변화를 모두 기록하기 때문에 실수를 만회할 수 있다.
BitTorrent
분산된 파일 배포 시스템이라고 정의 할 수 있다. 여기서 분산이란 하나의 서버에서 파일을 배포하는 것이 아니라, 파일을 가지고 있는 컴퓨터들로부터 조금씩 파일을 다운받은 후에 이것을 붙여서 완전한 파일을 만드는 방식이다. 대용량의 파일을 배포할 때 BitTorrent를 사용하면 비용을 크게 절감 할 수 있다. BitTorrent에 대한 자세한 설명은 생활표현의 BitTorrent 수업을 참고한다.
RSS
Reduced Redundancy Storage의 약자로 일반 S3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식. 대신에 가력이 저렴하기 때문에 복원이 가능한 데이터, 이를테면 섬네일 이미지와 같은 것을 저장하는데 적합하다. 그럼에도 불구하고 물리적인 하드 디스크 대비 400배 가량 안전하다는 것이 아마존의 주장
Glacier
영어로는 빙하라는 뜻으로 매우 저렴한 가격으로 데이터를 저장 할 수 있는 아마존의 스토리지 서비스
1.S3에 접속해서 버킷을 만들어보자.
버킷 이름에 자신이 원하는 name을 타이핑 해주자.
체크가 되어있다면 눌러서 풀어줘야지 우리가 이미지를 업로드 할 수 있다.
2.버킷 생성이 완료가 됬으면 해당 버킷을 클릭해서 들어간 후 권한 Tab으로 이동하자.
3. 버킷정책을 편집해보자.
-예시가 있기때문에 문서를 보고 참조 할 수 있도록 합시다.
statement가 우리만의 정책을 작성하는 공간이다.
지금 밑에 정책은 permission을 추가해 주었다. 이미데이터를 가져오고 추가하는 행위를 모든사람들에게 허락을 해주었다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::여러분의버킷이름/*"
}
]
}
4. 보안자격증명에서 accessKey를 발급받자.
일단 위에처럼 버킷을 생성하고 정책을 작성했다면 다음 할일은 보안자격증명에서 accessKey를 발급받는 것이다.
5. 내 프로젝트에서 s3를 사용해보자.
요약 : 나는 nest를 사용해서 API를 제작하였고, API중에서 이미지를 업로드하는 부분이 있어서 이부분을 S3로 대체하는 것이다.
만약 내 글을 보고 따라해보는 사람들이 있는데 자신의 프로젝트가 없이 다만 s3만 테스트 해보고 싶다면 위에 있는 내 github에서 clone 한 다음 test및 공부를 진행하면 될 것 같다.
env파일에 이와같이 작성해 주었으며 절대로 이 파일은 공개가 되면 안되는 파일이다.
결국 키를 가지고 aws s3에 접근할 수 있게 만들고 그 다음 s3에 Img,mp4파일 등을 저장하고 DB에는 경로만 저장한다.
러프하게 말하면 구글드라이브에 파일을 올려놓고 가져다 사용한다고 아주 러프하게말하면 그렇다는 것이다.