首页 > 解决方案 > Codedeploy 上关于 appspec 的开启和关闭错误

问题描述

我在 CodePipeline + CodeDeploy 中遇到了一个奇怪的问题,我们检查了所有的 aws 论坛和 stackoverflow,但没有人遇到过这个问题,并且已经考虑了关闭问题的建议,但没有任何帮助。

特别是以下问题:我们有一个 CodePipeline:碰巧“随机”我们收到错误:(x)需要一个 AppSpec 文件,但在修订版中找不到

但是需要的文件在Revision里面,我们查了几十遍,里面的文件和后面的时间一样,名字和格式都一样,没有问题。这发生在具有相同配置的同一个部署组中,因此不是配置不当的组,因为大多数时候都可以正常工作。

只是为了确保我在修订中添加了 .yml 和 .yaml 版本。appspec 就这么简单:

version: 0.0
Resources:
  - TargetService:
      Type: AWS::ECS::Service
      Properties:
        TaskDefinition: "arn:aws:ecs:us-east-1:xxxxxxxx:task-definition/my_app_cd:258"
        LoadBalancerInfo:
          ContainerName: "nginx_main"
          ContainerPort: 80
        PlatformVersion: null

标签: amazon-web-servicesaws-code-deployaws-codebuild

解决方案


我怀疑上述错误与您的代码管道的错误配置有关。要执行 ECS codedeploy 部署,您的 codepipeline 阶段部署的提供者必须是“ECS(蓝色/绿色)”而不是“Codedeploy”(codedeploy 用于 EC2 部署。

即使在后端使用 codedeploy,提供程序的名称也是“ECS(蓝/绿)”。

管道配置可以检查为:

$ aws codepipeline get-pipeline --name <pipeline_name>

{
        "name": "Deploy",
        "blockers": null,
        "actions": [
          {
            "name": "Deploy",
            "actionTypeId": {
              "category": "Deploy",
              "owner": "AWS",
              "provider": "CodeDeploy",          <===== should be "CodeDeployToECS"
              "version": "1"
            },

推荐阅读