我正在设置我们的构建过程,以便利用自动缩放组来利用AWS代码部署。我已经设法使用appspec.yml和BeforeInstall.bat文件构建和压缩代码,所有文件都正确地移动到S3。代码部署正确拉下zip文件,解压缩并调用BeforeInstall.bat。批处理文件有3个步骤
它正确地完成了步骤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窗口将其作为该用户调用,这有何不同?
答案 0 :(得分:0)
看起来问题是安装了旧版本的Web Deploy。我去寻找日志并意识到我已经以某种方式安装了v2(可能是我将IIS安装到EC2实例时的默认设置)。我下载并安装了最新版本(撰写本文时为v 3.6)并创建了一个新部署。代码按预期部署。