>백엔드 개발 >Golang >AWS S3 ListObjectsV2는 '폴더'를 객체로 반환합니다.

AWS S3 ListObjectsV2는 '폴더'를 객체로 반환합니다.

WBOY
WBOY앞으로
2024-02-08 20:53:49729검색

AWS S3 ListObjectsV2 返回“文件夹”作为对象

질문 내용

s3 버킷의 특정 디렉터리 아래에 있는 모든 파일을 나열하려고 합니다(s3에는 실제로 디렉터리가 없다는 것을 알고 있습니다.).

구조는 다음과 같습니다.

bucket-名称:folder1/folder2/folder3/file

그래서 s3 세계에서는 이것이 위 이름의 파일만 저장한다고 믿습니다.

내 코드는 다음과 같습니다.

으아악

resp 내가 기대하는 파일과 그 파일이 저장된 "디렉토리"가 포함되어 있습니다:

으아악

저도 시도해 봤습니다:

으아악

하지만 결과는 똑같습니다.

다음은 매개변수의 결과입니다.

params := &s3.listobjectsv2input{
        bucket: aws.string(os.getenv("s3_user_bucket")),
        prefix: aws.string(key + loc[0] + "/"),
    }

    resp, _ := svc.listobjectsv2(params)

정답


왜 디렉토리가 객체로 반환되는지 묻는다고 가정하겠습니다.

당신 말이 맞습니다. amazon s3는 디렉토리를 사용하지 않습니다. 대신 개체의 파일 이름(key)은 파일 이름을 포함한 전체 경로입니다. 특정 경로에 객체를 생성하기 전에 디렉터리를 생성할 필요가 없습니다.

그러나 누군가가 s3 관리 콘솔에서 Create Folder 버튼을 클릭하면 해당 디렉터리 이름으로 길이가 0인 객체가 생성됩니다. 이렇게 하면 디렉터리가 나타나도록 "강제"되지만(그 안에 개체가 있기 때문에) 실제로는 길이가 0인 개체입니다.

목록 결과 보기:

으아악

size: 0라고 되어 있는 것을 볼 수 있을 것입니다. 따라서 이것은 길이가 0인 객체입니다.

목록에서 이러한 유형의 파일을 생략하려면 코드에서 길이가 0인 개체를 건너뛰면 됩니다.

위 내용은 AWS S3 ListObjectsV2는 '폴더'를 객체로 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제