AWS CodeDeploy-“在意外位置找到列表的开始”

问题描述 投票:0回答:1

我正在尝试使用带有AWS CodeDeploy的AWS CodePipeline在ECS上进行部署,并且看到以下错误消息:

enter image description here

buildspec.yml是

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

而appspec.yaml是

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

我对误导性错误消息感到困惑,谢谢!

amazon-web-services aws-code-deploy aws-code-deploy-appspec
1个回答
1
投票
由于要进行蓝色/绿色部署并使用代码管道,因此文件定义不正确。从docs

Amazon ECS标准部署需要imagedefinitions.json文件作为部署操作的输入。

Amazon ECS

Blue / Green部署需要imageDetail.json文件作为部署操作的输入。

此外,您的appspec.yaml也需要不同。 here中的示例:

version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80

TASK_DEFINITION

很重要,必须在文件中。
© www.soinside.com 2019 - 2024. All rights reserved.