我正在設置我們的構建過程,以將AWS代碼部署與自動調整組一起使用。我設法構建了代碼並使用appspec.yml和BeforeInstall.bat文件壓縮到了S3。代碼部署正確拉下zip文件,解壓縮並調用BeforeInstall.bat。批處理文件有3個步驟調用Msdeploy時,AWS代碼部署失敗
- 停止的應用程序池
- 停止網站
- 呼叫website.deploy.cmd
它通過正常的步驟1和2得到,但是當它獲得第3步它調用msdeploy並返回此錯誤:
Error: There was an error reading IIS configuration schema from 'C:\Windows\system32\inetsrv\config\schema\'
釷提出這可能是一個權限問題,我登錄到其中一臺服務器並手動運行cmd腳本。它部署的很好,這並不奇怪,因爲我以管理員身份登錄。然後,我以LocalSystem
用戶(這是運行CodeDeploy Host Agent Service
的用戶)的身份打開PowerShell腳本並運行cmd腳本。它成功完成。我運行整個批處理文件作爲LocalSystem
用戶。它成功運行。
然後我回去並將echo %username%
添加到批處理腳本,提交,構建並運行新部署。我在代碼部署日誌WIN-49GNL2FRHJ4$
中看到此用戶。部署仍然失敗。當我從PowerShell窗口的框中運行批處理腳本爲Administrator
,我當然看到Administrator
回聲。腳本成功。當我從powershell窗口運行批處理腳本作爲LocalSystem
時,我看到WIN-49GNL2FRHJ4$
,就像通過AWS控制檯從CodeDeploy運行它,但它成功運行一樣。
AWS控制檯如何將該批處理文件稱爲LocalSystem
用戶,以及如何通過PowerShell窗口將其稱爲該用戶?