Amazon web services AWS CodeDeploy在Windows Server 2016上的ApplicationStop之前挂起

Amazon web services AWS CodeDeploy在Windows Server 2016上的ApplicationStop之前挂起,amazon-web-services,windows-server-2016,aws-code-deploy,Amazon Web Services,Windows Server 2016,Aws Code Deploy,我有点受不了这个。我尝试在Windows Server EC2实例上使用代码部署,但运气不好,它在应用程序停止之前一直被卡住,所有阶段都处于挂起状态,直到失败,然后它们都被跳过 到目前为止我检查的内容: 我已经在服务器上安装了代码部署代理,并确保它正在运行 我已经检查并再次检查了EC2实例的入界和出界权限(允许所有HTTP/HTTPS请求) 我已经检查了代码部署应用程序本身的IAM角色(我已经提供了我所能想到的所有权限) 我检查了appspec.yml(它只需要将构建文件从构建阶段传输到EC2本

我有点受不了这个。我尝试在Windows Server EC2实例上使用代码部署,但运气不好,它在应用程序停止之前一直被卡住,所有阶段都处于挂起状态,直到失败,然后它们都被跳过

到目前为止我检查的内容:

  • 我已经在服务器上安装了代码部署代理,并确保它正在运行
  • 我已经检查并再次检查了EC2实例的入界和出界权限(允许所有HTTP/HTTPS请求)
  • 我已经检查了代码部署应用程序本身的IAM角色(我已经提供了我所能想到的所有权限)
  • 我检查了appspec.yml(它只需要将构建文件从构建阶段传输到EC2本身的文件夹中)
  • 我不知道为什么会发生这种情况(我在Linux实例上部署时没有这个问题——代理总是开始读取appspec.yml)


    任何帮助都将不胜感激。谢谢!

    根据设计,ApplicationStop总是从上次成功部署的存档中执行,因为那是您启动应用程序的时候。通过这种方式,CodeDeploy确保用于启动和停止应用程序的脚本属于同一版本[1]。我们没有完整的数据,但可能是上次部署的ApplicationStop脚本导致了问题

    根据[1]:

    如果失败的原因是上一次成功的脚本 如果部署从未成功运行,请创建部署并 指定ApplicationStop、BeforeBlockTraffic和 应该忽略AfterBlock流量故障。有两种方法可以做到这一点 这:

    • 使用CodeDeploy控制台创建部署。在 部署页面,在ApplicationStop生命周期事件失败下,选择 如果发生此生命周期事件,则不要使实例部署失败 实例失败

    • 使用AWS CLI调用create deployment命令并包括 --忽略应用程序停止失败选项


    [1]

    根据设计,ApplicationStop总是从上次成功部署的存档中执行,因为那是您启动应用程序的时候。这样,CodeDeploy可以确保用于启动和停止应用程序的脚本属于同一版本[1]。我们没有完整的数据,但可能是上次部署的ApplicationStop脚本导致了问题

    根据[1]:

    如果失败的原因是上一次成功的脚本 如果部署从未成功运行,请创建部署并 指定ApplicationStop、BeforeBlockTraffic和 应该忽略AfterBlock流量故障。有两种方法可以做到这一点 这:

    • 使用CodeDeploy控制台创建部署。在 部署页面,在ApplicationStop生命周期事件失败下,选择 如果发生此生命周期事件,则不要使实例部署失败 实例失败

    • 使用AWS CLI调用create deployment命令并包括 --忽略应用程序停止失败选项


    [1]

    您是否了解了这一点?我在尝试部署到Amazon Linux EC2容器时看到了相同的结果。遵循中的建议没有区别您是否了解了这一点?我在尝试部署到Amazon Linux EC2容器时看到了相同的结果。遵循中的建议没有区别
    version: 0.0
    os: windows
    files:
      - source: \path
        destination: \path
    hooks:
        BeforeInstall:
        AfterInstall:
        ApplicationStart: