피드로 돌아가기
InfoQInfoQ
Infrastructure

AWS S3 Introduces Account-Regional Namespaces, Ending 18 Years of Global Bucket Name Collisions

AWS S3가 계정-지역 스코프 네임스페이스 도입으로 18년간 지속된 전역 버킷명 충돌 문제 해결

Steef-Jan Wiggers2026년 3월 26일8intermediate

Context

AWS S3는 2006년부터 전역 네임스페이스를 사용하면서 모든 AWS 계정이 동일한 버킷명 풀을 공유해 왔다. 이로 인해 "mybucket" 같은 직관적인 이름은 이미 누군가에게 점유되어 있어 개발 팀들이 결정론적 해시, 암호화된 프로젝트명, 무작위 접미사, CloudFormation 의사-난수 ID 등의 우회 방법을 강제로 사용해야 했다. 특히 프로덕션 환경에서 "BucketAlreadyExists" 예외로 배포가 실패할 위험이 존재했다.

Technical Solution

  • 버킷명 형식을 "{prefix}-{account-id}-{region}-an" 구조로 변경: 12자리 AWS 계정 ID와 리전이 자동으로 포함되어 자연스러운 파티션 생성
  • CloudFormation에 BucketNamePrefix 속성과 BucketNamespace: 'account-regional' 파라미터 추가: 계정 ID와 리전 자동 처리로 의사-파라미터 연결 제거
  • AWS CLI에 --bucket-namespace account-regional 플래그 추가: 계정-지역 스코프 버킷 생성 명령어 단순화
  • Python Boto3 SDK의 create_bucket() 메서드에 BucketNamespace 파라미터 추가: SDK 수준에서 네임스페이스 지정 가능
  • IAM 조건 키 s3:x-amz-bucket-namespace 신규 추가: 서비스 제어 정책으로 전역 네임스페이스 사용 금지 및 규정 감사 지원

Impact

현재 35개 AWS 리전에서 추가 비용 없이 제공 중이다.

Key Takeaway

18년간 지속된 설계 한계를 선택적(opt-in) 방식으로 해결함으로써 기존 배포를 깨뜨리지 않으면서도 인프라-코드 템플릿에서 결정론적 명명 규칙을 자동화할 수 있게 되었다. 이는 Azure Blob Storage(구독 스코프)와 Google Cloud Storage(프로젝트 스코프)가 처음부터 적용한 설계 원칙을 뒤늦게 채택한 사례로, 멀티 계정 조직에서 명명 규칙의 일관성을 IAM 정책으로 강제할 수 있다는 점이 핵심이다.


멀티 계정 AWS 조직을 운영하는 인프라 팀에서 CloudFormation/Terraform 템플릿에 BucketNamespace: 'account-regional'을 설정하고 IAM 서비스 제어 정책으로 s3:x-amz-bucket-namespace 조건을 강제하면, 수백 개 계정 간 버킷명 충돌 검증 로직을 제거하고 CI/CD 파이프라인에서 BucketAlreadyExists 예외 처리를 생략할 수 있다.

원문 읽기