Этот бэкенд не поддерживает абсолютные пути Django Google Storage

У меня есть приложение Django на Compute Engine. Я установил Google Cloud Storage в качестве хранилища для моих медиафайлов. В одной конечной точке можно запросить информацию о файле, включая путь к нему. Когда я делаю POST запрос к этой конечной точке, он возвращает:

Этот бэкенд не поддерживает абсолютные пути.

Для простоты мое представление для конечной точки выглядит следующим образом:

class FilesView(APIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request):
        ...
        path = layer.file.path
        response_message = {'file': path }
        
        return Response(response_message, status.HTTP_200_OK)

Я сделал следующее:

  1. Создайте учетную запись сервиса и загрузите JSON.
  2. Настройте его под мои настройки Django.
  3. Я добавил учетную запись сервиса к разрешениям в буксете, т.е. установил как Storage Admin.
  4. Я добавил allUsers, чтобы иметь разрешение: Storage Legacy Object Reader.
  5. Я изменил ведро с Uniform на Fine-grained.

Вот в моих настройках:

DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'sample-bucket'
GCP_CREDENTIALS = os.path.join(BASE_DIR, 'sample-bucket-credentials.json')
GS_CREDENTIALS = service_account.Credentials.from_service_account_file(GCP_CREDENTIALS)
Вернуться на верх