Права доступа к файлам / папкам Web Deploy + Amazon Elastic Beanstalk
Я настраиваю Amazon Elastic Beanstalk для нашего веб-приложения. Используя Visual Studio Express, я не могу использовать инструментарий AWS, поэтому мне нужно опубликовать его как пакет для веб-развертывания, а затем загрузить ZIP-файл в EB. Проблема, с которой я сталкиваюсь, связана с правами доступа к файлам / папкам при развертывании. Существует папка, для которой требуется разрешение на запись, однако при развертывании приложения все папки получают разрешения только на чтение. После этой статьи я создал файл.targets для развертывания, в котором для установки разрешений для папки используется setAcl. Однако при развертывании приложения разрешения не появляются и приложение ломается. Ниже находится то, что находится в моем файле.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCustomACLs>TRUE</IncludeCustomACLs>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="$(AfterAddIisSettingAndFileContentsToSourceManifest)==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
SetCustomACLs;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="SetCustomACLs" Condition="'$(IncludeCustomACLs)'=='TRUE'">
<Message Text="Adding Custom ACls" />
<ItemGroup>
<MsDeploySourceManifest Include="setAcl"
Condition="$(IncludeSetAclProviderOnDestination)">
<Path>$(_MSDeployDirPath_FullPath)\Includes\Site</Path>
<setAclAccess>Read,Write,Modify</setAclAccess>
<setAclResourceType>Directory</setAclResourceType>
<AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
</ItemGroup>
Когда я смотрю в создаваемом zip-файле и открываю файл archive.xml, я вижу там свои настройки разрешений:
<setAcl path="C:\Users\Peuge\Documents\Visual Studio 2012\Projects\ProjectName\ProjectWebstie\obj\Release\Package\PackageTmp\Includes\Site" MSDeploy.path="2" isDest="AA==" MSDeploy.isDest.Type="Microsoft.Web.Deployment.DeploymentObjectBooleanAttributeValue" setAclUser="" MSDeploy.setAclUser="1" setAclAccess="Modify" MSDeploy.setAclAccess="1" MSDeploy.MSDeployLinkName="Child4" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="H4sIAAAAAAAEAE2PwU4CMRCGF4Uq6gWfYB+AbIAVNCYcCFyIQVdAPNhLtztgoWw3nRbdp9dWBJ3DP3+mnX5/g0oQBF+ufPd1deLkbSK4VqiWJvqANMqgkKrcQm6a4QI0CpX3b6N21IpazXBopbEa+jlYo5lsholNpeAPUM7VBvJ+3E6X8V23x7K4dwNxt+ZJnT/AqwOMjoB/NtFqJzLQT4VxQKz6cMXv7JFtoVow817LnUOyY9ICViqE+Pjk1AuCGXBJ/N7n8J6+oEtOE7AroCPFrUcgXQi0TIYzYzOhwk6r3aGOuwbuzp6t4Bswh+6CojBAVbqmU5DAEGjC+Iatjn2+Leg459JmgHTmLtdrjl4nThre/YQ78x/ZhxtwDojk3E2u95MpoLKaw7wsoEEOK3UvE5WJZUku/IsjoV1EpcvLb2s9SavBAQAA" />
Я не уверен, имеет ли это отношение к пути с моими локальными каталогами или нет?
Буду признателен за любую оказанную помощь.
Спасибо
1 ответ
Другой, гораздо более простой способ сделать это - использовать конфигурацию AWS в App_Data.ebextensions\install.config.
например
commands:
set_iis_log_acl:
command: icacls "C:\inetpub\logs\LogFiles\W3SVC1" /grant IIS_IUSRS:(OI)(CI)R
ignoreErrors: true
Более подробная информация здесь http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-windows-ec2.html