Этот бэкенд не поддерживает абсолютные пути 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)
Я сделал следующее:
- Создайте учетную запись сервиса и загрузите JSON.
- Настройте его под мои настройки Django.
- Я добавил учетную запись сервиса к разрешениям в буксете, т.е. установил как Storage Admin.
- Я добавил allUsers, чтобы иметь разрешение: Storage Legacy Object Reader.
- Я изменил ведро с 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)