[英]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.