Skip to content

S3란?


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


1.Amazon S3의 기능

1) 스토리지 클래스

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

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

2) 스토리지 관리

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

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

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

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

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

3) 액세스 관리

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

  • S3 퍼블릭 액세스 차단 - S3 버킷과 객체에 대한 퍼블릭 액세스를 차단한다. 기본적으로 퍼블릭 액세스 차단 설정은 계정 및 버킷 수준에서 켜져 있다.

  • AWS Identity and Access Management(IAM) - AWS 계정용 IAM 사용자를 생성하여 Amazon S3 리소스에 대한 액세스를 관리한다. 예를 들어 IAM을 Amazon S3와 함께 사용하여 사용자 또는 사용자 그룹이 AWS 계정에 속한 S3 버킷에 대해 보유한 액세스 유형을 제어할 수 있다.

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

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

  • 액세스 제어 목록(ACL) - 인증된 사용자에게 개별 버킷 및 객체에 대한 읽기 및 쓰기 권한을 부여한다. 일반적으로 ACL 대신 액세스 제어를 위해 S3 리소스 기반 정책(버킷 정책 및 액세스 포인트 정책) 또는 IAM 정책을 사용하는 것이 좋다. ACL은 리소스 기반 정책과 IAM보다 먼저 적용되는 액세스 제어 메커니즘이다.

  • S3 객체 소유권 - ACL을 사용 중지하고 버킷의 모든 객체에 대한 소유권을 가져와서 Amazon S3에 저장된 데이터에 대한 액세스 관리를 간소화한다. 버킷 소유자는 버킷의 모든 객체를 자동으로 소유하고 완전히 제어할 수 있으며 데이터에 대한 액세스 제어는 정책을 기반으로 한다.

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

4) 데이터 처리

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

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

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

5) 스토리지 로깅 및 모니터링

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

자동 모니터링 도구

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

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

수동 모니터링 도구

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

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

6) 분석 및 인사이트

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

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

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

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

7) 강력한 일관성

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


2. Amazon S3 작동 방식

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

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

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

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

1) 버킷

버킷은 Amazon S3에 저장된 객체에 대한 컨테이너이다. 버킷에 저장할 수 있는 객체 수에는 제한이 없다. 또한 계정에 버킷을 최대 100개까지 포함할 수 있다.

모든 객체는 어떤 버킷에 포함된다. 예를 들어 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 액세스 포인트와 같은 제어 옵션을 제공한다.

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

2) 객체

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

객체는 키(이름) 및 버전 ID를 통해 버킷 내에서 고유하게 식별된다(버킷에서 S3 버전 관리가 사용 설정된 경우).

3) 키

객체 키(또는 키 이름)는 버킷 내 객체에 대한 고유한 식별자이다. 버킷 내 모든 객체는 정확히 하나의 키를 가진다. 버킷, 객체 키 및 선택적으로 버전 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는 키이다.

4) S3 버전 관리

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

5) 버전 ID

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

6) 버킷 정책

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

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

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

7) S3 액세스 포인트

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

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

8) ACL(액세스 제어 목록)

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

기본적으로 다른 AWS 계정이 S3 버킷에 객체를 업로드하면 해당 계정(객체 작성자)이 객체를 소유하고 객체에 액세스할 수 있으며 ACL을 통해 다른 사용자에게 객체에 대한 액세스 권한을 부여할 수 있다. 객체 소유권을 사용하여 ACL이 사용 중지되고 버킷 소유자로서 버킷의 모든 객체를 자동으로 소유하도록 이 기본 동작을 변경할 수 있다. 결과적으로 데이터에 대한 액세스 제어는 IAM 정책, S3 버킷 정책, Virtual Private Cloud(VPC) 엔드포인트 정책 및 AWS Organizations 서비스 제어 정책(SCP)과 같은 정책을 기반으로 한다.

Amazon S3의 최신 사용 사례 대부분은 더 이상 ACL을 사용할 필요가 없으며, 각 객체에 대해 액세스를 개별적으로 제어해야 하는 비정상적인 상황을 제외하고는 ACL을 사용 중지하는 것이 좋다. 객체 소유권으로 ACL을 사용 중지하고 액세스 제어 정책을 사용할 수 있다. ACL을 사용 중지하면 다른 AWS 계정이 업로드한 객체로 버킷을 쉽게 유지 관리할 수 있다. 버킷 소유자는 버킷의 모든 객체를 소유하고 정책을 사용하여 객체에 대한 액세스를 관리할 수 있다.

9) 리전

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

Note

계정에 대해 사용되는 AWS 리전에서만 Amazon S3에 액세스하고 해당 기능을 사용할 수 있다.


3. 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는 데이터를 반환하지 않는다.

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

Note

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

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

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

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

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

1) 동시 애플리케이션

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

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

001

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

002

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

003


4. 관련 서비스

데이터를 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)에서 직접 송수신하는 파일 전송에 대한 완전관리형 지원을 제공한다.


5. Amazon S3 액세스

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

1) AWS Management Console

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

2) AWS Command Line Interface

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

이 AWS Command Line Interface(AWS CLI)는 광범위한 AWS 서비스의 명령을 제공한다. AWS CLI는 Windows, macOS, Linux에서 지원된다.

3) 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는 서명 계산, 암호화 방식으로 요청 서명, 오류 관리 및 자동으로 요청 재시도와 같은 작업을 처리한다.

Amazon S3와의 모든 상호 작용은 인증을 거치거나 익명으로 할 수 있다. AWS SDK를 사용할 경우 라이브러리는 사용자가 제공하는 키로부터 인증을 위한 서명을 컴퓨팅한다.

4) 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를 호출할 경우 서명을 계산하는 코드를 작성하여 요청에 추가해야 한다.

6. Amazon S3 요금 지불

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

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

AWS에 가입하면 Amazon S3를 포함하여 AWS의 모든 서비스에 AWS 계정이 자동으로 등록된다. 하지만 사용한 서비스에 대해서만 청구된다. 신규 Amazon S3 고객인 경우 Amazon S3를 무료로 시작할 수 있다.

청구 요금은 AWS Billing and Cost Management 콘솔의 결제 및 비용 관리(Billing and Cost Management) 대시보드에서 확인할 수 있다.


7. PCI DSS 준수

Amazon S3에서는 전자 상거래 웹사이트 운영자 또는 서비스 공급자에 의한 신용카드 데이터의 처리, 저장 및 전송을 지원하며, Payment Card Industry(PCI) Data Security Standard(DSS) 준수를 검증받았다.


References