如何连续运行aws bash命令?



如何连续执行以下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=

相关内容

  • 没有找到相关文章

最新更新