Comment :
S3 내 여러 폴더, 하위폴더, 파일들로 이루어진 경로를 파악하는 과정에서 '파일'이 존재하는 경로들만 추출하고 싶음
먼저 Case부터 따져보면 아래와 같다.
S3 boto3의 list_objects_v2 & paginator의 한계상(?) 나올 수 있는 모든 경로들을 뱉어내므로 아래와 같은 함수를 생성함.
list_objects_v2 & paginator의 경우 위의 Case들은 아래와 같아진다.
해당 경로에 폴더들만 존재하는 경우 page 내 CommonPrefixes를 가지고 있다.
[?] Contents 내 Key에 해당 경로만 가짐
해당 경로에 폴더 + 파일이 존재하는 경우 page 내 CommonPrefixes & Contents를 가지고 있다.
[+] Contents 내 Key로 해당 경로 + 파일 경로들을 가짐
해당 경로에 파일들만 존재하는 경우 page 내 Contents만 가짐
CommonPrefixes에 하위폴더 경로가 있고, Contents에는 자기 자신의 경로만 있다.
CommonPrefixes에 하위폴더 경로가 있고, Contents에는 자기 자신의 경로(List 0번째에 위치)와 하위파일 경로가 있다.
CommonPrefixes가 존재하지 않고, Contents에는 자기 자신의 경로(List 0번째에 위치)와 하위파일 경로가 있다.
정리 :
list_objects_v2&paginator에 입력한 경로(Prefix; 이 경로 밑에 무엇이 있는지 탐색해야되는) 하위에 폴더 or 파일이 존재 시 Response Dictionary의ContentsList의Key로 입력경로 & 파일의 경로가 반환된다.하위 폴더 경로에 대해서는
CommonPrefixes의Prefix로 반환된다.