You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jenkins CI/CD部署至ECS时遇ClusterNotFoundException问题求助

解决Jenkins部署ECS时的ClusterNotFoundException错误

问题场景

通过Jenkins CI/CD部署至ECS时,执行aws ecs update-service命令报错:

An error occurred (ClusterNotFoundException) when calling the UpdateService operation: Cluster not found.

执行的具体命令为:

aws ecs update-service --cluster ecs_cluster --service ecs_service --force-new-deployment --region eu-west-2

排查与解决步骤

1. 核对ECS集群的名称与区域

  • 登录AWS控制台,切换到eu-west-2(伦敦)区域,进入ECS服务页面,确认存在名为ecs_cluster的集群。注意集群名称区分大小写,检查是否存在拼写错误、大小写不匹配或多余空格。
  • 确认集群所在区域与命令中--region参数指定的eu-west-2完全一致,ECS是区域级资源,跨区域无法访问。

2. 验证Jenkins使用的AWS凭证

  • 检查Jenkins中绑定的my-aws-credentials对应的AWS账号,是否与ECS集群所在的AWS账号一致(避免混淆测试/生产账号)。
  • 为该凭证对应的IAM实体(用户/角色)添加必要权限:至少需要ecs:ListClusters(用于验证集群存在)和ecs:UpdateService权限,可先使用通配符*测试权限,后续再按需缩小范围。

3. 确认Jenkins变量传递正确

在Jenkins的部署stage中添加打印变量的步骤,验证${ECS_CLUSTER}、${AWS_REGION}等变量是否正确赋值:

stage('Deploy to ECS') {
    steps {
        echo "ECS Cluster: ${ECS_CLUSTER}"
        echo "AWS Region: ${AWS_REGION}"
        // 原有的凭证绑定与命令步骤
        withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'my-aws-credentials', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {
          // ... 原有命令
        }
    }
}

如果变量为空或值错误,检查Jenkins全局变量、流水线参数或项目配置中的变量定义。

4. 在Jenkins节点手动验证

登录Jenkins运行部署任务的节点,使用相同的AWS凭证执行以下命令,排查是否为环境问题:

# 配置临时凭证
export AWS_ACCESS_KEY_ID="你的AccessKey"
export AWS_SECRET_ACCESS_KEY="你的SecretKey"
# 列出当前区域的所有ECS集群
aws ecs list-clusters --region eu-west-2

如果该命令无法列出ecs_cluster,则说明要么集群不存在,要么凭证/区域有误;如果能列出,则问题可能出在Jenkins的变量传递或环境配置上。

额外提示

你的Jenkins部署步骤中缺少推送镜像至ECR的命令,即使集群问题解决,后续部署也会因为ECR中没有对应镜像而失败,需添加:

bat "docker push ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${IMAGE_NAME}:${IMAGE_TAG}"

内容的提问来源于stack exchange,提问作者kobosky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:58:10