如何从cli或使用shell脚本检查任务是否存在?
文档令人困惑。正在使用——task-definition选项作为族。
的命令TASK=$(aws ecs describe-task-definition --task-definition ${TASK_NAME}
错误提示
An error occurred (ClientException) when calling the DescribeTaskDefinition operation: Unable to describe task definition.
任何想法?
这有帮助吗?
#!/bin/bash
ecs_arn=$1
aws_result=$(aws ecs describe-task-definition --task-definition "$ecs_arn" --query 'taskDefinition.[taskDefinitionArn,status]' --output json 2>/dev/null)
# is it present?
if [ $(echo "$aws_result" | grep -i "$ecs_arn" | wc -l) -ne 1 ]; then
echo "task-definition $ecs_arn doesn't exist."
elif [ $(echo "$aws_result" | grep -i active | wc -l) -ne 1 ]; then
echo "task-definition $ecs_arn exist but not active."
else
echo "task-definition $ecs_arn exist and it's active."
fi
# end
保存为bash脚本,并执行如下命令:
./script.sh "arn:aws:ecs:REGION-HERE:ACCOUNT-NAME:............."
你可以提取所有的定义arn:
aws ecs list-task-definitions
我将std错误重定向到/dev/null,因为当任务不存在时,api会返回类似您的错误。
您可以根据自己的情况修改验证。
使用文档:https://docs.aws.amazon.com/cli/latest/reference/ecs/index.html
这个应该在Jenkinsfile脚本中工作。在我的案例中,我只想确认任务描述是否存在,没有其他任何内容。
int taskCount = sh(script: """aws ecs describe-task-definition --task-definition ${ECS_TASK_NAME} --region ${AWS_REGION} --output text | grep -i ${ECS_TASK_NAME} | wc -l""", returnStdout: true).trim().toInteger()
if (taskCount > 0) {
//Task definition exists
}else {
//Task definition does not exist
}