S3란?
AWS(Amazon Web Service)의 S3는 Simple Storage Sevice의 약어로, 인터넷 스토리지 서비스를 의미한다.
쉽게 말하자면, 구글 드라이브처럼 파일을 저장하여 다른 사람들과 쉽게 공유할 수 있는 파일 저장 서비스를 의미한다.
프로젝트를 진행할 때는 이미지나 동영상 같이 큰 파일들을 서버에 업로드할 필요가 있는데,
이 때, S3를 사용하여 웹 스토리지에 보관해두면 쉽고 간단하게 파일을 관리할 수 있다.
S3 내의 데이터는 "버킷"이라는 리소스에 객체로 저장되며, 한 객체의 크기는 최대 5TB까지 가능하다고 한다. (거의 무한대)
객체는 S3 액세스 포인트를 통해서 액세스하거나 버킷 호스트 이름을 통해 직접 액세스 할 수도 있다.
또한, AWS 최초 가입 시 1년 동안 "프리티어"라는 조건 하에 5GB까지 S3를 무료로 사용할 수도 있다.
S3를 사용하는 이유
- 높은 내구도를 자랑하며 정보를 안전하게 저장할 수 있다.
- 저장 용량이 무한대이고, 파일 저장에 최적화되어 있다.
- 저렴한 비용으로 사용이 가능하다.
- 보안성이 뛰어나다.
- 속도가 빠르다.
- 별도의 스토리지 확장, 축소에 신경쓰지 않아도 된다.
- 파일 저장뿐만 아니라 데이터 소스, 데이터 백업, 로그 저장 등 폭넓게 쓰일 수 있다.
- 별도의 설치 없이도 HTTP(웹 주소) 만으로 파일 업로드/활용이 가능하다.
S3 버킷 / 객체의 개념
S3에는 버킷(Bucket)과 객체(Object)라는 단위가 있다.
객체(Object)는 데이터와 메타 데이터를 구성하고 있는 저장 단위이며, 이미지나 동영상 같은 파일이고,
버킷(Bucket)은 이러한 객체를 저장하고 관리하는 역할을 한다.
즉, 쉽게 말해 버킷은 폴더, 객체는 파일이라고 이해하면 쉽다.
만약 User라는 이름의 버킷 안에 test.csv 객체를 저장하면,
"https://User.s3.amazonaws.com/test.csv"
라는 URL이 생기게 되는 것이다.
이러한 URL을 통해 우리는 파일에 접근하고 데이터 분석 등의 작업을 진행할 수 있다.
이때, 한 계정 당 Bucket은 최대 100개까지 사용이 가능하며, 버킷 단위로 접근 제한을 설정할 수도 있다.
또한, 버킷의 이름은 S3에서 유일해야 한다. 즉, 전 세계 어디에도 중복된 이름이 존재할 수 없다.
S3에 저장되는 데이터는 모두 객체이며, 하나당 최대 5TB 까지 저장할 수 있고, 저장할 수 있는 객체의 수는 무제한이다.
S3 버킷 & 객체 만들기
이제, 2024년 6월 기준 S3 버킷 만드는 방법을 알아보자.
1. S3 접근 및 버킷 만들기 클릭
먼저 AWS 초기 화면에서 검색을 통해 S3에 들어간다.
2. 버킷 이름과 리전 설정
버킷 이름 (쉽게 말해 폴더 이름)과 리전을 설정한다.
버킷 이름은 유일해야 하며, 아래 링크를 참고해서 버킷 이름을 지정할 수 있다.
https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html
3. 객체 소유권 지정
ACL(Access Control List)은 버킷이나 객체에 대해 요청자의 권한 허용 범위를 어디까지 설정할 것인가에 대해 간단하게 설정할 수 있다.
여기서 요청자는 일반 퍼블릭한 사용자가 될 수도 있고, 계정의 owner나 특정 사용자가 될 수도 있다.
즉, ACL을 통해 S3 버킷이나 객체의 접근을 제어할 수 있다.
필자는 부트캠프 내의 게정 안에서 사용자를 등록해서 버킷을 만들었지만,
다른 사용자들도 접근이 가능하기 위해 ACL 비활성화를 선택하였다.
즉, 버킷의 소유자가 버킷의 모든 객체를 소유하고 관리할 수 있게 하였다.
4. 퍼블릭 액세스 설정
이제 퍼블릭 액세스에 관한 설정을 진행한다.
퍼블릭 액세스 권한은 말 그대로 모두에게 액세스 권한을 오픈할 것인지 아니면 임의의 사용자에게는 접근 권한을 제한할 것인지 설정하는 것을 말한다. 필요에 따라 퍼블릭 제한을 설정할 수 있으며, 실무에서는 보통 모든 액세스를 차단한다고 한다.
버킷 안의 객체들을 외부에 공개해야하는 케이스 등이 아닌 이상 퍼블릭 액세스는 차단하는 것이 좋다.
5. 버킷 버전 관리, 기본 암호화
버킷 버전 관리을 활성화하면 파일을 버전별로 관리하기 때문에 비용이 더 들게 된다.
그러나, 사용자가 실수로 파일을 삭제해도 복원할 수 있다고 한다.
일단은 비활성화로 진행하도록 하자.
기본 암호화를 활성화하면 버킷에 저장되는 모든 새 객체를 암호화해서 저장한다.
또한, 객체를 다운로드할 때 복호화해서 제공해준다고 한다.
모든 설정을 완료한 후, "버킷 만들기" 버튼을 누르면 버킷이 생성된다.
6. 버킷 생성 확인
이제 버킷이 생성된 것을 확인할 수 있다.
7. 객체 생성
이제 생성된 버킷 안에 객체(파일)을 업로드 해보자.
8. 객체 URL 접근
객체 URL을 클릭하면 업로드한 객체를 확인할 수 있다.
그러나, 맨 처음 버킷을 생성하고 링크를 클릭하면 다음과 같이 access denied가 발생할 것이다.
이는 아직 버킷이 퍼블릭으롯 설정되지 않았기 때문이다. 따라서 외부에서 해당 버킷에 접근할 수 이도록 버킷 정책을 수정해보자.
9. 버킷 정책 편집
앞서 발생한 Access Denied을 해결해보자.
권한 -> 버킷 정책 -> 편집을 클릭한다.
아래 보이는 버킷 ARN을 복사하고, 정책 생성기를 클릭한다.
아래와 동일하게 버킷 정책을 생성해준다.
- Select Policy Type : S3 Bucket Policy
- Add Statements : * 입력 (권한을 부여할 계정을 의미한다. *은 모두에게 부여)
- Actions : 1 Action(s) Selected 선택 (부여할 권한 의미. GetObject: 읽기, PutObject: 쓰기)
- ARN : 앞서 복사한 버킷 ARN을 붙여넣고, 뒤에 /* 을 추가한다.
"Generate Policy" 버튼을 클릭한다.
아래 제공되는 JSON 문서(생성된 정책)를 복사하고, Close를 선택한다.
다시 버킷 정책 편집에 돌아와서, 정책 칸에 앞서 복사한 JSON을 붙여넣고, 변경 사항을 저장한다.
이러한 버킷 정책(Bucket Policy)의 경우, 버킷을 사용할 권한을 가진 여러 명의 사용자 별로 각각의 행위에 대한 권한 범위를 설정할 수 있다. 예를 들어, A에게는 읽기, B에게는 쓰기만 설정할 수 있다.
<ACL VS Bucket Policy>
둘 다 버킷에 대한 액세스를 제한하거나 허용하는 권한 설정임은 동일하다.
- ACL : 버킷 뿐만 아니라 개별 객체에 설정을 적용할 수 있다.
- Bucket Policy : 버킷에 대해서만 권한을 설정할 수 있다.
10. 업로드한 객체 확인
이제 다시 업로드한 객체를 확인해보자.
다시 객체 URL을 눌러보면..
정상적으로 귀여운 강아지 사진이 업로드된 것을 확인하였다. &&**
끄읏-!
참고)
https://velog.io/@jinseoit/AWS-S3-bucket
'AWS' 카테고리의 다른 글
[AWS] S3 CSV 파일 RDS에 올리기 (파이썬 이용) (0) | 2024.06.24 |
---|---|
[AWS] EC2 인스턴스 위에 Redash 설치하기 (0) | 2024.06.23 |
[AWS] MFA 등록 방법 (0) | 2024.06.13 |