如何连续 运行 aws bash 命令?
How to run aws bash commands consecutively?
如何连续执行以下 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
任务完成
aws-cli
默认自动进入 vim 编辑模式。
你可以通过在执行aws
命令之前设置AWS_PAGER
环境变量为""
来避免它。
export AWS_PAGER=""
aws logs create-export-task...
或者,您可以将其修复到 aws 的配置文件 (~/.aws/config
):
[default]
cli_pager=
您可能必须创建一个 waiter 函数,它使用 describe-export-tasks 来获取导出作业的当前状态。
此类函数的示例:
wait_for_export() {
local sleep_time=${2:-10}
while true; do
job_status=$(aws logs describe-export-tasks \
--task-id \
--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
如何连续执行以下 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
任务完成
aws-cli
默认自动进入 vim 编辑模式。
你可以通过在执行aws
命令之前设置AWS_PAGER
环境变量为""
来避免它。
export AWS_PAGER=""
aws logs create-export-task...
或者,您可以将其修复到 aws 的配置文件 (~/.aws/config
):
[default]
cli_pager=
您可能必须创建一个 waiter 函数,它使用 describe-export-tasks 来获取导出作业的当前状态。
此类函数的示例:
wait_for_export() {
local sleep_time=${2:-10}
while true; do
job_status=$(aws logs describe-export-tasks \
--task-id \
--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