버킷 개요 - Amazon Simple Storage Service

버킷 개요

Amazon S3에 데이터(사진, 동영상, 문서 등)를 업로드하려면 우선 하나의 AWS 리전에 S3 버킷을 만들어야 합니다.

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

Amazon S3 버킷과 관련된 규제 및 제한 목록은 버킷 할당량, 규제 및 제한 섹션을 참조하세요.

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

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

이 섹션에서는 버킷 작업 방법에 대해 설명합니다. 객체 작업에 대한 자세한 내용은 Amazon S3 객체 개요을 참조하십시오.

Amazon S3는 글로벌 버킷을 지원합니다. 즉, 각 버킷 이름은 파티션 내 모든 AWS 리전의 AWS 계정에서 고유해야 합니다. 파티션은 리전 그룹입니다. AWS에는 aws(표준 리전), aws-cn(중국 리전) 및 aws-us-gov(AWS GovCloud (US))의 세 가지 파티션이 있습니다.

버킷이 생성된 후에는 해당 버킷이 삭제될 때까지 동일한 파티션의 다른 AWS 계정이 해당 버킷 이름을 사용할 수 없습니다. 가용성 또는 보안 확인 목적을 위해 특정 버킷 명명 규칙에 의존하면 안 됩니다. 버킷 이름 지정 지침은 버킷 이름 지정 규칙을 참조하십시오.

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

참고

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

참고

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

권한 정보

AWS 계정 루트 사용자 자격 증명을 사용하여 버킷을 만들고 기타 Amazon S3 작업을 수행할 수 있습니다. 그러나 버킷 생성 등의 요청을 할 때는 AWS 계정의 루트 사용자 자격 증명을 사용하지 않는 것이 좋습니다. 대신 AWS Identity and Access Management(IAM) 사용자를 만들고 이 사용자에게 모든 액세스 권한을 부여합니다(기본적으로 사용자는 권한이 없음).

이러한 사용자를 관리자라고 합니다. 자체 계정의 루트 사용자 자격 증명 대신 관리자 사용자 자격 증명을 사용하여 AWS와 연동하면서 버킷 생성, 사용자 생성, 권한 부여 등의 태스크를 수행할 수 있습니다.

자세한 내용은 AWS 일반 참조의 AWS 계정 루트 사용자 자격 증명 및 IAM 사용자 자격 증명IAM 사용 설명서의 IAM 보안 모범 사례를 참조하세요.

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

버킷에 대한 퍼블릭 액세스 관리

버킷 정책, 액세스 제어 목록(ACL) 또는 둘 다를 통해 버킷 및 객체에 퍼블릭 액세스 권한이 부여됩니다. Amazon S3 리소스에 대한 퍼블릭 액세스를 관리하는 데 도움을 주기 위해 Amazon S3는 퍼블릭 액세스 차단 설정을 제공합니다. Amazon S3에서는 이러한 리소스에 대한 퍼블릭 액세스에 대해 일정한 제한을 적용할 수 있도록 퍼블릭 액세스 차단 설정을 통해 ACL 및 버킷 정책을 재정의할 수 있습니다. 개별 버킷 또는 계정의 모든 버킷에 퍼블릭 액세스 차단 설정을 적용할 수 있습니다.

모든 Amazon S3 버킷 및 객체의 퍼블릭 액세스가 차단되도록 하기 위해 새로운 버킷을 생성할 때 기본적으로 퍼블릭 액세스 차단 설정 네 개가 모두 활성화되어 있습니다. 계정에 대해 퍼블릭 액세스 차단 설정 네 개를 모두 켜두는 것이 좋습니다. 이러한 설정은 모든 현재 및 미래 버킷에 대한 모든 퍼블릭 액세스를 차단합니다.

이 설정을 적용하기 전에 퍼블릭 액세스 없이 애플리케이션이 올바르게 작동하는지 확인합니다. 버킷 또는 객체에 대한 특정 수준의 퍼블릭 액세스가 필요한 경우(예를 들어 Amazon S3를 사용하여 정적 웹 사이트 호스팅에 설명된 대로 정적 웹 사이트를 호스팅하는 경우), 스토리지 사용 사례에 적합하도록 개별 설정을 사용자 지정할 수 있습니다. 자세한 내용은 Amazon S3 스토리지에 대한 퍼블릭 액세스 차단 단원을 참조하십시오.

그러나 퍼블릭 액세스 차단 설정을 활성화 상태로 유지하는 것을 권장합니다. 네 개의 퍼블릭 액세스 차단 설정을 모두 활성화하여 정적 웹 사이트를 호스팅하려는 경우 Amazon CloudFront 원본 액세스 제어(OAC)를 사용할 수 있습니다. Amazon CloudFront는 안전한 정적 웹 사이트를 설정하는 데 필요한 기능을 제공합니다. Amazon S3 정적 웹 사이트는 HTTP 엔드포인트만 지원합니다. Amazon CloudFront는 Amazon S3의 내구성 있는 스토리지를 사용하면서 HTTPS와 같은 추가 보안 헤더를 제공합니다. HTTPS는 일반적인 HTTP 요청을 암호화하고 일반적인 사이버 공격으로부터 보호함으로써 보안을 강화합니다.

자세한 내용은 Amazon CloudFront 개발자 안내서안전한 정적 웹 사이트 시작하기를 참조하십시오.

참고

버킷 및 퍼블릭 액세스 설정을 나열할 때 Error가 표시되면 필요한 권한이 없을 수 있습니다. 사용자 또는 역할 정책에 다음 권한이 추가되었는지 확인합니다.

s3:GetAccountPublicAccessBlock s3:GetBucketPublicAccessBlock s3:GetBucketPolicyStatus s3:GetBucketLocation s3:GetBucketAcl s3:ListAccessPoints s3:ListAllMyBuckets

드문 경우지만 AWS 리전 중단으로 인해 요청이 실패할 수도 있습니다.

버킷 구성 옵션

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

참고

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

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

하위 리소스 설명

cors(cross-origin 리소스 공유)

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

자세한 내용은 교차 오리진 리소스 공유(CORS) 사용 섹션을 참조하세요.

이벤트 알림

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

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

수명 주기

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

자세한 내용은 객체 수명 주기 관리 섹션을 참조하세요.

location

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

logging

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

자세한 내용은 서버 액세스 로깅을 사용한 요청 로깅 섹션을 참조하세요.

객체 잠금

S3 객체 잠금을 사용하려면 버킷에 대해 활성화해야 합니다. 버킷에 있는 새 객체에 적용할 기본 보관 모드와 기간을 선택적으로 구성할 수도 있습니다.

자세한 내용은 Object Lock으로 객체 잠금 단원을 참조하십시오.

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

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

자세한 내용은 Amazon S3의 ID 및 액세스 관리 단원을 참조하십시오.

복제

복제는 동일한 또는 서로 다른 AWS 리전의 버킷 간에 객체를 비동기식으로 자동 복사하는 것을 말합니다. 자세한 내용은 리전 내 및 리전 간 객체 복제 섹션을 참조하세요.

requestPayment

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

자세한 내용은 스토리지 전송 및 사용량에 대한 요청자 지불액 버킷 사용 섹션을 참조하세요.

tagging

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

자세한 내용은 Amazon S3에 결제 및 사용 보고 섹션을 참조하세요.

전송 속도 향상

Transfer Acceleration을 사용하면 클라이언트와 S3 버킷 사이에서 파일을 빠르고 쉽고 안전하게 장거리 전송할 수 있습니다. Transfer Acceleration은 전 세계에 분산된 Amazon CloudFront의 엣지 로케이션을 활용합니다.

자세한 내용은 Amazon S3 Transfer Acceleration을 사용하여 빠르고 안전한 파일 전송 구성 섹션을 참조하세요.

버전 관리

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

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

자세한 내용은 S3 버전 관리로 여러 버전의 객체 유지 섹션을 참조하세요.

웹 사이트

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

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