AWS ECS 更新服务操作时出现 InvalidParameterException 错误

8
我一直在尝试使用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的任务定义中。 我可以从AWS控制台中看到该特定修订版本。正如我先前提到的,使用该特定修订版本时,命令可以成功运行。

编辑2:我能够使用aws ecs list-task-definitions列出任务定义,并且我在列表中看到了特定的任务定义,但是我无法使用${TASK_FAMILY}:${TASK_REVISION}描述该任务定义。 它给我相同的错误。

2个回答

4

我发现 aws ecs describe-task-definition ${TASK_FAMILY} 可以工作,而 aws ecs describe-task-definition ${TASK_FAMILY}:${TASK_REVISION} 则出现了相同的“无效修订号错误”。

因此,我尝试使用不带 ${TASK_REVISION} 变量的 update-service 命令,就像这样:

aws ecs update-service --cluster ${CLUSTER_NAME} --service ${SERVICE_NAME} --task-definition ${TASK_FAMILY} --desired-count ${DESIRED_COUNT}

它运作良好,同时使用了最新版本的任务定义。


你知道这是否适用于ARN?还是只有TaskFamily可以?谢谢。 - Iván Sánchez
1
@IvánSánchez,您只需要输入任务族名称,不需要提供完整的ARN。 - Rahul Sharma

0

似乎如果任务定义或服务是完整的ARN(与文档相反),则来自bash脚本文件的AWS CLI命令不起作用。当我通过删除arn:aws:..../部分将任务定义和服务剥离到它们的名称(和修订号)时,我的脚本开始工作。

只是为了明确,任务定义和服务的完整arn可以从命令提示符中使用...但不能从bash脚本中使用。


原因是bash脚本无法正常工作,是因为bash会给字符串添加双引号,然后aws cli会在值中添加转义字符。使用以下代码从bash中移除: task_def_arn=${task_def_arn%"} task_def_arn=${task_def_arn#"} - Vikram S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接