개발놀이터

AWS S3 본문

배포/AWS

AWS S3

마늘냄새폴폴 2023. 8. 14. 17:38

만약 애플리케이션에서 파일 업로드와 다운로드를 구현할 때 한번쯤 고려해보는 시스템이 바로 S3입니다. 

 

S3란 세개의 S를 말하는데요 Simple Storage Service 이렇게 S3입니다 (갑자기 꽃보다 남자의 F4가 생각나네요). 

 

S3는 그냥 단순하게 클라우드 저장소라고 보면 되는데 구글 드라이브와 다르지 않습니다. 하지만 구글 드라이브와는 다르게 S3는 단순한 저장소 이상으로 다양하게 사용할 수 있습니다. 

 

이번 포스팅에선 S3를 다양하게 사용할 수 있는 방법에 대해서 알아보고 직접 S3를 만들어보고 업로드까지 해보는 시간을 가져보겠습니다. 

 

1. 단순하게 저장소로 사용하는 방법

그냥 단순하게 저장소로 사용하는 방법입니다. 아주 심플하고 간단하죠. 클라우드처럼 저장해놓고 꺼낼 때 꺼내는 방법입니다. 간단하니까 넘어가죠

 

2. versioning을 하는 방법

여기서 조금 더 나아간 방법이 바로 versioning을 하는 방법입니다. 같은 버킷 안에 여러개의 다른 버전을 가지고 있으면서 버전 관리를 하는 방법이죠. 

 

하지만 이 방법은 그다지 좋은 방법은 아니긴 합니다. 왜냐하면 우리에겐 버전 관리의 끝판왕 깃허브가 있기 때문이죠. 

 

3. 접근 제어와 권한

S3 버킷은 AWS의 IAM을 이용하여 특정한 사람에게만 권한을 부여하여 접근할 수 있도록 설계할 수 있습니다. 이 말은 권한을 받지 못한 사람은 S3에 접근할 수 없다는 말입니다. 이런 인증과 인가를 통해 높은 수준의 보안을 챙길 수 있습니다. 

 

또한 IAM은 굉장히 세부적으로 권한을 컨트롤할 수 있어서 예를 들어 S3 저장소에 업로드는 가능하지만 삭제는 불가능한 IAM을 발급하여 회사에서 결정권한이 없는 직원들에게 부여한다던가 하는 방법이 있습니다. 

 

4. 로깅

애플리케이션을 운영하면서 생기는 로그들을 S3를 이용해서 관리할 수 있습니다.

 

물론 가격이 부담되긴 하겠지만 보통 로그를 관리하는데 사용하는 ELK 스택들과 다르게 다른 AWS 시스템들(CloudWatch)과 연동이 잘 되기 때문에 애플리케이션을 AWS로 운영한다면 나쁘지 않은 선택일 수도 있습니다. 

 

5. 성능 최적화

만약 애플리케이션에서 아주 무거운 JS파일을 가지고 있어서 이를 로드하는데 큰 부담이 된다면 S3에 무거운 JS파일들을 저장해두고 CloudFront와 같은 CDN을 이용해서 빠르게 JS 파일을 로드해올 수 있습니다. 

 

이건 조금 흥미롭네요. 추후에 CloudFront에 대해서 알아보고 실습도 해볼 생각입니다. 

 

6. AWS 람다와 콜라보

AWS Lambda (이하 람다)는 serverless의 대표주자로서 간단하게 설명하자면 서버와 인프라에 관련된 모든 것들을 AWS에게 전가하고 개발자는 비즈니스 로직에만 신경쓸 수 있도록 하는 것입니다. 

 

이런 람다를 S3의 데이터 저장과 삭제에 대해 트리거삼아 람다에게 명령을 내려줄 수도 있습니다. 예를 들어서 S3에 이미지가 저장되면 그것을 트리거 삼아서 람다를 통해 파이썬 코드로 해당 이미지를 스캔하고 PDF 파일로 변환하는 과정을 거친다거나 하는 방법이 있을 수 있겠네요. 

 

S3 만들어보자! 

먼저 S3를 검색하고 나온 페이지에서 "버킷 만들기"를 클릭합니다. 

 

원래 저 부분은 체크가 되어있습니다. 체크를 해제해줍니다. 

 

그리고 "버킷 만들기"를 클릭하면 됩니다. 

 

이름이 중복이라 그래서 새걸로 하나 만들었습니다. 

 

자 이제 우리가 만든 버킷을 클릭해서 들어갑니다. 

 

만든 static 폴더에 다시 들어와서 "업로드"를 누릅니다. 

 

이제 이 화면에 우리가 원하는 업로드 파일을 끌어다 놓고 "업로드" 를 누르면?

 

이렇게 업로드 된 것을 볼 수 있습니다. 

 

 

마치며

자 이렇게 우리는 S3를 어떻게 활용하는지 그리고 어떻게 버킷을 만드는지에 대해서 알아봤습니다. S3는 AWS를 이용하는 사람이라면 한번쯤은 써볼만한 중요한 시스템중에 하나라고 생각합니다. 

 

잘만 사용하면 활용도가 굉장히 높으니까 한번쯤 사용해보시는 것도 좋을 것 같습니다. 

 

저같은 경우는 S3를 스프링 프로젝트에서 파일 업로드 다운로드로 많이 사용하고 현재 작업하는 윈도우 컴퓨터에서 EC2인스턴스인 리눅스로 파일을 전송할 때도 S3를 많이 사용합니다. 

 

얼마 전에 올라왔던 "데이터베이스 서버와 애플리케이션 서버를 분리해보자" 포스팅에서도 pem 키를 윈도우에서 리눅스로 옮기는데 이 S3가 사용됐습니다. 

 

긴 글 읽어주셔서 감사합니다. 오늘도 즐거운 하루 되세요~

 

 

'배포 > AWS' 카테고리의 다른 글

Elastic Load Balancer (ELB) : (1)  (1) 2023.10.13
EC2 인스턴스 스토리지 (EBS, EFS)  (2) 2023.10.10
AWS IAM  (0) 2023.08.14
AWS EC2 용량 부족할 때 대처법  (0) 2023.06.16
리눅스 기본적인 명령어  (0) 2023.06.09