AWS EBS 中的 ASP.Net Core - 写入权限和 .ebextensions

BLu*_*LuM 4 iis web-deployment amazon-web-services amazon-elastic-beanstalk asp.net-core

我们已在 AWS EBS 上部署了 ASP.Net Core 应用程序,但在其上写入文件时遇到问题。

访问该路径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)"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是权限问题,因为当我 RDP 到机器并手动更改权限时,它解决了问题。我想在部署期间使用它.ebextensions\[app_name].config

BLu*_*LuM 5

.ebextensions\[app_name].config在部署之前运行并在部署期间重新创建文件夹 - 这就是它不起作用的原因。postInstall我通过将Power Shell 脚本添加到中来修复它aws-windows-deployment-manifest.json

"scripts": {
      "postInstall": {
        "file": "SetupScripts/PostInstallSetup.ps1"
      }
Run Code Online (Sandbox Code Playgroud)
# # 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
Run Code Online (Sandbox Code Playgroud)