C# 如何使用YAML文件在Elastic Beanstalk中设置文件夹权限?
我有一个C#Web API Elastic Beanstalk应用程序,它需要一个位于部署目录之外的文件夹,IUSER和IIS#U用户可以将其写入。我已经创建了一个.config文件,并将其放在项目的顶层.ebextensions文件夹中。内容如下:C# 如何使用YAML文件在Elastic Beanstalk中设置文件夹权限?,c#,amazon-web-services,configuration,yaml,amazon-elastic-beanstalk,C#,Amazon Web Services,Configuration,Yaml,Amazon Elastic Beanstalk,我有一个C#Web API Elastic Beanstalk应用程序,它需要一个位于部署目录之外的文件夹,IUSER和IIS#U用户可以将其写入。我已经创建了一个.config文件,并将其放在项目的顶层.ebextensions文件夹中。内容如下: commands: 0_mkdir: command: mkdir C:\\AppFolder\\ 1_set_iuser_permissions: command: cacls C:\\AppFolder\\ /t /e
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 as,尽管我的YAML已经过几位在线YAML测试人员的验证,AWS仍然不会接受。它总是与传递给icacls的参数有关。我还更改为应用程序App_数据文件夹中的一个文件夹,因为在应用程序外部的任何目录上设置权限似乎不起作用。因此,我的最终配置文件如下所示:
{
"container_commands": {
"01": {
"command": "icacls \"C:/inetpub/wwwroot/AppName_deploy/App_Data/AppFolder\" /grant DefaultAppPool:(OI)(CI)F"
}
}
}
希望这对其他人有所帮助。看起来您使用的.net帐户无效(除非这些是您创建的自定义帐户)。这是未设置权限的部分原因。它们应该是
IUSR
或IIS\u IUSRS
此外,container\u命令在安装应用程序/服务器环境之后执行,但在部署开始之前执行。除了在visual studio中使用wpp.targets文件外,没有其他方法可以对部署目录中的文件/文件夹设置权限
下面的文章是一篇很好的阅读,使用wpp.targets来解决您的问题。
将文件01\u fix\u 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/
AppName是elasticbeanstalk应用程序名吗?另外,您如何从WebAPI访问它?AppDomain.CurrentDomain.BaseDirectory+@“应用程序数据\”;似乎提供了wwwroot\App\u数据