2017-06-19 20 views
3

我试图通过CLI终止ECS中的任务。通过CLI在AWS ECS上停止任务(程序输出为参数输入bash)

我可以通过执行获取任务名称:

aws ecs list-tasks --cluster "my-cluster" --service-name "my-service" | jq .taskArns[0] 

,输出:

​​

任务作为一个字符串的全部ARN(我有一个全球性的默认输出JSON)。

我可以通过执行杀人任务:

aws ecs stop-task --cluster "my-cluster" --task "task-arn" 

然而,当我试着结合起来:

aws ecs stop-task --cluster "my-cluster" --task $(aws ecs list-tasks --cluster "my-cluster" --service-name "my-service" | jq .taskArns[0]) 

我得到:

发生错误(抛出:InvalidParameterException)时调用StopTask操作:taskId长于36.

我知道这可能是bash程序输出/参数输入插值,但我已经查看了它,并且无法到达它的底部。

+0

什么是'AWS ECS列表任务的输出--cluster“我的 - 集群“--service-name”my-service“| jq .taskArns [0]' – 123

+1

'ARN'是否有任何特殊字符?你可以尝试在引号中的命令替换如下:'aws ecs stop-task --cluster“my-cluster”--task“$(aws ecs list-tasks --cluster”my-cluster“--service-name”我的服务“| jq .taskArns [0])” ' – Inian

+1

另请注意,aws cli基本上内置jq,所以更好(更简单)的方式来查询您的任务arn将与:'aws ecs list-tasks- -cluster“my-cluster”--service“my-service”--output text --query taskArns [0]' – nathanpeck

回答

2

AWS CLI基本上已经JQ建在这么一个更好的(简单)的方式来查询你的任务阿尔恩将符合:

aws ecs list-tasks --cluster "my-cluster" --service "my-service" --output text --query taskArns[0]