Amazon S3에 객체를 업로드할 때 스토리지 등급을 지정하지 않으면 기본 스토리지 등급(Standard 스토리지라고 함)에 업로드하게 된다.
Amazon S3 스토리지 등급을 통해 데이터 특징이 변경될 때 스토리지 티어를 변경할 수 있다. 예를 들어 오래된 사진에 가끔씩만 액세스하는 경우, 그 사진의 스토리지 등급을 변경하여 비용을 절감하는 것이 좋다. 수명주기 구성을 사용해 스토리지 클래스 간에 객체를 자동으로 이동할 수도 있다.
| 스토리지 등급 | 특징 | 사용 사례 | 가용성 |
|---|---|---|---|
| S3 Standard | 기본 스토리지, 자주 액세스되는 데이터에 적합. 지연 시간 짧고 처리량이 높음. | 웹사이트, 애플리케이션, 빅데이터 분석 | 99.99% |
| S3 Intelligent-Tiering | 자동으로 액세스 패턴 분석 후 적절한 계층으로 이동 | 액세스 패턴이 불규칙한 데이터 | |
| S3 Standard-IA (Infrequent Access) | 낮은 비용, 드물게 액세스되는 데이터에 적합, 검색 비용 발생. 최소 저장기간 30일 | 백업, 재해 복구 | 99.9% |
| S3 One Zone-IA | 단일 AZ(가용 영역)에서 운영, 비용 절감. 최소 저장기간 30일. | 재해 복구가 필요 없는 데이터 | 99.5% |
| S3 Glacier | 저비용, 장기 아카이브 저장용, 검색 비용 발생 | 규제 준수를 위한 데이터 보관 | |
| S3 Glacier Deep Archive | 최저 비용, 180일 이상 장기 보관에 최적 | 규제 준수, 데이터 보관소 |
Glacier 스토리지에는 세 가지 클래스가 있다.
밀리초 단위로 검색 가능. 분기에 한 번 액세스 하는 데이터에 적합.
최소 보관 기간이 90일이다.
세가지 옵션
두가지 검색 티어가 있음
사용 패턴에 따라 액세스된 티어 간에 객체를 이동할 수 있게 해준다.
소액의 월별 모니터링 비용과 티어링 비용이 발생하지만 검색 비용이 없다.
어떤 객체를 다른 클래스로 이전할 최적의 일 수를 결정할 때 이를 사용하면 편리하다.
Standard나 Standard IA에 관한 추천사항을 제시한다.
One-Zone IA나 Glacier과는 호환되지 않는다.
S3 Analytics를 실행하면 .csv보고서를 생성하고 약간의 추천사항과 통계를 제공할 것이다. 보고서는 매일 업데이트 될 것이며 분석결과가 나오는 게 보일 때 까지 24시간 내지 48시간이 걸릴 수 있다.
S3 Select는 Amazon S3에 저장된 객체에서 특정 데이터만 필터링하여 검색할 수 있는 기능이다. 일반적으로 S3에 저장된 CSV, JSON, Parquet 같은 파일을 처리할 때, 전체 데이터를 다운로드하지 않고 필요한 부분만 쿼리하여 가져올 수 있다.
S3 Select의 주요 특징
✅ 부분 데이터 조회 → 전체 파일을 다운로드하지 않고 필요한 데이터만 가져올 수 있음
✅ 쿼리 성능 최적화 → 네트워크 트래픽 감소 및 쿼리 속도 향상
✅ SQL 지원 → ANSI SQL을 사용하여 데이터 필터링 가능
✅ 지원 파일 형식 → CSV, JSON, Parquet

버킷 이름은 모든 리전과 AWS 모든 계정을 통틀어 전역적으로 고유한 이름을 사용해야 함. 버킷을 생성하면 AWS가 이 이름을 사용해 URL을 만듦. HTTP나 HTTPS를 통해 연결할 수 있어야 함. 그렇기 때문에 특수 문자, 공백을 포함할 수 없음. 문자와 숫자 하이픈만 사용 가능.
버킷은 리전별로 생성함.
다른 버킷에서 세팅을 복사해올 수도 있음.
공개 엑세스를 차단할 지 말 지 선택할 수 있다.
버킷 버전 관리를 활성화, 비활성화 할 수 있고
태그를 설정할 수 있다.
지금은 모두 기본값으로 두고 Create bucket 클릭
버킷을 만들면 버킷 목록에 전 리전에서 만든 모든 버킷들을 콘솔에서 확인할 수 있다.

