일반 목적 버킷 개요

일반 목적 버킷 개요

사진, 동영상, 문서 같은 데이터를 Amazon S3에 업로드하려면 먼저 AWS 리전 중 하나에 S3 버킷을 만들어야 해요.

Amazon S3에는 여러 유형의 버킷이 있어요. 버킷을 만들기 전에 애플리케이션과 성능 요구 사항에 가장 잘 맞는 유형을 선택하세요. 각 유형과 사용 사례는 "버킷" 문서에서 확인할 수 있어요.

출처: 문서

본문

다음 섹션들은 일반 목적 버킷에 대해 더 자세히 설명해요. 명명 규칙, 할당량, 버킷 구성 세부 사항이 포함돼요. Amazon S3 버킷 관련 제한과 한계 목록은 "일반 목적 버킷 할당량, 제한, 제약" 문서를 참고하세요.

일반 목적 버킷 개요

모든 객체는 버킷에 담겨요. 예를 들어 photos/puppy.jpg라는 객체가 US West (Oregon) 리전의 amzn-s3-demo-bucket 일반 목적 버킷에 저장되어 있다면, https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/photos/puppy.jpg URL로 접근할 수 있어요.

  • 상용 리전의 일반 목적 버킷 할당량은 US East (N. Virginia)에서만 조회하고 관리할 수 있어요.
  • AWS GovCloud (US)의 일반 목적 버킷 할당량은 AWS GovCloud (US-West)에서만 조회하고 관리할 수 있어요.

구현 관점에서 버킷과 객체는 AWS 리소스이며, Amazon S3가 이를 관리하는 API를 제공해요. Amazon S3 API로 버킷을 만들고 객체를 업로드할 수 있고, 콘솔로도 동일한 작업을 할 수 있어요. 콘솔은 내부적으로 Amazon S3 API를 사용해 요청을 보내요.

기본적으로 일반 목적 버킷은 전역 네임스페이스에 존재해요. 즉 파티션(partition) 안의 모든 AWS 리전과 모든 AWS 계정에 걸쳐 각 버킷 이름이 고유해야 해요. 파티션은 리전의 묶음이에요. AWS에는 현재 4개의 파티션이 있어요: aws(표준 리전), aws-cn(중국 리전), aws-us-gov(AWS GovCloud (US)), aws-eusc(European Sovereign Cloud). 공유 전역 네임스페이스에서 일반 목적 버킷을 만들면 그 이름은 파티션 안에서 다른 누구도 만들 수 없어요. 버킷 소유자가 버킷을 삭제하면 그 이름은 전역 네임스페이스에서 다시 누구나 쓸 수 있게 돼요.

반면 **계정 리전별 네임스페이스(reserved account regional namespace)**에 버킷을 만들 수도 있어요. 이는 전역 네임스페이스의 하위 구역으로, 오직 내 계정만 버킷을 만들 수 있어요. 이렇게 하면 원하는 이름을 항상 쓸 수 있다는 보장을 받을 수 있어요. 자세한 내용은 "일반 목적 버킷의 네임스페이스" 문서를 참고하세요.

일반 목적 버킷을 만든 후에는 버킷을 삭제하기 전까지 같은 파티션의 다른 AWS 계정이 그 이름을 쓸 수 없어요. 특정 명명 규칙에 의존해 가용성이나 보안을 검증하려고 하면 안 돼요. 명명 가이드라인은 "일반 목적 버킷 명명 규칙" 문서를 참고하세요.

Amazon S3는 내가 지정한 리전에 버킷을 만들어요. 지연 시간을 줄이거나 비용을 최소화하거나 규제 요건을 충족하려면 지리적으로 가까운 AWS 리전을 선택하세요. 예를 들어 유럽에 살고 있다면 Europe (Ireland) 또는 Europe (Frankfurt) 리전에 버킷을 만드는 게 유리할 수 있어요.

참고: 특정 AWS 리전에 만든 버킷에 속한 객체는 명시적으로 다른 리전으로 전송하지 않는 한 그 리전을 벗어나지 않아요.

일반적인 일반 목적 버킷 패턴

Amazon S3에 애플리케이션을 구축할 때 고유한 일반 목적 버킷을 사용해 서로 다른 데이터셋이나 워크로드를 분리할 수 있어요. 사용 사례에 따라 일반 목적 버킷을 사용하는 설계 패턴과 모범 사례가 달라져요. 자세한 내용은 "Amazon S3에서 애플리케이션을 구축하기 위한 일반적인 버킷 패턴" 문서를 참고하세요.

권한 (Permissions)

AWS 계정 루트 사용자 자격 증명으로 일반 목적 버킷을 만들고 다른 Amazon S3 작업도 수행할 수 있어요. 하지만 요청에 루트 사용자 자격 증명을 사용하는 것은 권장하지 않아요. 대신 IAM 사용자를 만들고 그 사용자에게 전체 접근 권한을 부여하세요(사용자는 기본적으로 권한이 없어요). 이런 사용자를 **관리자(administrator)**라고 부르며, 루트 자격 증명 대신 관리자 자격 증명으로 작업해요.

리소스를 만든 AWS 계정이 그 리소스를 소유해요. 예를 들어 내 계정에 IAM 사용자를 만들고 버킷 생성 권한을 부여하면 그 사용자는 버킷을 만들 수 있어요. 하지만 사용자가 버킷을 소유하는 건 아니고, 그 사용자가 속한 AWS 계정이 버킷을 소유해요. 사용자가 다른 버킷 작업을 하려면 리소스 소유자로부터 추가 권한이 필요해요.

