#amazon-web-services #asp.net-core #file-permissions #amazon-elastic-beanstalk
#amazon-веб-сервисы #asp.net-core #файл-разрешения #amazon-elastic-beanstalk
Вопрос:
Хорошо, итак, у меня есть веб-приложение, написанное на .NET Core, которое я развернул на AWS Elastic beanstalk, что было довольно просто, но я уже столкнулся с проблемой.
Приложение извлекает данные в формате 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. Учитывая тот факт, что я ничего не знаю о EB, могу я предложить вам вообще не выполнять запись в файловую систему? Оно может быть хрупким и вызывать проблемы, подобные тем, которые вы видите. Почему бы, например, не поместить файл в хранилище S3?
2. Это вполне может быть вариантом. Первоначальная причина использования файловой системы заключалась в том, чтобы избежать необходимости использовать базу данных только для этого, поскольку в противном случае приложению вообще не нужна база данных. Я мог бы взглянуть на хранилище S3, спасибо.
3. Только что бегло просмотрел хранилище S3, и, похоже, это именно то, что мне нужно. Я собираюсь использовать это вместо файловой системы. Спасибо за информацию.
4. Хорошо, я ответил и убрал свои комментарии здесь.
Ответ №1:
Вместо того, чтобы пытаться устранить проблемы с разрешениями на запись в локальное хранилище в AWS Elastic Beanstalk, я бы вместо этого предложил использовать что-то вроде Amazon S3 для хранения файлов. Некоторые преимущества были бы:
- Не нужно беспокоиться о разрешениях для файлов.
- Файлы S3 являются постоянными.
- При повторной публикации приложения могут возникнуть проблемы с потерей локальных файлов.
- Если вы когда-нибудь перейдете на использование чего-то вроде контейнеров, вы будете терять файл каждый раз, когда контейнер будет удален.
- S3 невероятно дешев в использовании.