업로드 시 Properties에서 해당 객체에 선택 가능한 다양한 스토리지 클래스를 볼 수 있고 선택할 수 있다.
프리티어는 Standard만 가능하다.
이미 만들어진 객체의 스토리지를 변경하고 싶으면 객체의 Properties 메뉴에서 스토리지클래스를 변경할 수 있다.
URL을 클릭하면 접근 거부됨. S3의 모든 항목은 비공개가 기본값이다.
하지만 객체에서 Open을 누르면 확인할 수 있는데 이는 내 자격증명으로 미리 서명된 URL이기 때문에 Object URL과는 달라서 내 계정에서는 볼 수 있다.
버킷의 Permissions에서 모든 퍼블릭 엑세스를 차단하는 기본 설정을 수정하여 모두 체크 해제
Object Ownership > Edit 선택하여 기본 ACLs disabled을 enable로 수정하고 변경사항을 저장한다.
그 뒤 객체 세부 페이지에서 Object actions > Make public using ACL 선택
접두어(prefix)를 사용하거나 태그를 통해 특정 객체들에 적용 가능.
아래 다섯 가지 '규칙 작업' 중 선택.
1) 스토리지 클래스 간 최신 버전의 객체 이동
2) 스토리지 클래스 간 이전 버전 객체 이동
3) 객체의 최신 버전 만료
4) 최신 버전이 아닌 객체 영구 삭제
5) 만료된 객체 삭제 마커 또는 완료되지 않은 멀티파일 업로드 삭제
Expirations Actions도 설정해서 일정 시간 뒤에 만료되어 객체 삭제(혹은 모든 파일 버전 삭제)를 설정할 수도 있음.
혹은 멀티파티 업로드가 2주 이상 되었는데 완전히 업로드가 되지 않으면 지울수도 있음.
리소스에 대한 액세스 권한을 조금 더 세분화해서 제공하기를 원한다. 액세스 제어와 관련해서는 사용자, 그룹, 역할에 연결된 IAM 정책을 사용하여 S3 콘텐츠에 액세스할 수 있고 S3 버킷 정책이라는 기능을 사용할 수도 있다.
IAM 정책 내의 명시적인 부인(DENY)은 S3 버킷 정책보다 우선적으로 고려된다.
S3의 버킷 정책(Bucket Policy)은 AWS S3 버킷에 대한 접근 권한을 정의하는 JSON 형식의 문서이다. 이 정책을 통해 특정 IAM 사용자, AWS 서비스, 또는 IP 주소 범위에 대해 버킷과 객체에 대한 접근을 허용하거나 거부할 수 있다. S3 버킷 정책은 버킷에 배치할 수 있으며 폴더 또는 객체에는 사용할 수 없다. 그러나 버킷에 배치된 정책은 해당 버킷의 모든 객체에 적용될 수 있다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/my-iam-user"
}
}
]
}
Statement: 정책의 본문으로, 각 Statement는 특정 행동(액션)에 대해 어떤 리소스(버킷, 객체)에 접근할 수 있는지를 정의한다.
각 Statement에는 다음 항목이 포함:
Effect: Allow 또는 Deny 중 하나를 선택하여 액션을 허용하거나 거부.
Action: 허용하거나 거부할 S3 작업(예: s3:GetObject, s3:PutObject 등).
Resource: 정책이 적용될 S3 리소스 (버킷 또는 객체).
Condition: 선택 사항으로, 특정 조건에 따라 액세스를 허용할지 결정.
Principal: 리소스에 접근할 수 있는 엔티티(IAM 사용자, IAM 역할, AWS 서비스 등)
Json형식으로 정책 설정을 하거나 Policy generator로 생성.
Amazon S3은 부분적으로 객체 이름을 사용하여 객체를 식별한다. 예를 들어 직원 사진을 Amazon S3에 업로드할 때 객체의 이름을 employee.jpg로 지정하고 employees라는 버킷에 저장할 수 있다. Amazon S3 버전 관리를 사용하지 않는 경우 employee.jpg라는 객체를 employees 버킷에 업로드할 때마다 원래 파일을 덮어쓰게 된다.
그러면 문제가 되는데, 그 이유는 다음과 같다.
👉🏻 일반적인 이름: employee.jpg라는 객체 이름은 직원 사진 객체에 흔한 이름이다. 버킷에 액세스할 수 있는 사람이 버킷을 덮어쓸 의도가 없었어도, 덮어쓴 경우에는 원래 객체에 액세스할 수 없다.
👉🏻 버전 보존: 여러 버전의 employee.jpg를 보존하고자 할 수 있다. 버전 관리를 사용하지 않고 새 버전의 employee.jpg를 만들려면 객체를 업로드하고 다른 이름을 선택해야 한다. 이름이 약간씩만 다른 객체가 여러 개 있으면 S3 버킷에서 혼동과 혼란을 야기할 수 있다.
Amazon S3의 버전 관리(Versioning)는 동일한 객체의 여러 버전을 저장하여 데이터 보호와 복구를 지원하는 기능이다.
버킷에 버전 관리를 활성화하면 Amazon S3은 객체의 고유한 버전 ID를 자동으로 생성한다. 한 버킷에 employeephoto.jpg(버전 111111)와 employeephoto.jpg(버전 121212) 같이 키는 동일하지만 버전 ID가 다른 2개의 객체가 있을 수 있다.
📌 S3 버전 관리의 주요 특징
버전관리가 일시 중지되면 새로운 객체에 대해 버전 관리가 일시 중지된다. 버킷의 새 객체에는 모두 버전이 지정되지 않는다. 그러나 기존의 모든 객체는 객체 버전을 유지한다.
✅ S3 버전 관리 사용 사례
🚀 S3 버전 관리 활성화 방법
파일이 덮어씌워졌으며 버킷의 객체 리스트에서 Show versions 토글을 눌러보면 각 파일의 버전 ID를 볼 수 있다.
👉🏻 Show versions 토글로 각 파일의 버전ID를 본 상태에서
갱신되기 전으로 돌아가고 싶으면 최신 버전의 파일 삭제
최신 버전의 버킷을 삭제 하면 되돌릴 수 없음. 파일은 이전 버전으로 돌아감.
👉🏻 각 파일의 버전ID를 보지 않는 상태에서
파일을 삭제하면 버전ID를 삭제하는 것이 아닌 삭제 마커를 부여해 삭제 처리를 한다.(=실제 객체를 지우는 게 아님)
이 상태에서 버전ID를 보면 삭제된 버전객체가 삭제마크를 단 채로 있는 것을 볼 수 있다. 해당 버전을 삭제하면 완벽하게 삭제되고 웹사이트에서도 반영된다.
객체를 한 스토리지 티어에서 다른 스토리지 티어로 계속해서 수동으로 변경하는 경우 Amazon S3 수명 주기 정책을 구성하여 이 프로세스를 자동화하는 것이 좋다.
객체 또는 객체 그룹에 수명 주기 구성을 정의할 때 전환과 만료라는 2가지 작업 유형 중 하나를 자동화하도록 선택할 수 있습니다.

인덱스는 index.html로 입력한다. 이 파일이 버킷에 있어야 하며 이는 웹 사이트의 기본 페이지이다.
설정을 저장한다.
복제 참조
- 복제를 활성화 한 후에 업로드 된 새로운 객체만 복제 대상이 된다.
- 기존의 객체를 복제하려면 S3 배치 복제 기능을 사용해야 한다.
- 작업을 삭제하려면 소스 버킷에서 대상 버킷으로 삭제 마커를 복제하면 된다.(옵션)
- 버전 ID로 삭제한 경우 버전 ID는 복제되지 않고 영구적으로 삭제된다.
- 체이닝 복제는 되지 않는다. (1번 버킷이 2번 버킷에 복제되어 있고, 2번 버킷이 3번 버킷에 복제돼 있다고 1번 버킷이 3번 버킷으로 복제되지 않는다.)
이름을 설정하고 상태는 활성화시킨다.
제한된 범위만 복제할 것인지, 버킷 내 전체 객체를 복제할 것인지 선택한다.
이 계정 혹은 다른 계정의 버킷을 지정할 수 있다.
그러면 기본 객체를 복제하겠냐고 프롬프트가 뜬다.
이때 YES를 하면 복제 활성화 전 객체도 복제하는 '배치 작업'이 처리된다.
No를 하면 복제 기능이 활성화 되어 그 시점 이후에 업로드된 객체만 복제된다.

