ASP.Net Core в AWS EBS — права на запись и расширения .ebextensions

Мы развернули приложение ASP.Net Core на AWS EBS и столкнулись с проблемой записи на него файлов.

Доступ к пути C:\inetpub\AspNetCoreWebApps\app\App_Data\file.txt запрещен

Я добавил .ebextensions\[app_name].config, но это ничего не дало

{
    "container_commands": {
        "01": {
            "command": "icacls \"C:/inetpub/AspNetCoreWebApps/app/App_Data\" /grant DefaultAppPool:(OI)(CI)"
        }
    }
}

Я знаю, что это проблема с разрешением, потому что, когда я подключаюсь к машине по RDP и вручную меняю разрешение, это решает проблему. Я хотел бы это во время развертывания с помощью .ebextensions\[app_name].config


comment
файл ebextension - yaml - убедитесь, что он не разделен табуляцией и закодирован в UTF-8. Также я предполагаю, что ваш файл расширения не называется буквально [имя_приложения].config.   -  person Avner    schedule 14.03.2017
comment
Название приложения такое же, как здесь i.imgur.com/kEOGvCa.png и то же самое как в aws-beanstalk-config.txt =› Application.Name   -  person BLuM    schedule 14.03.2017
comment
просто назовите его init.config и проверьте интервалы и кодировку.   -  person Avner    schedule 14.03.2017
comment
.ebextensions\[app_name].config запускался перед развертыванием, и во время развертывания папка была воссоздана - поэтому она не работала. Я исправил это, добавив postInstall скрипт Power Shell в aws-windows-deployment-manifest.json   -  person BLuM    schedule 15.03.2017
comment
Я не могу создать этот файл конфигурации, поскольку он принимает его как файл xml, и я не могу поместить в него содержимое json/yaml.   -  person Dave    schedule 21.04.2021


Ответы (1)


.ebextensions\[app_name].config запускался перед развертыванием, и во время развертывания папка была воссоздана - поэтому она не работала. Я исправил это, добавив postInstall скрипт Power Shell в aws-windows-deployment-manifest.json:

"scripts": {
      "postInstall": {
        "file": "SetupScripts/PostInstallSetup.ps1"
      }
# # PostInstallSetup.ps1 #
$SharePath = "C:\inetpub\AspNetCoreWebApps\app\App_Data"
$Acl = Get-ACL $SharePath
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("DefaultAppPool","full","ContainerInherit,Objectinherit","none","Allow")
$Acl.AddAccessRule($AccessRule)
Set-Acl $SharePath $Acl
person BLuM    schedule 15.03.2017
comment
Можете ли вы поделиться содержимым SetupScripts/PostInstallSetup.ps1? - person Velimir; 06.02.2018