Использование Realm Sync с функциями Azure

Я пытаюсь использовать Realm Cloud в функции Azure, но она продолжает выдавать ошибку:

make_dir() failed: Permission denied Path: /realm-object-server/

Есть ли способ настроить функции Azure для получения разрешений на создание файлов? Я новичок в Azure Functions, это мой первый, поэтому я не совсем уверен во всех подробностях.

1 ответ

Я нашел одно решение. Внутри функции Azure вы можете создать любой файл или папку только во временной папке. Поэтому, если вы используете следующую конфигурацию синхронизации, она должна работать. У меня это сработало.

var configuration = new FullSyncConfiguration(new Uri("/~/<your-realm-name>", UriKind.Relative), _realmUser, Path.Combine(Path.GetTempPath(), "realm-object-server"));

По сути, здесь вы передаете имя папки для локального хранения области. Если вы не передадите имя папки, он попытается сохранить его в месте по умолчанию, где вы получите ошибку доступа.

Я не знаком с Realm, но функции по умолчанию имеют права на взаимодействие с файловой системой. См. Эти ссылки для получения информации о файловой системе службы приложений (это относится и к функциям): https://docs.microsoft.com/en-us/azure/app-service/operating-system-functionality https://github.com/projectkudu/kudu/wiki/Understanding-the-Azure-App-Service-file-system

Если функция развернута с использованием запуска из пакета, то wwwroot доступен только для чтения. Но поскольку путь в сообщении об ошибке не указывает на wwwroot, это, вероятно, не проблема.

Мое лучшее предположение - то, что код, который терпит неудачу, пытается написать в неподходящем месте. Информация в ссылках выше должна помочь решить эту проблему. Может быть, проверьте, есть ли у realm параметр конфигурации, позволяющий указать, в каком месте он должен создавать "realm-object-server".

Вы можете использовать

SyncConfigurationBase.Initialize(UserPersistenceMode.NotEncrypted, basePath: Path.GetTempPath());
Другие вопросы по тегам