如何连续执行以下bash命令?
aws logs create-export-task --task-name "cloudwatch-log-group-export1"
--log-group-name "/my/log/group1"
--from 1488708419000 --to 1614938819000
--destination "my-s3-bucket"
--destination-prefix "my-log-group1"
aws logs create-export-task --task-name "cloudwatch-log-group-export"
--log-group-name "/my/log/group2"
--from 1488708419000 --to 1614938819000
--destination "my-s3-bucket"
--destination-prefix "my-log-group2"
我对上述命令的问题是,在第一个命令完成执行后,脚本将停留在以下状态,使第二个命令不可达。
{
"taskId": "0e3cdd4e-1e95-4b98-bd8b-3291ee69f9ae"
}
看来我应该想办法等待cloudwatch-log-group-export1
任务完成。
您可以创建一个服务员函数它使用description -export-tasks来获取导出作业的当前状态。
函数示例:
wait_for_export() {
local sleep_time=${2:-10}
while true; do
job_status=$(aws logs describe-export-tasks
--task-id ${1}
--query "exportTasks[0].status.code"
--output text)
echo ${job_status}
[[ $job_status == "COMPLETED" ]] && break
sleep ${sleep_time}
done
}
然后你使用它:
task_id1=$(aws logs create-export-task
--task-name "cloudwatch-log-group-export1"
--log-group-name "/my/log/group1"
--from 1488708419000 --to 1614938819000
--destination "my-s3-bucket"
--destination-prefix "my-log-group1"
--query 'taskId' --output text)
wait_for_export ${task_id1}
# second export
aws-cli
默认自动访问vim编辑模式
在执行aws
命令前,可以将AWS_PAGER
环境变量设置为""
。
export AWS_PAGER=""
aws logs create-export-task...
或者,您可以将其修复到aws的配置文件(~/.aws/config
):
[default]
cli_pager=