객체 또는 버킷 자체를 공개적으로 읽을 수 없게 설정하고 App Engine App에서 Cloud Storage Bucket의 파일에 액세스하고 싶습니다. 내가 인증 (클라이언트 라이브러리, 서명 된 URL 등)을 사용하여 객체를 버킷에 액세스 할 수있는 여러 가지 옵션을 알고 있지만 복잡한 요소는 그 경로로 파일에 액세스 할 수 있기를 원한다는 것입니다. 문제의 버킷의 폴더 구조와 비슷합니다.버킷을 공개적으로 읽을 수 없도록 App Engine을 통해 Cloud Storage 객체에 액세스하기
예를 들어, 내 버킷을 공개적으로 읽을 수있게 만들면 공용 링크 인 객체를 액세스 할 수 있습니다 : https://storage.googleapis.com/MY_BUCKET/FOLDER_IN_MY_BUCKET/FILE_IN_FOLER.txt
. 이 URL은 버킷의 내부 폴더 구조를 모방합니다. 그러나 버킷이 공개적으로 읽을 수없는 경우에는 유사한 URL이없는 것으로 보입니다. 내 App Engine App 서비스 계정이 필요한 버킷의 저장소 관리자로 추가되었지만 버킷 개체에 액세스하는 데 사용할 수있는 URL이 있는지 확실하지 않습니다. 개체의 mediaLink
은 생성 정보가 끝에 추가되고 selfLink
이 404 오류가 발생하므로 작동하지 않습니다.
URL이 필요하다는 것은 버킷에 수천 개의 개체가 포함되어 있기 때문입니다. 클라이언트 라이브러리를 사용하여 App Engine의 영구 저장 장치 종류로 다운로드하면 내 경우에 클라우드 저장소를 사용하는 목적을 상실합니다. 요청이있을 때 그들 모두를위한 서명 된 URL을 얻는 것은 시간이 많이 걸릴 것입니다. 그런 다음 어딘가에 수천 개의 서명 된 URL을 관리해야합니다.
공개 URL과 마찬가지로 예측 가능한 URL이 포함 된 클라우드 저장소 버킷을 읽을 수 있나요? 요청을 계속 인증하는 중입니까?
storage.googleapis.com에는 Google 쿠키가 없으므로 사용자가 브라우저를 통해 인증 할 수 없습니다. 해당 끝점을 사용할 때 OAuth (또는 서명 된 URL)를 사용해야합니다. –
당신이 옳습니다, 제 잘못입니다. 나는 의미 : 'https : // storage.cloud.google.com/MY_BUCKET/FOLDER_IN_MY_BUCKET/FILE_IN_FOLDER'. 내 대답을 편집하게하십시오. 답장을 보내 주셔서 감사합니다! – dsesto
정상적으로 작동하지만, 일반적으로 사용자는 ACL에 직접 최종 사용자를 배치해야하므로 (보안상의 현명한 방법은 아니며 최종 사용자가 Google 계정을 갖고 있지 않은 경우에는 불가능합니다.) 그 종말점은 또한 ..미묘하게 사용하기가 어렵습니다 (최종 사용자가 여러 계정에 로그인하는 경우 어떤 계정을 사용해야하는지 지정해야합니다. 외부 사용자에게는 불가능하지는 않습니다.). –