Запуск основного веб-приложения .net на AWS Beanstalk - права на запись в файл - PullRequest
0 голосов
/ 27 марта 2019

Хорошо, у меня есть веб-приложение, написанное на .NET Core, которое я развернул на бобовом стебле AWS Elastic, что было довольно просто, но я уже наткнулся на загадку.

Приложениеизвлекает данные JSON из внешнего источника и записывает их в локальный файл, который в данный момент находится в wwwroot / data / data.json в корневом каталоге проекта.После развертывания в AWS эта функция выдает исключение при доступе при попытке записи файла.

Я видел кое-что о создании папки с именем .ebextensions с файлом конфигурации с некоторыми командами контейнера для установки разрешений.к определенным путям / файлам после развертывания, и я пытался сделать это, но это, похоже, ничего не делает для меня - я даже не знаю, выполняются ли эти команды, поэтому я понятия не имею, что происходит, если что-нибудь.

Это файл конфигурации, который я создал в папке .ebextensions:

{
    "container_commands": {
        "01-aclchange": {
            "command": "icacls \"C:/inetpub/AspNetCoreWebApps/app/wwwroot/data\" /grant DefaultAppPool:(OI)(CI)",
         }
    }
}

Имя файла .config совпадает с именем приложения в AWS, но я также где-то читал, чтоимя не имеет значения, если оно имеет расширение .config.

Кто-нибудь успешно сделал что-то подобное?Любые указатели приветствуются.

1 Ответ

1 голос
/ 27 марта 2019

Вместо того чтобы пытаться исправить проблемы с правами записи в локальное хранилище в AWS Elastic Beanstalk, я бы вместо этого предложил использовать что-то вроде Amazon S3 для хранения файлов. Некоторые преимущества будут:

  • Не нужно беспокоиться о правах доступа к файлу.
  • Файлы S3 являются постоянными.
  • Вы можете столкнуться с проблемами потери локальных файлов при повторной публикации приложения.
  • Если вы когда-нибудь перейдете к использованию чего-то вроде контейнеров, вы потеряете файл каждый раз, когда контейнер будет снят.
  • S3 невероятно дешев в использовании.
...