I am trying to deploy on ECS using AWS CodePipeline with AWS CodeDeploy and I see the following error message:
The buildspec.yml is
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
build:
commands:
- mvn clean install
- echo Build started on `date`
- echo Building the Docker image...
- 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 Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
- printf '[{"name":"totd-api","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG > imageDetail.json
artifacts:
files:
- imageDetail.json
- appspec.yaml
and the appspec.yaml is
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: "arn:aws:ecs:us-east-1:<accountID>:task-definition/<task>:<tag>"
LoadBalancerInfo:
ContainerName: "totd-api"
ContainerPort: 80
I am confused by the misleading error message, thanks!
Since you want to do blue/green deployment and use codepipeline, you have incorrect file definitions. From docs :
Amazon ECS standard deployments require an imagedefinitions.json file as an input to the deploy action.
Amazon ECS Blue/Green deployments require an imageDetail.json file as an input to the deploy action.
Also your appspec.yaml also needs to be different. Example from here :
version: 0.0
Resources:
- TargetService:
Type: AWS::ECS::Service
Properties:
TaskDefinition: <TASK_DEFINITION>
LoadBalancerInfo:
ContainerName: "sample-website"
ContainerPort: 80
TASK_DEFINITION is important and must be in the file.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.