일반 목적 버킷에 대한 공개 접근 관리

일반 목적 버킷과 객체에 대한 공개 접근은 버킷 정책, 액세스 제어 목록(ACL), 또는 둘 다를 통해 부여돼요. Amazon S3는 공개 접근을 차단하는 설정을 제공하며, Block Public Access 설정은 ACL과 버킷 정책을 덮어써서 공개 접근에 대한 일관된 제한을 적용할 수 있어요. 개별 버킷 또는 계정의 모든 버킷에 적용할 수 있어요.

새 버킷을 만들면 기본적으로 Block Public Access의 네 가지 설정이 모두 활성화돼요. 계정에도 네 가지 설정을 모두 켜는 것을 권장해요. 이 설정들은 현재와 미래의 모든 버킷에 대한 공개 접근을 차단해요.

적용 전에 애플리케이션이 공개 접근 없이도 잘 동작하는지 확인하세요. 정적 웹사이트 호스팅처럼 공개 접근이 필요한 경우 개별 설정을 사용 사례에 맞게 조정할 수 있어요. 하지만 Block Public Access를 유지하는 것을 강력히 권장하며, 네 가지 설정을 모두 켠 채로 정적 웹사이트를 호스팅하려면 Amazon CloudFront 오리진 접근 제어(OAC)를 사용할 수 있어요. CloudFront는 HTTPS 같은 추가 보안 헤더를 제공해요.

참고: 일반 목적 버킷과 공개 접근 설정 목록을 볼 때 오류가 뜨면 필요한 권한이 없는 것일 수 있어요. 사용자나 역할 정책에 다음 권한이 있는지 확인하세요:

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

드물게 AWS 리전 중단 때문에 요청이 실패할 수도 있어요.

태그 (Tags)

Amazon S3 버킷에 태그를 추가해 AWS 비용을 분류·추적하거나 접근 제어에 사용할 수 있어요. AWS Billing and Cost Management에서 비용 할당 태그로 스토리지 비용을 추적할 수 있고, 속성 기반 접근 제어(ABAC)에 태그를 사용해 버킷 접근 권한을 확장할 수도 있어요.

일반 목적 버킷 구성 옵션

Amazon S3는 일반 목적 버킷을 구성할 수 있는 다양한 옵션을 지원해요. 웹사이트 호스팅, 객체 수명 주기 관리, 버킷 접근 로깅 등을 구성할 수 있어요. 이런 구성 정보는 **서브리소스(subresource)**로 저장·관리돼요. 객체 수준 구성(예: 객체별 ACL)도 있어요.

다음 표는 버킷별 구성을 관리하는 서브리소스 목록이에요:

서브리소스 설명
cors (교차 출처 리소스 공유) 버킷이 교차 출처 요청을 허용하도록 구성.
event notification 지정된 버킷 이벤트에 대한 알림 수신을 활성화.
lifecycle 객체의 수명 주기 규칙 정의(예: 생성 1년 후 아카이브, 10년 후 삭제).
location 버킷이 생성된 AWS 리전 정보를 저장하고 조회하는 API 제공.
logging 버킷 접근 요청 추적 활성화. 요청자, 요청 시간, 동작, 상태 등을 기록.
object locking S3 Object Lock을 버킷에 활성화하고 기본 보존 모드를 구성.
policy and ACL 버킷 정책과 액세스 제어 목록으로 버킷 수준 권한을 부여·관리.
replication 서로 다른 또는 같은 리전의 버킷 간 객체 자동 복제.
requestPayment 다운로드 비용을 버킷 소유자 대신 요청자가 부담하도록 설정(Requester Pays).
tagging 비용 분류와 접근 제어를 위한 버킷 태그 추가.
transfer acceleration CloudFront 엣지 로케이션을 이용한 빠르고 안전한 장거리 파일 전송.
versioning 실수로 인한 덮어쓰기와 삭제를 복구하는 데 도움.
website 정적 웹사이트 호스팅 구성.

일반 목적 버킷 작업 (Operations)

Amazon S3의 고가용성 엔지니어링은 get, put, list, delete 작업에 집중돼 있어요. 일반 목적 버킷 작업은 중앙 집중식 전역 리소스 공간을 대상으로 하므로, 애플리케이션의 고가용성 코드 경로에서는 버킷을 생성·삭제·구성하지 않는 것이 좋아요. 버킷 생성·삭제·구성은 자주 실행되지 않는 별도의 초기화나 설정 루틴에서 수행하세요.

일반 목적 버킷 성능 모니터링

AWS 리소스에 의존하는 중요한 애플리케이션이 있다면 시스템을 모니터링하고 알림을 받는 것이 중요해요. 사용 사례에 따라 적합한 AWS 서비스를 선택할 수 있어요:

  • 성능 개선: CloudWatch 알람으로 스토리지 데이터, 복제 지표, 요청 지표를 모니터링.
  • 스토리지 사용 계획·비용 최적화: Amazon S3 Storage Lens 사용.
  • 운영 상태 통합 조회: S3 Storage Lens 사용량·활동 지표를 CloudWatch 대시보드에 게시.
  • 사용자·역할·서비스가 수행한 작업 기록: AWS CloudTrail 로그 설정.
  • 버킷 이벤트 알림: Amazon S3 이벤트 알림 설정.
  • S3 버킷에 대한 요청 상세 기록: S3 액세스 로그 설정.

모니터링에 사용할 수 있는 모든 AWS 서비스 목록은 "Amazon S3의 로깅과 모니터링" 문서에서 확인할 수 있어요.

더 알아보기 (Learn more)