Amazon S3란 무엇인가요? - Amazon Simple Storage Service

Amazon S3란 무엇인가요?

Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스입니다. 모든 규모와 업종의 고객은 Amazon S3를 사용하여 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 다양한 사용 사례에서 원하는 양의 데이터를 저장하고 보호할 수 있습니다. Amazon S3는 특정 비즈니스, 조직 및 규정 준수 요구 사항에 맞게 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공합니다.

참고

Amazon S3 Express One Zone 스토리지 클래스를 디렉터리 버킷과 함께 사용하는 방법에 대한 자세한 내용은 S3 Express One Zone이란?디렉터리 버킷 섹션을 참조하세요.

Amazon S3의 기능

스토리지 클래스

Amazon S3는 여러 사용 사례에 맞춰 설계된 다양한 스토리지 클래스를 제공합니다. 예를 들어 자주 액세스하기 위해 미션 크리티컬 프로덕션 데이터를 S3 Standard 또는 S3 Express One Zone에 저장하고, 액세스 빈도가 낮은 데이터를 S3 Standard-IA 또는 S3 One Zone-IA에 저장하여 비용을 절감하고, S3 Glacier Flexible Retrieval 및 S3 Glacier Deep Archive에 가장 낮은 비용으로 데이터를 보관할 수 있습니다.

S3 Express One Zone은 지연 시간에 가장 민감한 애플리케이션에 대해 일관되게 10밀리초 미만의 데이터 액세스를 제공하도록 특별히 설계된 고성능 단일 영역 Amazon S3 스토리지 클래스입니다. S3 Express One Zone은 현재 사용 가능한 클라우드 객체 스토리지 클래스 중 지연 시간이 가장 낮으며, S3 Standard보다 데이터 액세스 속도는 최대 10배 빠르고 요청 비용은 50% 저렴합니다. S3 Express One Zone은 객체 스토리지를 컴퓨팅 리소스와 함께 배치하는 옵션을 제공하면서 단일 가용 영역 선택이 가능한 최초의 S3 스토리지 클래스로, 최고의 액세스 속도를 제공합니다. 또한 액세스 속도를 더욱 높이고 초당 수십만 건의 요청을 지원하기 위해 데이터는 새로운 버킷 유형인 Amazon S3 디렉터리 버킷에 저장됩니다. 자세한 내용은 S3 Express One Zone이란?디렉터리 버킷 단원을 참조하세요.

액세스 패턴이 변경되거나 알 수 없는 액세스 패턴이 있는 데이터를 S3 Intelligent-Tiering에 저장할 수 있습니다. 이렇게 하면 액세스 패턴이 변경될 때 4개의 액세스 계층 간에 데이터를 자동으로 이동하여 스토리지 비용을 최적화할 수 있습니다. 4개의 액세스 계층에는 빈번한 액세스와 간헐적인 액세스에 최적화된 2개의 대기 시간이 짧은 액세스 계층과, 비동기 액세스용으로 설계되어 드문 액세스에 최적화된 2개의 옵트인 아카이브 액세스 계층이 포함되어 있습니다.

자세한 내용은 Amazon S3 스토리지 클래스 사용 단원을 참조하십시오. S3 Glacier Flexible Retrieval에 대한 자세한 내용은 Amazon S3 Glacier 개발자 안내서를 참조하세요.

스토리지 관리

Amazon S3에는 비용 관리, 규정 요구 사항 충족, 대기 시간 단축, 규정 준수 요구 사항에 맞게 여러 개의 개별 데이터 복제본 저장을 수행할 수 있는 스토리지 관리 기능이 포함되어 있습니다.

  • S3 수명 주기 - 수명 주기 구성을 설정하여 객체를 관리하고 수명 주기 동안 객체를 비용 효율적으로 저장할 수 있습니다. 객체를 다른 S3 스토리지 클래스로 전환하거나 수명이 다한 객체를 만료시킬 수 있습니다.

  • S3 객체 잠금 - 고정된 시간 동안 또는 무기한으로 Amazon S3 객체의 삭제 또는 덮어쓰기를 방지할 수 있습니다. 객체 잠금을 사용하면 WORM(write-once-read-many) 스토리지가 필요한 규제 요구 사항을 충족하거나 객체 변경 및 삭제에 대한 보호 계층을 추가하는 데 도움이 됩니다.

  • S3 복제 - 대기 시간 단축, 규정 준수, 보안 및 기타 사용 사례를 위해 객체, 객체의 각 메타데이터, 객체 태그를 동일하거나 다른 AWS 리전에 있는 하나 이상의 대상 버킷에 복제합니다.

  • S3 배치 작업 - Amazon S3 콘솔에서 단일 S3 API 요청이나 몇 번의 클릭만으로 수십억 개의 객체를 대규모로 관리할 수 있습니다. 배치 작업(Batch Operations)을 사용하여 수백만 또는 수십억 개의 객체에 대해 복사, AWS Lambda 함수 호출복원 등의 작업을 수행할 수 있습니다.

