预期的boto3 put_log_事件sequenceToken为:null

2024-09-30 12:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将日志写入cloudwatch,创建日志流,然后在第一次写入时,我强制执行一个错误的序列标记,并期望,根据internet上的示例,在错误中接收一个有效的序列号,如下所示

    try:
        
        response = _logs.put_log_events(
            logGroupName = "xxx",
            logStreamName = ctx,
            logEvents = [
                {
                    'timestamp': int(round(time.time() * 1000)),
                    'message': message
                }
            ],
            sequenceToken = _logSequences.get(ctx,"1")
        )
        _logSequences[ctx] = response['nextSequenceToken']
    except ClientError as error:
        print(error.response)
        if error.response['Error']['Code'] in ["DataAlreadyAcceptedException",
                                            "InvalidSequenceTokenException"]:
            sequence_token = error.response["Error"]["Message"].split(":")[-1].strip(" ")
            _logSequences[ctx] = sequence_token
            _unsafe_log(ctx, message)
            
        else:
            raise error

但响应包含空序列标记:

The given sequenceToken is invalid. The next expected sequenceToken is: null

以下是全部答复:

{'Error': {'Message': 'The given sequenceToken is invalid. The next expected sequenceToken is: null', 'Code': 'InvalidSequenceTokenException'}, 'ResponseMetadata': {'RequestId': 'xxxx', 'HTTPStatusCode': 400, 'HTTPHeaders': {'x-amzn-requestid': 'c8b34ead-da57-441d-b8f8-13cacbe23f6a', 'content-type': 'application/x-amz-json-1.1', 'content-length': '131', 'date': 'Thu, 07 Jan 2021 18:20:40 GMT', 'connection': 'close'}, 'RetryAttempts': 0}}

有什么想法吗


Tags: the标记logmessagetimeisresponse错误
1条回答
网友
1楼 · 发布于 2024-09-30 12:15:31
response = _logs.describe_log_streams(logGroupName="xxx", logStreamNamePrefix="ctx")
logEvents = [
    {
        'timestamp': int(round(time.time() * 1000)),
        'message': message
    }
    ]
eventLog = { 'logGroupName': "xxx",
            'logStreamName': "ctx",
            'logEvents': logEvents
           }
if 'uploadSequenceToken' in response['logStreams'][0]:
    eventLog.update({'sequenceToken': response['logStreams'][0] ['uploadSequenceToken']})

response = _logs.put_log_events(**eventLog)

相关问题 更多 >

    热门问题