본문 바로가기
TIL : Today I learned (or Week)

TIL 230821 : AWS S3 (Simple Storage Service) 3 - 폴더 이름 정리, 권한 (버킷 정책, ACL)

by 우인입니다 2023. 8. 24.

이제 S3를 세팅하고 업로드하고 이를 http 요청을 받아서도 가능하게 까지 했다.

뭔가 디테일을 챙겨야할 것 같은 순간이다.

 

 

 

폴더정리

 

거의 마구잡이로 업로드 하다보니 메인 상위 폴더에 모든파일을 때려 부은 꼴이다.

폴더정리가 필요해 보인다.

 

폴더에 맞게 넣는 방법은 간단하다.

 

현재 코드

//파일 이름 가져오기.
String originalFilename = multipartFile.getOriginalFilename();

//S3서버에 업로드
amazonS3.putObject(bucket, originalFilename, inputStreamFile, metadata);

 

지금은 파일이름(originalFilename)을 그대로 가져와서 이것을 키 값으로 넣어주고 있다.

키값은 버킷안에 저장될 때 각 객체를 구분해줄 수 있는 고유의 값이다.

 

 

수정 코드

 : 폴더에 저장할 수 있게 변경했다. 단순히 문자열과 '/'를 추가해주면 인식해서 폴더로 정리해준다.

//파일 이름 가져오기.
String originalFilename = multipartFile.getOriginalFilename();

//폴더 분류
String folderName = "festival/";

//putObject 메소드 실행
amazonS3.putObject(bucket, folderName+originalFilename, inputStreamFile, metadata);

 

 

키가 중복되면?

키는 버킷내부의 객체의 고유식별자를 말합니다. 

고유식별자는 버킷 + 키 + 버전ID의 조합 으로 이루어지는데 해당 객체에 액세스를 할 때 https://버킷명.s3.리전명.amazonaws.com/키 형식으로 조회하는데 만일 키 이름이 중복되면 기존에 있던 객체가 덮어씌워지게 됩니다.

 

같은 이름의 파일로 계속 업로드 테스트를 진행했었는데, 중복되어 업로드되지 않았는데 이 이유에서였다.

 


 

권한설정

S3서버에는 모두가 접근할 수 있기에 권한을 설정하여 조회만 가능할 것인지, 수정 삭제가 가능할 것인 지 등 세분화해서 권한을 설정해줘야할 수 있다. 몇가지 방법으로 버킷 전체 혹은 객체별로 그 권한을 설정할 수 있다.

 

권한 관련해서는 두가지 단어를 많이 접했다.

버킷 정책 (Bucket Policy), ACL.

 

추가적으로 사용자 단위로 권한을 관리하는 IAM도 접했었는데, 각 차이는 아래와 같다.

우선 쉽게 이해하기로는,

버킷 정책은 버킷 단위로 접근 제어를 확정하고 이후에 변경이 적을 때,

ACL은 객체 단위로 접근 제어할 때,

IAM 제어는 사용자 단위로 접근 제어할 때 사용하는 것이 일반적이다.

 

 

현재 버킷 정책

지금 보니 모두에게 오픈된 버킷같다.

Principal에서 대상을 나타내는데 *로 했고,

Action도 s3 관련해서 모두 허용되어있다.

리소스도 버킷 전체에 전부 허용되어있다.

 

 

우선 키를 알고있는 상태에서 업로드와 다운로드는 모두가 할 수 있어야 하므로, 최소한의 액션만 허용하는 것으로 수정했다.

 


더 공부할 것

 

IAM과 연동해서 특정 계정, 사용자만 관리자 권한을 부여하는 방법

ACL이 객체별 권한 설정이 가능하다고 들었는데, 어떻게 하는 지? 그리고 어떨 때 활용하면 좋은 지?

 

 

S3가 사용은 쉬운데, 깊이 들어가면 디테일한 점들이 어렵고 복잡하다고 들었다.

이제야 조금이나마 그 깊이를 알듯 하다. (아직 모름)

 

 

 

 

참고링크

 

 

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-S3-%EB%B2%84%ED%82%B7-%EC%83%9D%EC%84%B1-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%8B%A4%EC%A0%84-%EA%B5%AC%EC%B6%95

https://kim-jong-hyun.tistory.com/83

https://techblog.woowahan.com/6217/

https://wooogy-egg.tistory.com/77