调用Msdeploy时,AWS Code Deploy失败

时间:2016-08-23 19:27:40

标签: amazon-web-services iis-8 msdeploy aws-code-deploy

我正在设置我们的构建过程,以便利用自动缩放组来利用AWS代码部署。我已经设法使用appspec.yml和BeforeInstall.bat文件构建和压缩代码,所有文件都正确地移动到S3。代码部署正确拉下zip文件,解压缩并调用BeforeInstall.bat。批处理文件有3个步骤

  1. 停止应用程序池
  2. 停止网站
  3. 致电website.deploy.cmd
  4. 它正确地完成了步骤1和2,但是当它到达第3步时,它调用msdeploy并返回此错误:

    Error: There was an error reading IIS configuration schema from 'C:\Windows\system32\inetsrv\config\schema\'

    认为它可能是权限问题,我登录其中一个服务器并手动运行cmd脚本。它部署很好,鉴于我以管理员身份登录,这并不令人惊讶。然后我打开了一个PowerShell脚本作为LocalSystem用户(这是CodeDeploy Host Agent Service运行的那个)并运行cmd脚本。它成功完成。我将整个批处理文件作为LocalSystem用户运行。它运行成功。

    然后我返回并将echo %username%添加到批处理脚本,提交,构建并运行新部署。我在代码部署日志WIN-49GNL2FRHJ4$中看到此用户。部署仍然失败。当我从PowerShell窗口Administrator运行批处理脚本时,我当然看到Administrator回显了。脚本成功。当我从powershell窗口运行批处理脚本LocalSystem时,我看到WIN-49GNL2FRHJ4$,就像它通过AWS控制台从CodeDeploy运行一样,但它成功运行。

    AWS控制台如何将该批处理文件作为LocalSystem用户调用,以及如何通过PowerShell窗口将其作为该用户调用,这有何不同?

1 个答案:

答案 0 :(得分:0)

看起来问题是安装了旧版本的Web Deploy。我去寻找日志并意识到我已经以某种方式安装了v2(可能是我将IIS安装到EC2实例时的默认设置)。我下载并安装了最新版本(撰写本文时为v 3.6)并创建了一个新部署。代码按预期部署。