액세스 관리 및 보안

Amazon S3는 버킷 및 객체에 대한 액세스 감사 및 관리 기능을 제공합니다. 기본적으로 S3 버킷 및 객체는 프라이빗입니다. 생성한 S3 리소스에만 액세스할 수 있습니다. 특정 사용 사례를 지원하는 세분화된 리소스 권한을 부여하거나 Amazon S3 리소스의 권한을 감사하기 위해 다음 기능을 사용할 수 있습니다.

  • S3 퍼블릭 액세스 차단 - S3 버킷과 객체에 대한 퍼블릭 액세스를 차단합니다. 기본적으로 퍼블릭 액세스 차단 설정은 버킷 수준에서 켜져 있습니다. 특정 사용 사례에 대해 하나 이상의 설정을 해제해야 하는 경우가 아니라면 모든 퍼블릭 액세스 차단 설정을 활성화된 상태로 유지하는 것이 좋습니다. 자세한 내용은 S3 버킷에 대한 퍼블릭 액세스 차단 설정 구성 단원을 참조하십시오.

  • AWS Identity and Access Management(IAM) – IAM은 Amazon S3 리소스를 포함하여 AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움이 되는 웹 서비스입니다. IAM을 사용하면 사용자가 액세스할 수 있는 AWS 리소스를 제어하는 권한을 중앙에서 관리할 수 있습니다. IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어합니다.

  • 버킷 정책 - IAM 기반 정책 언어를 사용하여 S3 버킷과 그 안에 있는 객체에 대한 리소스 기반 권한을 구성합니다.

  • Amazon S3 액세스 포인트 – Amazon S3의 공유 데이터터 집합에 대한 데이터 액세스를 대규모로 관리하기 위해 전용 액세스 정책이 포함된 명명된 네트워크 엔드포인트를 구성합니다.

  • 액세스 제어 목록(ACL) - 인증된 사용자에게 개별 버킷 및 객체에 대한 읽기 및 쓰기 권한을 부여합니다. 일반적으로 ACL 대신 액세스 제어를 위해 S3 리소스 기반 정책(버킷 정책 및 액세스 포인트 정책) 또는 IAM 사용자 정책을 사용하는 것이 좋습니다. 정책은 단순하고 더 유연한 액세스 제어 옵션입니다. 버킷 정책과 액세스 포인트 정책을 사용하면 Amazon S3 리소스에 대한 모든 요청에 광범위하게 적용되는 규칙을 정의할 수 있습니다. 리소스 기반 정책 또는 IAM 사용자 정책 대신 ACL을 사용하는 특정 사례에 대한 자세한 내용은 액세스 정책 지침 섹션을 참조하세요.

  • S3 객체 소유권 - 버킷의 모든 객체에 대한 소유권을 가져와서 Amazon S3에 저장된 데이터에 대한 액세스 관리를 간소화합니다. S3 객체 소유권은 ACL을 비활성화 또는 활성화하는 데 사용할 수 있는 Amazon S3 버킷 수준 설정입니다. 기본적으로 ACL은 비활성화되어 있습니다. ACL이 비활성화되면 버킷 소유자는 버킷의 모든 객체를 소유하고 액세스 관리 정책을 사용하여 데이터에 대한 액세스를 독점적으로 관리합니다.

  • IAM Access Analyzer for S3 - S3 버킷 액세스 정책을 평가 및 모니터링하여 정책이 S3 리소스에 대한 의도된 액세스만 제공하는지 확인합니다.

데이터 처리

데이터를 변환하고 워크플로를 트리거하여 다양한 다른 처리 작업을 대규모로 자동화하기 위해 다음 기능을 사용할 수 있습니다.

  • S3 객체 Lambda - 자체 코드를 S3 GET, HEAD 및 LIST 요청에 추가하여 애플리케이션에 데이터가 반환될 때 데이터를 수정 및 처리할 수 있습니다. 행을 필터링하고, 이미지의 크기를 동적으로 조정하고, 기밀 데이터를 편집하는 등의 작업을 수행할 수 있습니다.

  • 이벤트 알림 - S3 리소스가 변경되면 Amazon Simple Notification Service(Amazon SNS), Amazon Simple Queue Service(Amazon SQS) 및 AWS Lambda를 사용하는 워크플로를 트리거합니다.

스토리지 로깅 및 모니터링

