Cethy
Cethy

Reputation: 551

Attach additional info to Lambda time-out message?

When a Lambda times out, it outputs a message to CloudWatch (if enabled) saying "Task timed out".

It would be beneficial to attach additional info (such as the context of the offending call) to the message. Right now I'm writing the context to CloudWatch at the start of the invocation - but it would sometimes be preferable if everything was contained within a single message.

Is something like that possible?

Upvotes: 0

Views: 457

Answers (2)

samtoddler
samtoddler

Reputation: 9665

There is no timeout hook for lambda but can be implemented with a little bit of code

    import signal
    
    def handler(event, context):
        ....
        signal.alarm((context.get_remaining_time_in_millis())
        .....
    
    def timeout_handler(_signal, _frame):
        raise Exception('other information')

We implemented something like this for a lot of custom handlers in cloudformation.

Upvotes: 2

Maurice
Maurice

Reputation: 13187

Unfortunately there is no almost-timed-out-hook. You may however be able to inspect the context object you get in the Lambda handler to look at the remaining run time and if it gets close to timing out printing out the additional info.

In python you could use context.get_remaining_time_in_millis() as per the documentation to get that info.

Upvotes: 2

Related Questions