Amazon S3에는 어떤 객체 키 명명 패턴을 사용해야 합니까?

최종 업데이트 날짜: 2020년 3월 30일

Amazon Simple Storage Service(Amazon S3) 버킷의 요청 빈도가 높아질 것으로 예상됩니다. 성능을 높이려면 어떤 객체 키 명명 패턴을 사용해야 합니까?

​해결 방법

Amazon S3 버킷은 분할된 접두사 하나당 초당 3,500개의 PUT/COPY/POST/DELETE 또는 5,500개의 GET/HEAD 요청을 지원할 수 있습니다. 높은 요청 빈도를 맞추어 버킷을 최적화하려면 객체를 여러 접두사에 걸쳐 분산하는 객체 키 명명 패턴을 사용하는 것이 좋습니다. 접두사를 하나 추가할 때마다 버킷이 초당 3,500개의 PUT/COPY/POST/DELETE 또는 5,500개의 GET/HEAD 요청을 추가로 지원하도록 확장됩니다.

예를 들어 awsexamplebucket의 다음 객체는 모두 접두사 folderA로 그룹화됩니다.

awsexamplebucket/folderA/object-A1
awsexamplebucket/folderA/object-A2
awsexamplebucket/folderA/object-B1
awsexamplebucket/folderA/object-B2
awsexamplebucket/folderA/object-c1
awsexamplebucket/folderA/object-c2

이들 객체를 여러 접두사에 분산하려면 위의 객체 이름에서 구분 문자를 접두사로 사용하면 됩니다.

awsexamplebucket/Afolder/object-A1
awsexamplebucket/Afolder/object-A2
awsexamplebucket/Bfolder/object-B1
awsexamplebucket/Bfolder/object-B2
awsexamplebucket/Cfolder/object-c1
awsexamplebucket/Cfolder/object-c2

자세한 내용과 명명 예제는 Amazon S3 성능 팁 및 요령을 참조하십시오.

데이터 레이크 애플리케이션

일부 애플리케이션은 Hive, Spark 또는 Presto와 같은 엔진에서 권장하는 날짜 기반 명명 규칙을 사용하는 데이터 레이크에서 실행됩니다. 데이터 레이크 애플리케이션의 처리량이 매우 높은 경우 날짜 기반 명명 규칙에 추가 튜닝이 필요할 수 있습니다.

중요: 이 수준의 처리량은 흔하지 않으며 수천 개의 CPU 코어를 사용하여 분석되는 페타바이트 규모의 스토리지가 있는 사용 사례에 적용됩니다. 이 같은 규모가 요구되지 않는 경우 추가 튜닝을 구현할 필요가 없습니다.

날짜 기반 명명 규칙을 따르는 객체 키 이름은 다음과 유사한 경우가 많습니다.

awsexamplebucket/HadoopTableName/dt=yyyy-mm-dd/objectname

단일 Amazon S3 키 이름 접두사에 매핑된 테이블이 접두사당 지원되는 요청 속도를 초과할 경우 애플리케이션에서 503 오류가 발생할 수 있습니다. 트래픽 속도를 높이는 모범 사례로서, 자연 키 파티션을 사용하여 키 이름 접두사에 매핑된 테이블을 분할하는 것이 좋습니다.

예를 들어 Amazon S3 접두사에 매핑되는 "users" 테이블이 있는 경우 사용자의 국가별로 테이블을 분할할 수 있습니다.

awsexamplebucket/users/US/dt=yyyy-mm-dd
awsexamplebucket/users/CA/dt=yyyy-mm-dd

테이블에 파티션을 추가하는 방법과 관련한 애플리케이션의 요구 사항과 애플리케이션에서 지원되는 명명 규칙을 검토해야 합니다. 테이블 파티셔닝에 대한 자세한 내용은 Amazon Athena에서 데이터 파티셔닝을 참조하십시오. Athena는 데이터 파티셔닝에 Hive를 사용합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?