只是寻找一些关于在Windows上执行CodeDeploy的建议。我已经在Linux机器上使用了一年,这是我在EC2上的第一个Windows Server,我似乎无法通过“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),因为示例不清楚,但没有任何效果。
在我的情况下,“权限被拒绝@ 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
使用CodeDeploy时,Windows实例上的“Permision Denied”错误通常是因为您尝试depoloy的一个或多个文件已在使用中。 (可能是.exe已经运行,文件在记事本中打开等)。 请查看是否是这种情况,如果是这样,要么手动停止正在使用这些文件的进程,要么可以使用ApplicationStop,BeforeInstall挂钩来配置脚本,这些脚本将在进入安装之前停止任何正在运行的进程。