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?