CircleCI中aws-ecs/deploy_service_update命令未找到错误求助
CircleCI部署AWS ECS时
aws-ecs/deploy_service_update命令找不到的问题排查 错误信息
Error: config compilation contains errors: config compilation contains errors: - Error calling workflow: 'build_deploy_prod' - Error calling job: 'deploy-to-ecs' - Cannot find a definition for command named aws-ecs/deploy_service_update
问题背景
使用CircleCI完成Docker镜像构建、推送AWS ECR的流程正常,但执行ECS部署环节时触发上述错误。已参照CircleCI官方文档配置,调整过服务名称的连字符/下划线格式,问题仍未解决。
当前CircleCI配置文件
version: 2.1 orbs: aws-cli: circleci/aws-cli@5.1.0 aws-ecr: circleci/aws-ecr@9.3.1 aws-ecs: circleci/aws-ecs@5.1.0 executors: pod-php: docker: - image: circleci/php:7.4-node - image: tkuchiki/delayed-mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_ROOT_PASSWORD: '' MYSQL_DATABASE: pod_test working_directory: [REDACTED] environment: CIRCLE_ARTIFACTS: /tmp/circleci-artfacts CIRCLE_TEST_REPORTS: /tmp/circleci-test-results DEBIAN_FRONTEND: noninteractive jobs: build-and-push-docker: docker: - image: cimg/php:7.4-node steps: - checkout - run: name: Install dependencies command: | composer install --no-interaction --prefer-dist npm install - run: name: Build application command: | npm run production - setup_remote_docker: version: 20.10.14 # Environment variables: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, AWS_ECR_ACCOUNT_URL - aws-ecr/build_and_push_image: auth: - aws-cli/setup: role_arn: arn:aws:iam::[REDACTED] repo: [REDACTED] tag: "latest, v0.1.${CIRCLE_BUILD_NUM}" dockerfile: Dockerfile deploy-to-ecs: docker: - image: cimg/base:stable steps: - aws-ecs/deploy_service_update: auth: - aws-cli/setup: role_arn: arn:aws:iam::[REDACTED] cluster: ${ECS_CLUSTER_NAME} container_image_name_updates: container=${ECS_SERVICE_NAME},tag=${CIRCLE_SHA1} family: ${ECS_SERVICE_NAME} workflows: version: 2.1 build_deploy_prod: jobs: - test: context: "prod" filters: branches: only: - master - build-and-push-docker: context: "prod" requires: - test filters: branches: only: - master - deploy-to-ecs: context: "prod" requires: - build-and-push-docker filters: branches: only: - master
排查解决方案
- 核心原因:你使用的
aws-ecsorb版本为5.1.0,该版本已废弃deploy_service_update命令,替换为deploy-update-service命令,同时参数命名规则也有调整。 - 修正部署命令:将
deploy-to-ecsjob中的命令和对应参数替换为新版本要求:
注意:参数deploy-to-ecs: docker: - image: cimg/base:stable steps: - aws-ecs/deploy-update-service: auth: - aws-cli/setup: role_arn: arn:aws:iam::[REDACTED] cluster: ${ECS_CLUSTER_NAME} container-image-name-updates: container=${ECS_SERVICE_NAME},tag=${CIRCLE_SHA1} family: ${ECS_SERVICE_NAME}container_image_name_updates改为了短横线分隔的container-image-name-updates。 - 版本兼容备选方案:若需保留旧命令,可将
aws-ecsorb降级到4.x版本(如circleci/aws-ecs@4.1.0),但推荐使用最新稳定版适配新命令,避免后续兼容性问题。 - 额外验证:确认CircleCI项目已授权访问AWS资源,且
prodcontext中ECS_CLUSTER_NAME、ECS_SERVICE_NAME等环境变量配置正确。
内容的提问来源于stack exchange,提问作者Prajwal Iyer
相关产品推荐
相关产品推荐

