메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

Amazon S3 버킷을 사용한 작업

Amazon S3는 인터넷용 클라우드 스토리지입니다. 데이터(사진, 동영상, 문서 등)를 업로드하려면 우선 하나의 AWS 리전에 버킷을 만들어야 합니다. 그런 다음 이 버킷에 객체를 얼마든지 업로드할 수 있습니다.

구현 측면에서 버킷과 객체는 리소스이고, Amazon S3는 이를 관리하기 위한 API를 제공합니다. 예를 들어 Amazon S3 API를 사용하여 버킷을 만들고 객체를 업로드할 수 있습니다. 이러한 작업은 Amazon S3 콘솔을 사용하여 수행할 수도 있습니다. 콘솔은 내부적으로 Amazon S3 API를 사용하여 Amazon S3에 요청을 보냅니다.

이 단원에서는 버킷을 사용한 작업에 대해 설명합니다. 객체 작업에 대한 자세한 내용은 Amazon S3 객체로 작업을 참조하십시오.

Amazon S3 버킷 이름은 버킷을 만든 AWS 리전과 상관없이 전역적으로 고유합니다. 버킷 이름은 버킷을 만들 때 지정합니다. 버킷 이름 지정 지침은 버킷 규제 및 제한을 참조하십시오.

Amazon S3은 사용자가 지정한 리전에 버킷을 만듭니다. 지리적으로 가까운 AWS 리전을 선택하면 지연 시간을 최적화하고, 비용을 최소화하며, 규제 요건을 해결할 수 있습니다. 예를 들어 유럽에 거주할 경우 EU(아일랜드) 또는 EU(프랑크푸르트) 리전에서 버킷을 생성하는 것이 유리할 수 있습니다. Amazon S3 리전 목록은 AWS 일반 참조리전 및 엔드포인트를 참조하십시오.

참고

특정 AWS 리전에서 만든 버킷에 속하는 객체는 명시적으로 다른 리전으로 보내지 않는 한 해당 리전을 벗어나지 않습니다. 예를 들어 EU(아일랜드) 리전에 저장된 객체는 해당 리전을 벗어나지 않습니다.

버킷 생성

Amazon S3는 버킷을 만들고 관리할 수 있는 API를 제공합니다. 기본적으로 AWS 계정 각각에 대해 최대 100개의 버킷을 만들 수 있습니다. 추가로 버킷이 필요할 경우 서비스 한도 향상을 제출하여 버킷 한도를 늘릴 수 있습니다. 버킷 한도 향상을 제출하는 자세한 방법은 AWS 일반 참조AWS Service Limits를 참조하십시오.

버킷을 만들려면 버킷의 이름과 버킷을 만들려는 AWS 리전을 제공해야 합니다. 버킷 이름 지정에 대한 자세한 내용은 버킷 이름 지정 규칙을 참조하십시오.