Amazon S3는 Amazon S3 리소스가 사용되는 방식을 모니터링하고 제어하는 데 사용할 수 있는 로깅 및 모니터링 도구를 제공합니다. 자세한 내용은 모니터링 도구를 참조하세요.

자동 모니터링 도구
  • Amazon S3용 Amazon CloudWatch 지표 - S3 리소스의 운영 상태를 추적하고 예상 요금이 사용자 정의 임계값에 도달하면 결제 알림을 구성합니다.

  • AWS CloudTrail - Amazon S3 에서 사용자, 역할 또는 AWS 서비스에 의해 수행된 작업을 기록합니다. CloudTrail 로그는 S3 버킷 수준 및 객체 수준 작업에 대한 자세한 API 추적을 제공합니다.

수동 모니터링 도구
  • 서버 액세스 로깅 - 버킷에 대해 이루어진 요청에 대한 상세 레코드를 제공합니다. 보안 및 액세스 감사 수행, 고객 기반 파악, Amazon S3 결제 내역 이해 등의 많은 사용 사례에 대해 서버 액세스 로그를 사용할 수 있습니다.

  • AWS Trusted Advisor - AWS 인프라 최적화, 보안 및 성능 개선, 비용 절감, 서비스 할당량 모니터링 방법을 식별하기 위해 AWS 모범 사례를 확인하여 계정을 평가합니다. 그런 다음 권장 사항에 따라 서비스와 리소스를 최적화할 수 있습니다.

분석 및 인사이트

Amazon S3는 스토리지 사용량을 파악할 수 있는 기능을 제공하며, 이를 통해 규모에 따라 스토리지를 더 잘 이해하고 분석하며 최적화할 수 있습니다.

  • Amazon S3 Storage Lens - 스토리지를 이해하고, 분석하며, 최적화할 수 있습니다. S3 Storage Lens는 60개 이상의 사용량 및 활동 지표와 대화형 대시보드를 제공하여 전체 조직, 특정 계정, AWS 리전, 버킷 또는 접두사에 대한 데이터를 집계합니다.

  • 스토리지 클래스 분석 - 스토리지 액세스 패턴을 분석함으로써 데이터를 보다 비용 효율적인 스토리지 클래스로 이전할 시기를 결정할 수 있습니다.

  • 인벤토리 보고서가 있는 S3 인벤토리 - 객체와 해당 메타데이터를 감사 및 보고하고 인벤토리 보고서에서 조치를 취하도록 다른 Amazon S3 기능을 구성합니다. 예를 들어 객체의 복제 및 암호화 상태를 보고할 수 있습니다. 인벤토리 보고서의 각 개체에 사용할 수 있는 모든 메타데이터 목록은 Amazon S3 인벤토리 목록을 참조하세요.

강력한 일관성

Amazon S3는 모든 AWS 리전의 Amazon S3 버킷에 있는 객체의 PUT 및 DELETE 요청에 대해 강력한 쓰기 후 읽기(read-after-write) 일관성을 제공합니다. 이는 새 객체에 대한 쓰기와, 기존 객체 및 DELETE 요청을 덮어쓰는 PUT 요청 모두에 적용됩니다. 또한 Amazon S3 Select, Amazon S3 액세스 제어 목록(ACL), Amazon S3 객체 태그, 객체 메타데이터(예: HEAD 객체)에 대한 읽기 작업은 매우 일관적입니다. 자세한 정보는 Amazon S3 데이터 일관성 모델을 참조하세요.

Amazon S3 작동 방식

Amazon S3는 데이터를 버킷 내의 객체로 저장하는 객체 스토리지 서비스입니다. 객체는 해당 파일을 설명하는 모든 메타데이터입니다. 버킷은 객체에 대한 컨테이너입니다.

Amazon S3에 데이터를 저장하려면 먼저 버킷을 생성하고 버킷 이름 및 AWS 리전을 지정해야 합니다. 그런 다음 Amazon S3에서 객체로 해당 버킷에 데이터를 업로드합니다. 각 객체에는 (또는 키 이름)가 있으며, 이는 버킷 내 객체에 대한 고유한 식별자입니다.

S3는 특정 사용 사례를 지원하도록 구성할 수 있는 기능을 제공합니다. 예를 들어, S3 버전 관리를 사용하여 동일한 버킷에 여러 버전의 객체를 보관하고, 실수로 삭제되거나 덮어쓰기된 객체를 복원할 수 있습니다.

버킷과 버킷의 객체는 프라이빗이며 액세스 권한을 명시적으로 부여한 경우에만 액세스할 수 있습니다. 버킷 정책, AWS Identity and Access Management(IAM) 정책, 액세스 제어 목록(ACL), S3 액세스 포인트를 사용하여 액세스를 관리할 수 있습니다.

