簡體   English   中英

AWS CodeDeploy - “在不期望的位置找到列表的開始”

[英]AWS CodeDeploy - "Start of list found where not expected"

我正在嘗試使用 AWS CodePipeline 和 AWS CodeDeploy 在 ECS 上進行部署,我看到以下錯誤消息:

在此處輸入圖像描述

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

我對誤導性錯誤消息感到困惑,謝謝!

由於您想進行藍/綠部署並使用 codepipeline,因此您的文件定義不正確。 來自文檔

Amazon ECS 標准部署需要一個 imagedefinitions.json 文件作為部署操作的輸入。

Amazon ECS藍/綠部署需要一個imageDetail.json文件作為部署操作的輸入。

此外,您的 appspec.yaml 也需要有所不同。 來自這里的例子:

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

TASK_DEFINITION很重要,必須在文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM