如何让AWS CLI执行命令时静默输出,去除冗余会话信息?
解决AWS ECS execute-command输出冗余会话信息的问题
针对你遇到的冗余信息问题,可以通过以下几种方法过滤输出,得到纯净的版本号:
方法1:非交互式模式+提取最后一行
--interactive会触发交互式会话的提示信息,改用非交互式模式并提取命令执行的最后一行输出(通常是git describe --tags的结果):
# get deployed version COMMAND="git describe --tags" aws ecs execute-command --cluster="${CLUSTER}" --task="${TASK}" --container="${SERVICE}" --command="${COMMAND}" --no-interactive 2>/dev/null | tail -n1 > VERSION
--no-interactive:禁用交互式会话,减少插件提示2>/dev/null:丢弃错误输出中的冗余提示tail -n1:只保留最后一行(即版本号)
方法2:用sed过滤冗余行
如果版本号不在最后一行,或者需要精准剔除特定会话提示,可以用sed删除包含关键词的行:
# get deployed version COMMAND="git describe --tags" aws ecs execute-command --cluster="${CLUSTER}" --task="${TASK}" --container="${SERVICE}" --command="${COMMAND}" --interactive 2>/dev/null | sed '/Session started successfully\|Session ended\|Starting session\|Stopping session/d' > VERSION
根据实际输出的冗余关键词调整sed中的匹配规则,确保只保留版本号行。
方法3:通过环境变量抑制插件提示
设置Session Manager插件的环境变量,从源头禁止非必要的提示输出:
# get deployed version COMMAND="git describe --tags" AWS_SSM_NO_PROMPT=1 aws ecs execute-command --cluster="${CLUSTER}" --task="${TASK}" --container="${SERVICE}" --command="${COMMAND}" --no-interactive 2>/dev/null > VERSION
AWS_SSM_NO_PROMPT=1会抑制插件的交互式提示信息,配合非交互式模式可以大幅减少冗余输出。
内容的提问来源于stack exchange,提问作者HubertNNN
相关产品推荐
相关产品推荐

