调用Msdeploy时AWS代码部署失败



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

  1. 停止应用程序池
  2. 停止网站
  3. 调用website.deploy.cmd

它正确地完成了步骤1和2,但是当它到达步骤3时,它调用msdeploy并返回这个错误:

Error: There was an error reading IIS configuration schema from 'C:Windowssystem32inetsrvconfigschema'

认为这可能是权限问题,我登录到其中一个服务器并手动运行cmd脚本。它部署得很好,这并不奇怪,因为我是以Admin身份登录的。然后,我打开了一个powershell脚本作为LocalSystem用户(这是CodeDeploy Host Agent Service运行的),并运行cmd脚本。它成功地完成了。我以LocalSystem用户的身份运行整个批处理文件。它运行成功。

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

AWS控制台作为LocalSystem用户调用该批处理文件的方式与我作为该用户通过powershell窗口调用它的方式有什么不同?

看起来问题是安装了旧版本的Web Deploy。我去寻找日志并意识到我不知何故安装了v2(可能是我在EC2实例上安装IIS时的默认值)。我下载并安装了最新版本(撰写本文时为v3.6),并创建了一个新的部署。代码按预期部署。

相关内容

  • 没有找到相关文章

最新更新