버킷마다 저장할 수 있는 객체 수에는 제한이 없습니다. 다음과 같은 방법을 사용하여 버킷을 만들 수 있습니다.

  • 콘솔을 사용하여 버킷을 만듭니다.

  • AWS SDK를 사용하여 프로그래밍 방식으로 버킷을 만듭니다.

    참고

    필요한 경우 코드에서 직접 Amazon S3 REST API를 호출하게 할 수도 있습니다. 하지만 이 방법은 요청을 인증하기 위한 코드를 작성해야 하기 때문에 번거로울 수 있습니다. 자세한 내용은 Amazon Simple Storage Service API ReferencePUT 버킷을 참조하십시오.

    AWS SDK를 사용할 경우 먼저 클라이언트를 만든 다음 이 클라이언트를 사용하여 버킷 생성 요청을 보냅니다.  클라이언트를 만들 때 AWS 리전을 지정할 수 있습니다. 미국 동부(버지니아 북부) 이 기본 리전입니다. 버킷 생성 요청에 리전을 지정할 수도 있습니다.  다음을 참조하십시오.

    • 미국 동부(버지니아 북부) 리전을 지정하여 클라이언트를 만들면 다음 엔드포인트를 사용하여 Amazon S3와 통신합니다.

      Copy
      s3.amazonaws.com

      이 클라이언트를 사용하여 어떤 AWS 리전에도 버킷을 만들 수 있습니다. 버킷 생성 요청에,

      • 리전을 지정하지 않으면 Amazon S3가 미국 동부(버지니아 북부) 리전에 버킷을 만듭니다.

      • AWS 리전을 지정하면 Amazon S3가 해당 리전에 버킷을 만듭니다.

    • 다른 AWS 리전을 지정하여 클라이언트를 만들 경우 각 리전은 리전별 엔드포인트로 매핑됩니다.

      Copy
      s3-<region>.amazonaws.com

      예를 들어 eu-west-1 리전을 지정하여 클라이언트를 만들면 다음과 같이 리전별 엔드포인트로 매핑됩니다.

      Copy
      s3-eu-west-1.amazonaws.com

      이 경우, 클라이언트를 사용하여 eu-west-1 리전에만 버킷을 만들 수 있습니다. 버킷 생성 요청에 다른 리전을 지정할 경우 Amazon S3에서 오류를 반환합니다.

    • 클라이언트를 만들어 듀얼 스택 엔드포인트에 액세스하는 경우 AWS 리전을 지정해야 합니다. 자세한 내용은 듀얼 스택 엔드포인트 단원을 참조하십시오.

    사용 가능한 AWS 리전 목록은 AWS General Reference리전 및 엔드포인트를 참조하십시오.

예제는 버킷 생성 예제를 참조하십시오.

권한 정보

AWS 계정 루트 자격 증명을 사용하여 버킷을 만들고 기타 Amazon S3 작업을 수행할 수 있습니다. 하지만 AWS는 AWS 계정의 루트 자격 증명을 사용하여 버킷 생성과 같은 요청을 하지 않을 것을 권장합니다. 대신 IAM 사용자를 만들고 이 사용자에게 모든 액세스 권한을 부여합니다(기본적으로 사용자는 권한이 없음). 이러한 사용자를 관리자 사용자라고 합니다. 자체 계정의 루트 자격 증명 대신 관리자 사용자 자격 증명을 사용하여 AWS와 연동하면서 버킷 생성, 사용자 생성, 권한 부여 등의 작업을 수행할 수 있습니다.

자세한 내용은 AWS 일반 참조루트 계정 자격 증명과 IAM 사용자 자격 증명IAM 사용 설명서IAM 모범 사례를 참조하십시오.

리소스를 만든 AWS 계정은 해당 리소스의 소유자가 됩니다. 예를 들어 자신의 AWS 계정에 IAM 사용자를 만들고 버킷을 만들 수 있는 사용자 권한을 부여하면, 이 사용자가 버킷을 만들 수 있습니다. 하지만 사용자는 버킷을 소유하지 않으며, 이 사용자가 속한 AWS 계정에서 버킷을 소유합니다. 사용자가 다른 버킷 작업을 수행하려면 리소스 소유자로부터 추가 권한을 받아야 합니다. Amazon S3 리소스 권한 관리에 대한 자세한 내용은 Amazon S3 리소스에 대한 액세스 권한 관리 단원을 참조하십시오.

버킷 액세스

Amazon S3 콘솔을 사용하여 버킷에 액세스할 수 있습니다. 콘솔 UI를 사용하여 코드를 작성하지 않고 거의 모든 버킷 작업을 수행할 수 있습니다.

프로그래밍 방식으로 버킷에 액세스할 경우 Amazon S3는 RESTful 아키텍처를 지원하며, 이 아키텍처에서 버킷과 객체는 리소스이고 각각 고유한 리소스 URI를 갖습니다.

