'AWS CodeBuild batch build-list not running phases for each build identifier

I'm new to AWS CodeBuild and have been trying to work out how to run the parts of the build in parallel (or even just use the same buildspec.yml for each project in my solution).

I thought the batch -> build-list was the way to go. From my understanding of the documentation this will run the phases in the buildspec for each item in the build list.

Unfortunately that does not appear to be the case - the batch section appears to be ignored and the buildspec runs the phases once, for the default environment variables held at project level.

My buildspec is

version: 0.2

batch:
  fast-fail: false
  build-list:
    - identifier: getPrintJobNote
      env:
        variables:
          IMAGE_REPO_NAME: getprintjobnote
          FOLDER_NAME: getPrintJobNote
      ignore-failure: false
    - identifier: GetPrintJobFilters
      env:
        variables:
          IMAGE_REPO_NAME: getprintjobfilters
          FOLDER_NAME: GetPrintJobFilters
      ignore-failure: false

phases:
  pre_build:
    commands:
      - echo Logging into Amazon ECR
      - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Building lambda docker container
      - echo Build path $CODEBUILD_SRC_DIR
      - cd $CODEBUILD_SRC_DIR/src/$FOLDER_NAME
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
  post_build:
    commands:
      - echo Pushing to Amazon ECR
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

Is there something wrong in my buildspec, does build-list not do what I think it does, or is there something else needed to be configured somewhere to enable this?

In the project configuration I found a setting for "enable concurrent build limit - optional". I tried changing this but got an error:

Project-level concurrent build limit cannot exceed the account-level concurrent build limit of 1.

This may not be related but could be because my account is new... I think the default should be 60 anyway.



Solution 1:[1]

Had similar problem, turned out that batch builds are a separate build type. Go to project -> start build with overrides, then select batch build.

I also split buildspec file -> 1st spec has batch config, second one has "actual" phases. Use buildspec: directive. Not sure if this is required though.

Also: if builds are hook-triggered, this also has to be configured to run batch build.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 wolf