问题描述
我正在aws-cli中运行命令以获取日志,并且需要使用此命令的输出在python中执行一些操作。
我正在做这样的事情:
aws logs filter-log-events --log-group-name "something" --log-stream-names my-log-stream --filter-pattern "status=FAIL" | python3 -c "import sys,json; print(json.load(sys.stdin))"
上面的命令获取aws日志并运行python代码段以打印返回的json。
我想访问python代码段中的log-group-name
和log-stream-name
,即“ something”和“ my-log-stream”(在这种情况下)。我不确定该怎么做。
我尝试使用sys.argv
,但它会返回python命令中传递的参数,即['-c']
,而不是aws命令。
解决方法
这不是管道的工作方式。它只是将命令的输出发送到下一个命令。您可以将log-group-name
和log-stream-name
设置为环境变量
export LGN=something
...
然后使用os.environ["LGN"]
在python中访问它...类似于
export LGN="my-log-group"; <your code here> | python3 -c "import os; print(os.environ['LGN'])"