Amazon S3는 버킷 액세스에 대해 가상 호스팅 방식과 경로 방식 URL을 모두 지원합니다.

  • 가상 호스팅 방식의 URL에서 버킷 이름은 URL에서 도메인 이름의 일부입니다. 예:  

    • http://bucket.s3.amazonaws.com

    • http://bucket.s3-aws-region.amazonaws.com.

    가상 호스팅 방식 URL에서는 이러한 엔드포인트 중 하나를 사용할 수 있습니다. http://bucket.s3.amazonaws.com 엔드포인트에 요청할 경우, DNS는 해당 버킷이 있는 리전으로 요청을 직접 라우팅하기에 충분한 정보를 갖고 있습니다.

    자세한 내용은 버킷의 가상 호스팅 단원을 참조하십시오.

     

  • 경로 방식의 URL에서는 버킷 이름이 도메인의 일부가 아닙니다(리전별 엔드포인트를 사용하지 않을 경우). 예:

    • 미국 동부(버지니아 북부) 리전 엔드포인트, http://s3.amazonaws.com/bucket

    • 리전별 엔드포인트, http://s3-aws-region.amazonaws.com/bucket

    경로 방식의 URL에서는 버킷이 상주하는 리전과 일치하는 엔드포인트를 사용해야 합니다. 예를 들어 버킷이 남아메리카(상파울루) 리전에 있을 경우 http://s3-sa-east-1.amazonaws.com/bucket 엔드포인트를 사용해야 합니다. 버킷이 미국 동부(버지니아 북부) 리전에 있을 경우에는 http://s3.amazonaws.com/bucket 엔드포인트를 사용해야 합니다.

중요

버킷은 경로 방식과 가상 호스팅 방식의 URL을 사용하여 액세스할 수 있기 때문에 DNS를 준수하는 버킷 이름으로 버킷을 만드는 것이 좋습니다. 자세한 내용은 버킷 규제 및 제한단원을 참조하십시오.

IPv6을 통해 S3 버킷에 액세스

Amazon S3에는 인터넷 프로토콜 버전 6(IPv6) 및 IPv4 모두를 통해 S3 버킷에 요청하는 것을 지원하는 여러 개의 듀얼 스택 엔드포인트가 있습니다. 자세한 내용은 IPv6을 통해 요청단원을 참조하십시오.

버킷 구성 옵션

Amazon S3는 버킷을 구성하기 위한 다양한 옵션을 지원합니다. 예를 들어 웹 사이트 호스팅용으로 버킷을 구성하고, 버킷의 객체 수명 주기를 관리하는 구성을 추가하며, 버킷에 대한 모든 액세스를 로그로 기록하도록 버킷을 구성할 수 있습니다. Amazon S3는 버킷 구성 정보를 저장 및 관리할 수 있는 하위 리소스를 지원합니다. 즉, Amazon S3 API를 사용하여 이러한 하위 리소스를 만들고 관리할 수 있습니다. 콘솔이나 AWS SDK를 사용할 수도 있습니다.

참고

또한 객체 수준 구성도 제공됩니다. 예를 들어 객체에 고유한 ACL(액세스 제어 목록)을 구성하여 객체 수준 권한을 구성할 수 있습니다.

이들 리소스는 특정 버킷이나 객체의 컨텍스트에 존재하므로 하위 리소스라고 합니다. 다음 표에는 버킷별 구성을 관리할 수 있는 하위 리소스가 나와 있습니다.

하위 리소스 설명

location

버킷을 만들려면 Amazon S3가 버킷을 생성할 AWS 리전을 지정해야 합니다. Amazon S3는 이 정보를 location 하위 리소스에 저장하고 이 정보를 검색하기 위한 API를 제공합니다.

정책ACL(액세스 제어 목록)

모든 리소스(버킷과 객체)는 기본적으로 비공개입니다. Amazon S3는 버킷 수준 권한을 부여하고 관리할 수 있도록 버킷 정책과 ACL(액세스 제어 목록) 옵션을 모두 지원합니다. Amazon S3는 policyacl 하위 리소스에 권한 정보를 저장합니다.

