如何使用 YAML 文件在 Elastic Beanstalk 中设置文件夹权限?

How To Set Folder Permissions in Elastic Beanstalk Using YAML File?

我有一个 C# Web API Elastic Beanstalk 应用程序,它需要部署目录之外的一个文件夹,IUSER 和 IIS_USERS 用户可以写入该文件夹。我创建了一个 .config 文件并将其放在我项目的顶级 .ebextensions 文件夹中。内容如下:

commands:
  0_mkdir:
    command: mkdir C:\AppFolder\

  1_set_iuser_permissions:
    command: cacls C:\AppFolder\ /t /e /g IUser:f IIS_Users:f

但是,当文件夹创建成功时,权限未设置。如果有人知道我做错了什么,我将不胜感激。非常感谢。

最后我转而使用 Json 而不是 YAML,因为尽管我的 YAML 已被多个在线 YAML 测试人员验证,但 AWS 仍然不接受它。传递给 icacls 的参数总是有问题。我还更改了应用程序 App_Data 文件夹中的一个文件夹,因为在应用程序外部的任何目录上设置权限似乎不起作用。所以,我最终的配置文件如下:

{
    "container_commands": {
        "01": {
            "command": "icacls \"C:/inetpub/wwwroot/AppName_deploy/App_Data/AppFolder\" /grant DefaultAppPool:(OI)(CI)F"
        }
    }
}

希望这对其他人有所帮助。

您似乎在使用无效的 .net 帐户(除非这些是您创建的自定义帐户)。这是未设置您的权限的部分原因。它们应该是 IUSRIIS_IUSRS

此外,container_commands 在您的 app/server 环境设置完成后 执行,但在您的部署 之前 开始了。除了在 visual studio.

中使用 wpp.targets 文件外,没有其他方法可以在部署目录中设置对 files/folders 的权限

下面的 SO post 是使用 wpp.targets 解决您的问题的好读物。 Can Web Deploy's setAcl provider be used on a sub-directory?

将文件 01_fix_permissions.config 放入 .ebextensions 文件夹。

内容:

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/49_change_permissions.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sudo chown -R ec2-user:ec2-user tmp/