You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CodeBuild构建报错:容器标签数量不符,预期为1

问题

通过CloudFormation模板创建AWS CodeBuild项目,该项目从CodeCommit拉取源码,构建产物存储到S3桶,但构建失败,报错信息如下:

[Container] 2024/02/29 17:32:12.865253 Waiting for agent ping
[Container] 2024/02/29 17:32:15.073019 Waiting for DOWNLOAD_SOURCE
[Container] 2024/02/29 17:32:19.478936 Phase is DOWNLOAD_SOURCE
[Container] 2024/02/29 17:32:19.481311 CODEBUILD_SRC_DIR=/codebuild/output/src1892399736/src/git-codecommit.us-east-1.amazonaws.com/v1/repos/spring-petclinic
[Container] 2024/02/29 17:32:19.481832 YAML location is /codebuild/output/src1892399736/src/git-codecommit.us-east-1.amazonaws.com/v1/repos/spring-petclinic/buildspec.yaml
[Container] 2024/02/29 17:32:19.485543 Phase complete: DOWNLOAD_SOURCE State: FAILED
[Container] 2024/02/29 17:32:19.485556 Phase context status code: YAML_FILE_ERROR Message: wrong number of container tags, expected 1

使用的CloudFormation模板内容:

AWSTemplateFormatVersion: 2010-09-09
Description: Create CodeBuild Stack Template

Parameters:
  ApplicationRepoName:
    Type: String
    Description: Name of the repo which contains Rest Application.
    Default: spring-petclinic
  ArtifactStoreS3Location:
    Type: String
    Description: Name of the S3 bucket to store CodePipeline artificat.
    Default: rest-apps-cbd

Resources:
  CodeBuildRole:
    Type: "AWS::IAM::Role"
    Properties:
      RoleName:
        Fn::Sub: CodeBuildRole-${AWS::StackName}
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: "Allow"
            Principal:
              Service:
                - "codebuild.amazonaws.com"
            Action:
              - "sts:AssumeRole"
      Path: /service-role/
      Policies:
        - PolicyName: "CodeBuildCICDAccessPolicy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: "Allow"
                Action:
                  - "codecommit:GitPull"
                Resource:
                  - Fn::Sub: arn:aws:codecommit:${AWS::Region}:${AWS::AccountId}:${ApplicationRepoName}
              - Effect: "Allow"
                Action:
                  - "logs:CreateLogGroup"
                  - "logs:CreateLogStream"
                  - "logs:PutLogEvents"
                Resource:
                  - Fn::Sub: arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/codebuild/*
              - Effect: "Allow"
                Action:
                  - "s3:PutObject"
                  - "s3:GetObject"
                  - "s3:GetObjectVersion"
                  - "s3:ListBucket"
                Resource:
                  - Fn::Sub: arn:aws:s3:::codepipeline-${AWS::Region}-*
                  - Fn::Sub: arn:aws:s3:::${ArtifactStoreS3Location}/*
                  - Fn::Sub: arn:aws:s3:::${ArtifactStoreS3Location}

  BuildRestAppCFNProject:
    Type: AWS::CodeBuild::Project
    Properties:
      Name: !Sub BuildRestAppCFN-${AWS::StackName}
      Description: Build war file for rest application
      ServiceRole: !GetAtt [ CodeBuildRole, Arn ]
      Artifacts:
        Type: S3
        Location: !Ref ArtifactStoreS3Location
        Name: !Sub BuildRestAppCFN-${AWS::StackName}
      Environment:
        Type: LINUX_CONTAINER
        ComputeType: BUILD_GENERAL1_SMALL
        Image: aws/codebuild/standard:2.0
      Source:
        Location: !Sub https://git-codecommit.us-east-1.amazonaws.com/v1/repos/${ApplicationRepoName}
        Type: CODECOMMIT
      TimeoutInMinutes: 10      
      Tags:
        - Key: Name
          Value: !Sub BuildRestAppCFN-${AWS::StackName}

问题定位与解决

报错提示wrong number of container tags, expected 1,问题出在CodeCommit仓库根目录的buildspec.yaml文件中,与CloudFormation模板无关。

具体修复步骤:

  • 检查buildspec.yaml的构建阶段命令,是否存在类似docker build -t tag1 tag2 .这种一次指定多个镜像标签的操作,CodeBuild要求单个容器操作只能对应一个标签。
  • 将多标签命令拆分,比如把上述命令拆分为两个独立命令:
    docker build -t my-app:v1 .
    docker tag my-app:v1 my-app:latest
    
  • 同时验证buildspec.yaml的YAML语法,确保没有缩进错误或格式问题,这类问题也可能引发解析报错。

内容的提问来源于stack exchange,提问作者sromit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:48:17