자세한 내용은 Amazon S3 리소스에 대한 액세스 권한 관리단원을 참조하십시오.

cors(cross-origin 리소스 공유)

cross-origin 요청을 허용하도록 버킷을 구성할 수 있습니다.

자세한 내용은 Cross-Origin 리소스 공유 활성화를 참조하십시오.

웹 사이트

버킷을 정적 웹 사이트 호스팅용으로 구성할 수 있습니다. Amazon S3는 웹 사이트 하위 리소스를 만들어 이 구성을 저장합니다.

자세한 내용은 Amazon S3에서 정적 웹 사이트 호스팅을 참조하십시오.

logging

로깅을 사용하여 버킷에 대한 액세스 요청을 추적할 수 있습니다. 각 액세스 로그 레코드는 한 액세스 요청에 대한 세부 정보(요청자, 버킷 이름, 요청 시간, 요청 작업, 응답 상태, 오류 코드 등)를 제공합니다. 액세스 로그 정보는 보안 및 액세스 감사에 유용할 수 있습니다. 또한 고객층을 파악하고 Amazon S3 결제 요금을 확인할 수 있습니다.  

자세한 내용은 서버 액세스 로깅단원을 참조하십시오.

이벤트 알림

지정한 버킷 이벤트의 알림을 받도록 버킷을 설정할 수 있습니다.

자세한 내용은 Amazon S3 이벤트 알림 구성단원을 참조하십시오.

버전 관리

버전 관리는 실수로 덮어쓰거나 삭제하는 경우 복구할 수 있도록 해주는 기능입니다.

실수로 객체를 잘못 삭제하거나 덮어쓰는 경우 이를 복구할 수 있도록 하기 위해 버전 관리 기능을 사용하는 것이 좋습니다.

자세한 내용은 버전 관리 사용단원을 참조하십시오.

수명 주기

버킷의 객체에 대해 명확한 수명 주기를 정의한 수명 주기 규칙을 정의할 수 있습니다. 예를 들어, 생성 후 1년이 지난 객체를 보관하거나, 10년이 지난 객체를 삭제하는 규칙을 정의할 수 있습니다.

자세한 내용은 객체 수명 주기 관리를 참조하십시오.

교차 리전 복제

교차-리전 복제는 서로 다른 AWS 리전의 버킷 간 객체를 자동 비동기식으로 복사하는 것을 말합니다. 자세한 내용은 리전 간 복제단원을 참조하십시오.

tagging

비용 할당 태그를 버킷에 추가하여 AWS 비용을 분류하고 추적할 수 있습니다. 버킷의 태그를 저장 및 관리하기 위해 Amazon S3는 tagging 하위 리소스를 제공합니다. AWS는 버킷에 적용된 태그를 사용하여 사용 내역 및 비용을 태그별로 집계한 비용 할당 보고서를 만듭니다.

자세한 내용은 S3 버킷에 대한 결제 및 보고단원을 참조하십시오.

requestPayment

기본적으로 버킷에서의 다운로드에 대한 요금은 해당 버킷을 만든 AWS 계정(버킷 소유자)이 지불합니다. 버킷 소유자는 이 하위 리소스를 사용하여, 다운로드를 요청하는 사용자에게 다운로드 요금이 부과되도록 지정할 수 있습니다. Amazon S3는 이 하위 리소스를 관리하기 위한 API를 제공합니다.

자세한 내용은 Requester Pays Buckets단원을 참조하십시오.

전송 속도 향상

Transfer Acceleration은 거리가 먼 클라이언트와 S3 버킷 간에 파일을 빠르고, 쉽고, 안전하게 전송할 수 있게 해줍니다. Transfer Acceleration은 전 세계적으로 분산되어 있는 Amazon CloudFront의 엣지 로케이션을 활용합니다.

자세한 내용은 Amazon S3 Transfer Acceleration 단원을 참조하십시오.