이벤트를 생성, 확인, 편집이 가능하고 아마존 이벤트브릿지에 통합하는 것을 활성화할 수도 있다. 통합하게되면 모든 이벤트를 EventBridge로 보내게 된다.
이벤트를 선택하고 이벤트를 보낼 대상을 선택해 생성하면 된다.
그 전에 해당 대상에서 S3가 이벤트를 보낼 수 있도록 승인해야한다.
해당 대상의 엑세스 정책에서 대상의 ARN을 리소스로 설정하고 Actions는 SendMessage로 설정하고 허용한다.
S3에서 온 메세지를 확인할 수 있다.
파일의 특정 바이트 범위를 가져와 가져오기를 병렬화한다.
따라서 다운로드 속도를 높이는 데 사용할 수 있다.
직접 스크립팅 하지 않고 S3 Batch Operations를 사용하는 이유:
재시도 관리, 진행사항 추적, 작업 완료 알림 전송, 보고서 생성 등이 가능하기 때문
- 요약 메트릭 : 일반적인 인사이트 제공(스토리지 바이트, 객체 크기...)
사용 사례: 가장 빠르게 성장하거나 사용하지 않는 버킷과 접두사 식별
- 비용 최적화 메트릭: 스토리지 비용을 관리하고 최적화할 수 있는 인사이트 제공.
사용 사례: 이전 버전 혹은 불완전한 멀티파트 업로드 스토리지 바이트 수에 대한 정보로 데이터를 정리하거나 스토리지 클래스 전환
- 데이터 보호 메트릭: 데이터 보호기능에 대한 인사이트 제공. 모든 버킷이 버전 관리 등을 통해 활성화되었는지 확인할 수 있다.
사용 사례: 데이터 보호 모범 사례를 따르지 않는 버킷 식별
- 엑세스 관리 메트릭: S3 버킷 소유권에 대한 인사이트 제공
사용 사례: 버킷이 현재 어떤 객체 소유권 설정을 사용하고 있는지 식별
- 이벤트 메트릭: S3 이벤트 알림에 대한 인사이트를 얻고 S3 이벤트 알림이 구성된 버킷의 수를 파악할 수 있음
- 퍼포먼스 메트릭 : S3 전송 가속에 대한 인사이트를 얻고 S3 전송 가속이 활성화 된 버킷의 수를 확인할 수 있음
- 액티비티 메트릭 : 스토리지 요청(Get,Put,List,BytesDownloaded 등 요청)에 대한 인사이트를 제공
- Detail Status Code 메트릭 : HTTP 상태 코드에 대한 인사이트를 제공함. 200, 403 상태 등으로 버킷의 사용 유형을 파악한다.
메트릭을 선택할때 무료와 고급 메트릭 중 선택할 수 있다.
- 무료 지표(Free Metrics): 모든 고객에게 자동으로 제공되고 약 28개의 사용량 지표가 포함되어 있고 쿼리에 대한 데이터는 14일 동안 조회할 수 있다.
- 고급 지표 및 권장 사항(Advanced Metrics and Recommendations): 활동, 고급 비용 최적화, 고급 데이터 보호 및 상태 코드와 같은 추가 유료 지표 및 기능을 사용할 수 있는데 이러한 메트릭은 CloudWatch에 퍼블리쉬 되어 추가 비용 없이 액세스 할 수 있다. S3 버킷 내의 접두사 수준에서 메트릭을 수집할 수 있다. 결제 시 데이터는 15개월 동안 사용할 수 있다.