Windows EC2权限上的CodeDeploy被拒绝

时间:2017-09-03 23:51:51

标签: amazon-ec2 aws-code-deploy

只是寻找一些关于在Windows上执行CodeDeploy的建议。我已经在Linux机器上使用了一年,这是我在EC2上的第一个Windows服务器,我似乎无法过去" Permission Denied"错误。

我已经在文件夹中更改了Windows中的权限,但部署在CodeDeploy上的安装步骤失败。

Error CodeUnknownError
Script Name
MessagePermission denied - c:/inetpub/render
Log Tail

appspec.yml

version: 0.0
os: windows
files:
 - source: /
   destination: /inetpub/render
hooks:
  AfterInstall:
    - location: aws/scripts/deploy.bat
      runas: administrator
      timeout: 1200

我已尝试过Windows和Linux风格的路径(C:\ inetpub \ render),因为示例并不清楚,但没有任何效果。

2 个答案:

答案 0 :(得分:1)

在我的情况下,“权限被拒绝@ unlink_internal”是由dotnet.exe进程锁定了其中一个dll引起的。您可以使用Microsoft Process Explorer找出导致文件锁定的原因。然后,您可以更新appspec.yml BeforeInstall挂钩以在更新文件之前终止该进程:

version: 0.0
os: windows
files:
  - source: \files
    destination: C:\inetpub\wwwroot\yoursite
hooks:
  BeforeInstall:
    - location: stopsite.bat
      timeout: 300
      runas: Administrator
  AfterInstall:
    - location: startsite.bat
      timeout: 300
      runas: Administrator

其中stopsite.bat包含以下命令:

C:\Windows\System32\inetsrv\appcmd stop site "yoursite"
taskkill /IM "dotnet.exe" /F

答案 1 :(得分:0)

使用CodeDeploy时,Windows实例上的“Permision Denied”错误通常是因为您尝试删除的一个或多个文件已在使用中。 (可能是.exe已经运行,文件在记事本中打开等)。
请查看是否是这种情况,如果是这样,要么手动停止正在使用这些文件的进程,要么可以使用ApplicationStop,BeforeInstall挂钩来配置脚本,这些脚本将在进入安装之前停止任何正在运行的进程。