버킷

버킷은 Amazon S3에 저장된 객체에 대한 컨테이너입니다. 버킷에 저장할 수 있는 객체 수에는 제한이 없습니다. 또한 계정에 버킷을 최대 100개까지 포함할 수 있습니다. 증가를 요청하려면 Service Quotas 콘솔을 방문하세요.

모든 객체는 어떤 버킷에 포함됩니다. 예를 들어 photos/puppy.jpg로 명명된 객체는 미국 서부(오레곤) 리전의 DOC-EXAMPLE-BUCKET 버킷에 저장되며 URL https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/photos/puppy.jpg를 사용하여 주소를 지정할 수 있습니다. 자세한 내용은 버킷 액세스를 참조하십시오.

버킷을 생성할 때 버킷 이름을 입력하고 버킷이 속할 AWS 리전을 선택합니다. 버킷을 생성한 후에는 버킷 이름 또는 해당 리전을 변경할 수 없습니다. 버킷 이름은 버킷 이름 지정 규칙을 따라야 합니다. S3 버전 관리 또는 기타 스토리지 관리 기능을 사용하도록 버킷을 구성할 수도 있습니다.

또한 버킷은 다음과 같은 기능이 있습니다.

  • Amazon S3 네임스페이스를 최상위 수준으로 구성합니다.

  • 스토리지 및 데이터 전송 요금을 담당하는 계정을 식별합니다.

  • Amazon S3 리소스에 대한 액세스를 관리하는 데 사용할 수 있는 버킷 정책, 액세스 제어 목록(ACL), S3 액세스 포인트와 같은 제어 옵션을 제공합니다.

  • 사용량 보고를 위한 집계 단위로 사용됩니다.

버킷에 대한 자세한 내용은 버킷 개요을 참조하십시오.

개체

객체는 Amazon S3에 저장되는 기본 개체입니다. 객체는 객체 데이터와 메타데이터로 구성됩니다. 메타데이터는 객체를 설명하는 이름-값 페어의 집합입니다. 여기에는 마지막으로 수정한 날짜와 같은 몇 가지 기본 메타데이터 및 Content-Type 같은 표준 HTTP 메타데이터가 포함됩니다. 객체를 저장할 때 사용자 지정 메타데이터를 지정할 수도 있습니다.

객체는 키(이름)버전 ID를 통해 버킷 내에서 고유하게 식별됩니다(버킷에서 S3 버전 관리가 사용 설정된 경우). 객체에 대한 자세한 내용은 Amazon S3 객체 개요 섹션을 참조하세요.

객체 (또는 키 이름)는 버킷 내 객체에 대한 고유한 식별자입니다. 버킷 내 모든 객체는 정확히 하나의 키를 갖습니다. 버킷, 객체 키 및 선택적으로 버전 ID(버킷에 대해 S3 버전 관리가 사용 설정된 경우)의 조합은 각 객체를 고유하게 식별합니다. 따라서 Amazon S3를 “버킷 + 키 + 버전”과 객체 자체 사이의 기본 데이터 맵으로 생각할 수 있습니다.

Amazon S3 내 모든 객체는 웹 서비스 엔드포인트, 버킷 이름, 키, 그리고 선택 사항인 버전의 조합을 통해 고유하게 주소를 지정할 수 있습니다. 예를 들어, https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/photos/puppy.jpg URL에서 DOC-EXAMPLE-BUCKET은 버킷의 이름이고 photos/puppy.jpg는 키입니다.

객체 키에 대한 자세한 내용은 객체 키 이름 생성 섹션을 참조하십시오.

S3 버전 관리

S3 버전 관리를 사용하면 동일 버킷 내에 여러 개의 객체 변형을 보유할 수 있습니다. S3 버전 관리를 사용하여 버킷에 저장된 모든 버전의 모든 객체를 보존, 검색 및 복원할 수 있습니다. 또한 의도치 않은 사용자 작업 및 애플리케이션 장애로부터 쉽게 복구할 수 있습니다.

자세한 정보는 S3 버킷에서 버전 관리 사용을 참조하세요.

버전 ID

버킷에 S3 버전 관리를 사용 설정하면 Amazon S3에서 버킷에 추가되는 각 객체에 고유한 버전 ID를 생성합니다. 버전 관리를 사용 설정할 때 버킷에 이미 존재하는 객체에는 null의 버전 ID가 있습니다. 이러한(또는 다른) 객체를 CopyObjectPutObject와 같은 기타 작업으로 수정하는 경우 새 객체가 고유한 버전 ID를 가집니다.

