我一直在尝试使用jenkins为我的ECS集群设置CI/CD。我遵循此blog进行了相同的操作。但我收到以下错误:
调用UpdateService操作时出错(InvalidParameterException):无效的修订号。编号:49
用于更新服务的命令为:
aws ecs update-service --cluster ${CLUSTER_NAME} --service ${SERVICE_NAME} --task-definition ${TASK_FAMILY}:${TASK_REVISION} --desired-count ${DESIRED_COUNT}
令人惊讶的是,如果我从cli运行命令并输入所有的值,它会成功运行。我不知道这个命令有什么问题。
编辑1:版本号存在于AWS的task-definition中。我可以在AWS控制台中看到该特定版本号。正如我已经提到的,使用该特定版本号在cli中成功运行命令。
编辑2:我可以使用aws ecs list-task-definitions
列出任务定义,我在列表中看到了特定的任务定义,但我无法使用${TASK_FAMILY}:${TASK_REVISION}描述该任务定义。它给了我同样的错误。
2条答案
按热度按时间pbgvytdp1#
我发现
aws ecs describe-task-definition ${TASK_FAMILY}
正在工作,而aws ecs describe-task-definition ${TASK_FAMILY}:${TASK_REVISION}
抛出了相同的Invalid revision number error
。因此,我尝试了不使用${TASK_REVISION}变量的update-service命令,如下所示:
而且它起作用了。它还使用了任务定义的最新版本。
igetnqfo2#
如果任务定义或服务是完整的ARN(与文档相反),那么bash脚本文件中的AWS CLI命令似乎不起作用。当我通过删除arn:aws:..../部分将任务定义和服务剥离到它们的名称(和修订号)时,我的脚本就开始工作了。
需要说明的是,任务定义和服务的完整arn在命令提示符下工作......只是不在bash-script中工作。