通过CLI在AWS ECS上停止任务(程序输出作为参数输入bash)

Sim*_*mon 7 bash command-line-interface amazon-web-services

我正在尝试通过CLI杀死ECS中的任务。

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

aws ecs list-tasks --cluster "my-cluster" --service-name "my-service" | jq .taskArns[0]
Run Code Online (Sandbox Code Playgroud)

输出:

"arn:aws:ecs:REGION:ACCOUNT-ID:task/TASK-GUID"
Run Code Online (Sandbox Code Playgroud)

任务的完整ARN作为字符串(我具有JSON的全局默认输出)。

我可以通过执行以下命令来终止任务:

aws ecs stop-task --cluster "my-cluster" --task "task-arn"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将其结合时:

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

我得到:

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

我知道这可能是bash程序输出/自变量输入插值,但是我已经向上看了,无法深入到其底部。

nat*_*eck 6

AWS cli本质上内置了jq,因此使用以下更好(更简单)的方式来查询任务arn:

aws ecs list-tasks --cluster "my-cluster" --service "my-service" --output text --query taskArns[0]
Run Code Online (Sandbox Code Playgroud)