자세한 정보는 S3 버킷에서 버전 관리 사용을 참조하세요.

버킷 정책

버킷 정책은 버킷과 해당 버킷의 객체에 액세스 권한을 부여할 수 있는 리소스 기반 AWS Identity and Access Management(IAM) 정책입니다. 버킷 소유자만 정책을 버킷에 연결할 수 있습니다. 버킷에 연결된 권한은 버킷 소유자가 소유한 모든 버킷의 객체에 적용됩니다. 버킷 정책은 크기가 20KB로 제한됩니다.

버킷 정책에는 AWS에서 표준인 JSON 기반 액세스 정책 언어가 사용됩니다. 버킷 정책을 사용하여 버킷의 객체에 대한 권한을 추가하거나 거부할 수 있습니다. 버킷 정책은 요청자, S3 작업, 리소스 및 요청의 측면 또는 조건(예: 요청을 수행하는 데 사용된 IP 주소)을 포함하여 정책의 요소를 기반으로 요청을 허용하거나 거부합니다. 예를 들어 버킷 소유자가 업로드된 객체를 완전히 제어할 수 있도록 하면서 S3 버킷에 객체를 업로드할 수 있는 교차 계정 권한을 부여하는 버킷 정책을 생성할 수 있습니다. 자세한 정보는 버킷 정책 예제을 참조하세요.

버킷 정책에서는 Amazon 리소스 이름(ARN) 및 기타 값에 와일드카드 문자를 사용하여 객체의 하위 집합에 권한을 부여할 수 있습니다. 예를 들어, 공통 접두사로 시작하거나 .html과 같은 지정된 확장자로 끝나는 객체 그룹에 대한 액세스를 제어할 수 있습니다.

S3 액세스 포인트

Amazon S3 액세스 포인트는 해당 엔드포인트를 사용하여 데이터에 액세스하는 방법을 설명하는 전용 액세스 정책이 포함된 명명된 네트워크 엔드포인트입니다. 액세스 포인트는 GetObject 및 PutObject 같은 S3 객체 작업을 수행하는 데 사용할 수 있는 버킷에 연결됩니다. 액세스 포인트는 Amazon S3의 공유 데이터 집합에 대한 대규모 데이터 액세스 관리를 간소화합니다.

각 액세스 포인트에는 고유한 액세스 포인트 정책이 있습니다. 또한 각 액세스 포인트에 대해 퍼블릭 액세스 차단 설정을 구성할 수 있습니다. Virtual Private Cloud(VPC)의 요청만 수락하도록 액세스 포인트를 구성하여 프라이빗 네트워크에 대한 Amazon S3 데이터 액세스를 제한할 수 있습니다.

자세한 내용은 Amazon S3 액세스 포인트를 사용한 데이터 액세스 관리 단원을 참조하십시오.

액세스 제어 목록(ACL)

ACL을 사용하여 권한이 부여된 사용자에게 개별 버킷 및 객체에 대한 읽기 및 쓰기 권한을 부여합니다. 각 버킷과 객체마다 하위 리소스로서 연결되어 있는 ACL이 있습니다. ACL은 액세스를 허용할 AWS 계정 또는 그룹과 액세스 유형을 정의합니다. ACL은 IAM보다 먼저 적용되는 액세스 제어 메커니즘입니다. ACL에 대한 자세한 내용은 ACL(액세스 제어 목록) 개요 단원을 참조하십시오.

S3 객체 소유권은 버킷에 업로드되는 객체의 소유권을 제어하고 ACL을 비활성화 또는 활성화하는 데 사용할 수 있는 Amazon S3 버킷 수준 설정입니다. 기본적으로 객체 소유권은 버킷 소유자 적용 설정으로 설정되며 모든 ACL이 비활성화되어 있습니다. ACL이 비활성화되면 버킷 소유자는 버킷의 모든 객체를 소유하고 액세스 관리 정책을 사용하여 객체에 대한 액세스를 독점적으로 관리합니다.

Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없습니다. 각 객체에 대해 액세스를 개별적으로 제어할 필요가 있는 드문 상황을 제외하고는 ACL을 비활성화한 채로 두는 것이 좋습니다. ACL을 비활성화하면 누가 객체를 버킷에 업로드했는지에 관계없이 정책을 사용하여 버킷의 모든 객체에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 객체 소유권 제어 및 버킷에 대해 ACL 사용 중지 단원을 참조하십시오.

리전

Amazon S3에서 사용자가 만드는 버킷을 저장할 지리적 AWS 리전을 선택할 수 있습니다. 지연 시간 최적화, 비용 최소화, 규정 요구 사항 준수 등 다양한 필요에 따라 리전을 선택할 수 있습니다. AWS 리전에 저장된 객체는 사용자가 명시적으로 객체를 다른 리전으로 전송하거나 복제하지 않는 한 해당 리전을 벗어나지 않습니다. 예를 들어, 유럽(아일랜드) 리전에 저장된 객체는 유럽 밖으로 이동하지 않습니다.

참고

계정에 대해 사용되는 AWS 리전에서만 Amazon S3에 액세스하고 해당 기능을 사용할 수 있습니다. 리전에서 AWS 리소스 생성 및 관리를 활성화하는 방법에 대한 자세한 내용은 AWS 일반 참조의 AWS 리전 관리를 참조하세요.

Amazon S3 리전 및 엔드포인트 목록은 AWS 일반 참조의 리전 및 엔드포인트를 참조하세요.

Amazon S3 데이터 일관성 모델

Amazon S3는 모든 AWS 리전의 Amazon S3 버킷에 있는 객체의 PUT 및 DELETE 요청에 대해 강력한 쓰기 후 읽기(read-after-write) 일관성을 제공합니다. 이는 새 객체에 대한 쓰기와, 기존 객체 및 DELETE 요청을 덮어쓰는 PUT 요청 모두에 적용됩니다. 또한 Amazon S3 Select, Amazon S3 액세스 제어 목록(ACL), Amazon S3 객체 태그, 객체 메타데이터(예: HEAD 객체)에 대한 읽기 작업은 매우 일관적입니다.

단일 키에 대한 업데이트는 원자성입니다. 예를 들어, 한 스레드에서 기존 키에 PUT 요청을 수행하고 두 번째 스레드에서 동일한 키에 GET 요청을 동시에 수행하면, 이전 데이터 또는 새 데이터는 얻지만 부분적 데이터나 손상된 데이터는 얻지 못합니다.

Amazon S3에서는 AWS 데이터 센터 내의 여러 서버로 데이터를 복제함으로써 고가용성을 구현합니다. PUT 요청이 성공하면 데이터가 안전하게 저장됩니다. 성공적인 PUT 응답을 받은 후 시작된 모든 읽기(GET 또는 LIST 요청)는 PUT 요청에 의해 쓰여진 데이터를 반환합니다. 다음은 이 동작의 예입니다.

  • 프로세스가 Amazon S3로 새 객체를 쓰고 해당 버킷 내에 바로 키를 나열합니다. 새 객체가 목록에 나타납니다.

  • 프로세스가 기존 객체를 대체하고 바로 읽기를 시도합니다. Amazon S3가 새 데이터를 반환합니다.

  • 프로세스가 기존 객체를 삭제하고 바로 읽기를 시도합니다. 객체가 삭제되었으므로 Amazon S3는 데이터를 반환하지 않습니다.

  • 프로세스가 기존 객체를 삭제하고 해당 버킷 내에 바로 키를 나열합니다. 객체가 목록에 나타나지 않습니다.

참고
  • Amazon S3는 동시 작성자에 대한 객체 잠금을 지원하지 않습니다. 두 PUT 요청을 동시에 같은 키에 대해 실행할 경우 타임스탬프가 최신인 요청이 우선 적용됩니다. 이것이 문제가 되는 경우 객체 잠금 메커니즘을 애플리케이션에 구축해야 합니다.

  • 업데이트는 키를 기반으로 하므로 여러 키에서 원자성 업데이트를 수행할 방법은 없습니다. 예를 들어, 한 키의 업데이트에 의존하는 다른 키의 업데이트를 수행할 수 없습니다. 단, 이 기능을 애플리케이션에 설계해 넣는 경우는 예외입니다.

버킷 구성에는 최종 일관성 모델이 있습니다. 특히 이는 다음을 의미합니다.

  • 버킷을 삭제하고 즉시 모든 버킷을 나열하면 목록에 삭제된 버킷이 여전히 표시될 수 있습니다.

  • 버킷에서 버전 관리를 처음으로 사용 설정하면 변경 사항이 완전히 전파되는 데 시간이 조금 걸릴 수 있습니다. 버전 관리를 사용 설정하고 나서 15분 정도 기다린 후, 버킷의 객체에 대해 쓰기 작업(PUT 또는 DELETE 요청)을 실행하는 것이 좋습니다.

동시 애플리케이션

이 섹션에서는 여러 클라이언트가 동일한 항목에 쓸 때 Amazon S3에서 예상되는 동작의 예제를 제공합니다.

이 예제에서는 W1(쓰기 1)과 W2(쓰기 2) 모두 R1(읽기 1) 및 R2(읽기 2)가 시작되기 전에 완료됩니다. S3는 매우 일관적이기 때문에 R1과 R2는 모두 color = ruby을(를) 반환합니다.

다음 예제에서 W2는 R1이 시작되기 전에 완료되지 않습니다. 따라서 R1은 color = ruby 또는 color = garnet을(를) 반환할 수 있습니다. 그러나 R2가 시작되기 전에 W1과 W2가 완료되므로 R2는 color = garnet을(를) 반환합니다.

마지막 예시에서 W1이 승인을 받기 전에 W2가 시작되었습니다. 따라서 이러한 쓰기는 동시에 이루어진 것으로 간주됩니다. Amazon S3는 내부적으로 최종 작성자 인정(last-writer-wins) 의미를 사용하여 어떤 쓰기가 우선하는지 결정합니다. 그러나 Amazon S3가 요청을 수신하는 순서와 애플리케이션이 승인을 받는 순서는 네트워크 대기 시간 등의 다양한 요인으로 인해 예측할 수 없습니다. 예를 들어, W2는 동일한 리전의 Amazon EC2 인스턴스에 의해 시작되고 W1은 멀리 떨어진 호스트에 의해 시작될 수 있습니다. 최종 값을 결정하는 가장 좋은 방법은 두 쓰기가 모두 승인된 후 읽기를 수행하는 것입니다.

관련 서비스

데이터를 Amazon S3로 로드한 후에는 해당 데이터를 다른 AWS 서비스에 사용할 수 있습니다. 가장 자주 사용하게 될 서비스는 다음과 같습니다.

  • Amazon Elastic Compute Cloud(Amazon EC2) – AWS 클라우드에서 안전하고 확장 가능한 컴퓨팅 용량을 제공합니다. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.

  • Amazon EMR - 기업, 연구원, 데이터 분석가 및 개발자가 대량의 데이터를 쉽고 비용 효율적으로 처리할 수 있습니다. Amazon EMR은 호스팅된 Hadoop 프레임워크를 사용합니다. Hadoop 프레임워크는 Amazon EC2와 Amazon S3의 웹 규모 인프라에서 실행됩니다.

  • AWS Snow 패밀리 - 데이터 센터가 아닌 까다로운 환경과, 일관된 네트워크 접속이 불가능한 장소에서 작업을 실행해야 하는 고객을 지원합니다. AWS Snow 패밀리 디바이스를 사용하면 인터넷에 연결할 수 없는 곳에서도 AWS 클라우드의 스토리지 및 컴퓨팅 파워를 로컬에서 비용 효율적으로 액세스할 수 있습니다.

  • AWS Transfer Family - SSH(Secure Shell) 파일 전송 프로토콜(SFTP), SSL을 통한 파일 전송 프로토콜(FTPS) 및 FTP(파일 전송 프로토콜)를 사용하여 Amazon S3 또는 Amazon Elastic File System(Amazon EFS)에서 직접 송수신하는 파일 전송에 대한 완전관리형 지원을 제공합니다.

Amazon S3 액세스

다음 방법 중 하나를 사용하여 Amazon S3에서 작업할 수 있습니다.

AWS Management Console

이 콘솔은 Amazon S3 및 AWS 리소스를 관리하기 위한 웹 기반 사용자 인터페이스입니다. AWS 계정에 가입한 고객은 AWS Management Console에 로그인한 후 AWS Management Console 홈페이지에서 S3를 선택하여 Amazon S3 콘솔에 액세스할 수 있습니다.

AWS Command Line Interface

AWS 명령줄 도구를 통해 시스템 명령줄에서 명령을 실행하거나 스크립트를 구축하여 AWS(S3 등) 작업을 수행할 수 있습니다.

AWS Command Line Interface(AWS CLI)는 광범위한 AWS 서비스의 명령을 제공합니다. AWS CLI는 Windows, macOS, Linux에서 지원됩니다. 시작하려면 AWS Command Line Interface 사용 설명서를 참조하세요. Amazon S3용 명령에 대한 자세한 내용은 AWS CLI 명령 참조s3apis3control을 참조하세요.

AWS SDK

AWS에서는 다양한 프로그래밍 언어 및 플랫폼(Java, Python, Ruby, .NET, iOS, Android 등)을 위한 라이브러리와 샘플 코드로 구성된 소프트웨어 개발 키트(SDK)를 제공합니다. AWS SDK를 사용하면 편리하게 S3 및 AWS에 프로그래밍 방식으로 액세스할 수 있습니다. Amazon S3은 REST 서비스입니다. 프로그래밍 태스크를 간소화하기 위해 기본 Amazon S3 REST API를 래핑하는 AWS SDK 라이브러리를 사용하여 Amazon S3에 요청을 전송할 수 있습니다. 예를 들어 SDK는 서명 계산, 암호화 방식으로 요청 서명, 오류 관리 및 자동으로 요청 재시도와 같은 작업을 처리합니다. 다운로드 및 설치 방법을 비롯하여 AWS SDK에 대한 자세한 내용은 AWS용 도구를 참조하세요.

