4

I've created a CodePipeline using CodeBuild and CodeDeploy that should deploy to an active ECS cluster.

The container gets built without any problems.

Both the buildspec.yml and appspec.yml are located in the repository root and are as follows:

buildspec.yml:

version: 0.2

phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws --version
      - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
      - REPOSITORY_URI=555.dkr.ecr.us-east-1.amazonaws.com/name
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker images...
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG
      - echo Writing image definitions file...
      - printf '[{"name":"name","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
artifacts:
    files:
      - appspec.yml
      - imagedefinitions.json

appspec.yml:

version: 1.0
Resources:
  - TargetService:
      Type: AWS::ECS::Service
      Properties:
        TaskDefinition: "arn:aws:ecs:us-east-1:555:task-definition/name:1"
        LoadBalancerInfo:
          ContainerName: "name"
          ContainerPort: "80"
        PlatformVersion: "LATEST"

CodeDeploy fails with the following error message:

An AppSpec file is required, but could not be found in the revision

Upon reviewing the referenced revision artifacts in S3 I can verify that the correct appspec.yml file exists at the archive root and is as above.

What could possibly be wrong with this configuration?

Kuldeep
  • 4,466
  • 8
  • 32
  • 59
webish
  • 701
  • 2
  • 9
  • 17
  • We're experiencing this exact issue with our s3 artifacts from within the code pipeline. DId you ever find a solution for this? – mbelles Feb 27 '19 at 22:28
  • I haven't tried @turja's answer, can you confirm that works for you? – webish Mar 04 '19 at 21:14
  • Find any solution? – jorgen.ringen Jun 01 '19 at 13:30
  • 1
    any solution ? Docs says the file name must be appspec.yaml when deploying on ECS https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html Also, imagedfinition becomes imageDetails when deploying with blue/green deployment https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#file-reference-ecs-bluegreen, – Sébastien Stormacq Nov 02 '19 at 22:43
  • Hey, have you tried this? https://stackoverflow.com/questions/58851354/aws-codepipeline-an-appspec-file-is-required-but-could-not-be-found-in-the-rev , basically it's stated that "ECS" should be used as provider of deployment stage rather than "Codedeploy". Hope it helps! – marianogg9 Jan 27 '20 at 10:24

1 Answers1

-1

Change appspec.yml to appspec.yaml in both filename and buildspec.yml.

Turja
  • 11