Amazon S3란 무엇인가요?

Amazon S3란 무엇인가요?

파일 하나를 영원히 안전하게 보관하고, 필요할 때 어디서든 꺼내 쓰고 싶다면 Amazon S3를 떠올리면 돼요. Amazon Simple Storage Service(Amazon S3)는 객체 스토리지(object storage) 서비스로, 업계에서 손꼽히는 확장성·가용성·보안·성능을 제공해요. 데이터 레이크부터 웹사이트 정적 파일, 백업·복원, 아카이브, 기업 애플리케이션, IoT 데이터, 빅데이터 분석까지 다양한 용도로 데이터를 담아두는 데 쓰여요.

출처: What is Amazon S3?

스토리지 클래스 (Storage classes)

S3의 가장 큰 장점 중 하나는 데이터의 사용 패턴에 맞춰 요금을 아낄 수 있다는 점이에요.

  • 자주 접근해야 하는 운영 데이터는 S3 Standard 또는 S3 Express One Zone에 두면 돼요.
  • 접근 빈도가 낮은 데이터는 S3 Standard-IAS3 One Zone-IA로 옮겨 비용을 줄일 수 있어요.
  • 아카이브 데이터는 S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive에 넣어 가장 낮은 비용으로 보관할 수 있어요.

S3 Express One Zone은 단일 가용 영역(AZ)을 선택하는 고성능 스토리지 클래스예요. S3 Standard보다 최대 10배 빠른 접근 속도와 50% 낮은 요청 비용을 내세워, 아주 낮은 지연 시간이 중요한 애플리케이션에 맞춰 설계됐어요. 객체 스토리지와 컴퓨팅 자원을 같은 가용 영역에 배치할 수 있어 최고 속도를 낼 수 있고, 초당 수십만 건의 요청을 감당하기 위해 **S3 디렉터리 버킷(directory bucket)**이라는 새로운 버킷 타입을 사용해요. 접근 패턴을 알 수 없는 데이터는 S3 Intelligent-Tiering에 두면, 접근 패턴에 따라 네 개의 티어 사이를 자동으로 이동하며 비용을 최적화해줘요.

스토리지 관리

장기 보관 데이터를 비용 효율적으로 다루는 데는 다음 기능들이 도움 돼요.

  • S3 Lifecycle — 수명주기 구성을 설정해 객체를 다른 스토리지 클래스로 전환(transition)하거나, 수명이 다한 객체를 만료(expire)시킬 수 있어요.
  • S3 Object Lock — 객체를 일정 기간 또는 무기한으로 삭제·덮어쓰기하지 못하게 잠글 수 있어요. WORM(한 번 쓰면 여러 번 읽기) 요구 사항을 충족해야 하는 규제 대응에 유용해요.
  • S3 Replication — 객체와 메타데이터·태그를 같은 리전 또는 다른 리전의 버킷으로 복제해 지연 시간과 컴플라이언스를 관리할 수 있어요.
  • S3 Batch Operations — 단일 API 호출이나 콘솔 클릭 몇 번으로 수백만·수십억 개의 객체에 Copy, Invoke AWS Lambda function, Restore 같은 작업을 일괄 수행할 수 있어요.

접근 관리와 보안

기본적으로 S3 버킷과 객체는 **비공개(private)**예요. 여러분이 만든 S3 리소스만 접근할 수 있다는 뜻이죠. 세밀한 권한이 필요할 때는 아래 기능을 조합해요.

  • S3 Block Public Access — 버킷·객체에 대한 공개 접근을 차단해요. 기본적으로 버킷 수준에서 켜져 있으며, 특별한 이유가 없는 한 그대로 유지하는 걸 권장해요.
  • AWS Identity and Access Management(IAM) — S3 리소스를 포함해 AWS 리소스에 대한 접근을 중앙에서 관리하는 권한 제어 서비스예요.
  • 버킷 정책(Bucket policies) — IAM 기반 정책 언어로 버킷과 객체에 대한 리소스 기반 권한을 설정해요.
  • Amazon S3 액세스 포인트(access points) — 전용 접근 정책을 가진 명명된 네트워크 엔드포인트로, 공유 데이터셋을 규모 있게 관리해요.
  • ACL(Access Control Lists) — 개별 버킷·객체에 읽기/쓰기 권한을 부여하는 방식이에요. 가급적 버킷 정책이나 IAM 사용자 정책을 쓰는 게 권장돼요.
  • S3 Object Ownership — 버킷 수준 설정으로 ACL을 켜고 끄며 접근 관리를 단순화해요. 기본적으로 ACL은 비활성이고, 버킷 소유자가 모든 객체를 소유해 정책으로만 접근을 관리해요.
  • IAM Access Analyzer for S3 — 버킷 접근 정책을 평가·모니터링해 의도한 접근만 허용되고 있는지 확인해요.

데이터 처리

S3에 저장된 데이터를 변형하고 워크플로를 자동화하는 데는 다음을 써요.

  • S3 Object LambdaGET, HEAD, LIST 요청에 여러분의 코드를 끼워 넣어 데이터를 애플리케이션에 반환하기 전에 필터링·이미지 크기 조정·민감 데이터 삭제 등을 처리할 수 있어요.
  • 이벤트 알림(Event notifications) — S3 리소스에 변화가 생기면 Amazon SNS, Amazon SQS, AWS Lambda를 통해 워크플로를 트리거할 수 있어요.

로깅과 모니터링

  • Amazon CloudWatch 지표 — S3 리소스의 운영 상태를 추적하고 예상 비용이 임계값에 닿으면 알림을 받을 수 있어요.
  • AWS CloudTrail — 사용자·역할·AWS 서비스가 S3에서 수행한 작업을 기록해 bucket·object 수준의 세부 API 추적을 제공해요.
  • 서버 액세스 로그(Server access logging) — 버킷에 들어온 요청의 상세 기록으로 보안·접근 감사에 활용할 수 있어요.

분석과 인사이트

  • Amazon S3 Storage Lens — 60개 이상의 사용·활동 지표와 대시보드로 조직 전체·계정·리전·버킷·프리픽스 단위 스토리지를 이해·분석·최적화해요.
  • Storage Class Analysis — 접근 패턴을 분석해 데이터를 더 저렴한 스토리지 클래스로 옮길 시점을 판단하게 도와줘요.

S3에 접근하는 방법

S3는 프로그래밍 언어에 중립적인 구조로 설계됐고, REST API를 통해 접근할 수 있어요. REST API는 표준 HTTP 요청으로 버킷·객체를 만들고 가져오고 삭제하는 인터페이스예요. HTTP를 지원하는 어떤 툴킷이든 사용할 수 있고, 익명으로 읽을 수 있는 객체는 브라우저로도 가져올 수 있어요. 직접 REST 호출을 쓴다면 서명(signature)을 계산해 요청에 붙이는 코드를 직접 작성해야 하고, 대신 AWS SDK를 쓰면 라이브러리가 인증 서명을 자동으로 계산해줘요. 오래된 SOAP API는 HTTP 프로토콜에서 더 이상 지원되지 않으니 REST API나 AWS SDK를 사용하는 걸 권장해요.

S3 요금

S3는 미리 저장 용량을 계획하지 않아도 되는 구조예요. 실제 사용한 만큼만 비용을 내면 되고 숨은 요금이나 초과 사용료가 없어요. AWS 계정에 가입하면 S3도 자동으로 이용할 수 있고, 사용한 서비스에 대해서만 과금돼요. 신규 고객은 프리 티어로 무료 시작이 가능해요.

더 알아보기