簡體   English   中英

無法過濾 aws lambda 函數的 boto3 日志的日志流

[英]Unable to filter logstreams for boto3 logs of aws lambda function

我無法濾除使用boto3 API的lambda函數logStreams,'endtime'過濾器或'logStreamNamePrefix'過濾器。

這有效:

client = boto3.client('logs',
                      aws_access_key_id=aws_account['access_key'],
                      aws_secret_access_key=aws_account['secret_key'],
                      region_name=region)
logGroupName = '/aws/lambda/' + function_name
response = client.filter_log_events(
    logGroupName=logGroupName,
    startTime=int((datetime(2020, 1, 15)- datetime(1970, 1, 1)).total_seconds()),   # epoch_time        
)

但這些不:

1.

response = client.filter_log_events(
    logGroupName=logGroupName,
    startTime=int((datetime(2020, 1, 15)- datetime(1970, 1, 1)).total_seconds()),   # epoch_time    
    endTime=int((datetime(2020, 1, 31)- datetime(1970, 1, 1)).total_seconds())       
)

錯誤:返回空列表,盡管日志數據存在於指定的時間范圍內

2.

response = client.filter_log_events(
    logGroupName=logGroupName,
    startTime=int((datetime(2020, 1, 15)- datetime(1970, 1, 1)).total_seconds()),   # epoch_time    
    logStreamNamePrefix='^2020/01'  # logs starting with this prefix        
)

錯誤:

botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in input: "logStreamNamePrefix", must be one of: logGroupName, logStreamNames, startTime, endTime, filterPattern, nextToken, limit, interleaved

作為臨時修復,我正在輪詢所有響應,然后對其進行顯式過濾。

response = client.filter_log_events(
    logGroupName=logGroupName,
    startTime=int((datetime(2020, 1, 15)- datetime(1970, 1, 1)).total_seconds()),   # epoch_time
)

filtered_response = list(filter(lambda x: x['logStreamName'].startswith('2020/01'), response['events']))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM