2016-08-23 29 views
0

我正在設置我們的構建過程,以將AWS代碼部署與自動調整組一起使用。我設法構建了代碼並使用appspec.yml和BeforeInstall.bat文件壓縮到了S3。代碼部署正確拉下zip文件,解壓縮並調用BeforeInstall.bat。批處理文件有3個步驟調用Msdeploy時,AWS代碼部署失敗

  1. 停止的應用程序池
  2. 停止網站
  3. 呼叫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窗口將其稱爲該用戶?

回答

0

看起來問題是安裝了舊版本的Web Deploy。我去尋找日誌,並意識到我已經安裝了v2(當我將IIS安裝到EC2實例上時,可能是默認安裝)。我下載並安裝了最新版本(截至撰寫本文時爲v3.6)並創建了一個新的部署。代碼按預期部署。