使用boto3尝试时,Aws cloudwatch日志getQueryResults返回空值。

问题描述 投票:0回答:1

使用aws的boto3,我试图运行start query,并使用query id获取结果,但在python脚本中没有达到预期的效果。它返回预期的json输出为start_query,并能够获取queryID。但如果我尝试使用queryID获取查询结果,它返回空的json。

<code>
import boto3
client = boto3.client('logs')
executeQuery = client.start_query(
       logGroupName='LOGGROUPNAME',
       startTime=STARTDATE,
       endTime=ENDDATE,
       queryString='fields status',
       limit=10000
   )
getQueryId=executeQuery.get('queryId')
getQueryResults = client.get_query_results(
    queryId=getQueryId
  )
</code>

它将 get_query_results 的回复返回为 {'results': [], 'statistics': {'recordsMatched': 0.0, 'recordsScanned': 0.0, 'bytesScanned': 0.0}, 'status': 'Running',

但如果我尝试使用aws cli与脚本生成的queryID,它返回json输出的预期。

有谁能告诉我为什么从boto3 python脚本中不能工作,而在cli中却能工作?

谢谢你。

python-3.x amazon-web-services boto3 amazon-cloudwatch amazon-cloudwatchlogs
1个回答
0
投票

查询状态是 Running 在你的例子中。它不在 Complete 的状态呢。

运行查询是 瞬息万变. 要等一会查询完成,才能得到结果。

你可以使用 描述查询 来检查你的查询是否已经完成。你也可以检查 logs 服务有专门 服务员 在boto3的结果。他们将节省你从拉 describe_queries API在一个循环中等待你的查询完成。

当你在CLI中这样做时,可能有更多的时间才开始查询,并使用CLI查询结果。

© www.soinside.com 2019 - 2024. All rights reserved.