Amazon S3와의 모든 상호 작용은 인증을 거치거나 익명으로 할 수 있습니다. AWS SDK를 사용할 경우 라이브러리는 사용자가 제공하는 키로부터 인증을 위한 서명을 컴퓨팅합니다. Amazon S3에 요청하는 방법에 대한 자세한 내용은 요청 만들기 섹션을 참조하세요.

Amazon S3 REST API

Amazon S3 아키텍처는 AWS에서 지원하는 인터페이스를 사용하여 객체를 저장 및 검색하는 프로그래밍 언어 중립적 아키텍처로 설계되었습니다. Amazon S3 REST API를 사용하여 프로그래밍 방식으로 S3 및 AWS에 액세스할 수 있습니다. REST API는 Amazon S3에 대한 HTTP 인터페이스입니다. REST API를 통해 표준 HTTP 요청을 사용하여 버킷과 객체를 생성하고, 가져오며, 삭제할 수 있습니다.

HTTP를 지원하는 임의의 도구 키트를 사용하여 REST API를 사용할 수 있습니다. 심지어 브라우저를 사용하여 객체를 가져올 수도 있습니다. 단, 객체를 익명으로 읽을 수 있어야 합니다.

REST API는 표준 HTTP 헤더 및 상태 코드를 사용하므로 표준 브라우저 및 도구 키트가 예상대로 작동합니다. Amazon은 일부 영역에서 HTTP에 기능을 추가했습니다. 예를 들어, 액세스 제어를 지원하기 위해 헤더를 추가했습니다. 이 경우 새로운 기능은 최대한 표준 HTTP 사용법과 일치하는 방식으로 추가되었습니다.

애플리케이션에서 직접 REST API를 호출할 경우 서명을 계산하는 코드를 작성하여 요청에 추가해야 합니다. Amazon S3에 요청하는 방법에 대한 자세한 내용은 요청 만들기 섹션을 참조하세요.

참고

HTTP를 통한 SOAP API 지원은 중단되었지만 HTTPS를 통해 계속해서 사용할 수 있습니다. 최신 Amazon S3 기능은 SOAP를 지원하지 않습니다. REST API 또는 AWS SDK를 사용하는 것이 좋습니다.

Amazon S3 요금 지불

Amazon S3의 요금은 애플리케이션의 스토리지 요구 사항에 맞춰 계획을 수립할 필요가 없도록 설계되었습니다. 대부분의 스토리지 공급자는 미리 정해진 양의 스토리지 및 네트워크 전송 용량을 구입하도록 요구합니다. 이 시나리오에서는 용량을 초과할 경우 서비스가 중단되거나 사용자에게 높은 초과 요금을 부과합니다. 이 용량을 초과하지 않은 경우에도 해당 용량을 모두 사용한 것과 같은 요금을 지불합니다.

Amazon S3는 사용자가 실제로 사용한 만큼만 과금하며, 일체의 부대 비용이나 초과 요금이 없습니다. 이 모델은 AWS 인프라의 비용 이점을 활용하면서 사업과 함께 성장시킬 수 있는 가변 비용 서비스를 제공합니다. 자세한 내용은 Amazon S3 요금을 참조하세요.

AWS에 가입하면 Amazon S3를 포함하여 AWS의 모든 서비스에 AWS 계정이 자동으로 등록됩니다. 하지만 사용한 서비스에 대해서만 청구됩니다. 신규 Amazon S3 고객인 경우 Amazon S3를 무료로 시작할 수 있습니다. 자세한 내용은 AWS 프리 티어를 참조하세요.

청구 요금은 AWS Billing and Cost Management 콘솔의 결제 및 비용 관리(Billing and Cost Management) 대시보드에서 확인할 수 있습니다. AWS 계정 결제에 대한 자세한 내용은 AWS Billing 사용 설명서를 참조하세요. AWS 결제 및 AWS 계정에 관련된 질문은 AWS Support에 문의하세요.

PCI DSS 준수

Amazon S3에서는 전자 상거래 웹사이트 운영자 또는 서비스 공급자에 의한 신용카드 데이터의 처리, 저장 및 전송을 지원하며, Payment Card Industry(PCI) Data Security Standard(DSS) 준수를 검증받았습니다. AWS PCI 규정 준수 패키지의 사본을 요청하는 방법 등 PCI DSS에 대해 자세히 알아보려면 PCI DSS 레벨 1을 참조하십시오.