Exemplo n.º 1
0
 def do_execute(*args):
     # set the invocation time in milliseconds
     invocation_time = int(time.time() * 1000)
     # start the execution
     try:
         result, log_output = self._execute(func_arn, func_details,
                                            event, context, version)
     except Exception as e:
         if asynchronous:
             if get_from_event(event,
                               'eventSource') == EVENT_SOURCE_SQS:
                 sqs_queue_arn = get_from_event(event, 'eventSourceARN')
                 if sqs_queue_arn:
                     # event source is SQS, send event back to dead letter queue
                     sqs_error_to_dead_letter_queue(
                         sqs_queue_arn, event, e)
             else:
                 # event source is not SQS, send back to lambda dead letter
                 lambda_error_to_dead_letter_queue(
                     func_details, event, e)
         raise e
     finally:
         self.function_invoke_times[func_arn] = invocation_time
     # forward log output to cloudwatch logs
     self._store_logs(func_details, log_output, invocation_time)
     # return final result
     return result, log_output
Exemplo n.º 2
0
 def _run(func_arn=None):
     # set the invocation time in milliseconds
     invocation_time = int(time.time() * 1000)
     # start the execution
     raised_error = None
     result = None
     dlq_sent = None
     try:
         result = self._execute(func_arn, func_details, event,
                                context, version)
     except Exception as e:
         raised_error = e
         if asynchronous:
             if get_from_event(event,
                               'eventSource') == EVENT_SOURCE_SQS:
                 sqs_queue_arn = get_from_event(
                     event, 'eventSourceARN')
                 if sqs_queue_arn:
                     # event source is SQS, send event back to dead letter queue
                     dlq_sent = sqs_error_to_dead_letter_queue(
                         sqs_queue_arn, event, e)
             else:
                 # event source is not SQS, send back to lambda dead letter queue
                 lambda_error_to_dead_letter_queue(
                     func_details, event, e)
         raise e
     finally:
         self.function_invoke_times[func_arn] = invocation_time
         callback and callback(result,
                               func_arn,
                               event,
                               error=raised_error,
                               dlq_sent=dlq_sent)
     # return final result
     return result
Exemplo n.º 3
0
 def do_execute(*args):
     # set the invocation time in milliseconds
     invocation_time = int(time.time() * 1000)
     # start the execution
     try:
         result, log_output = self._execute(func_arn, func_details, event, context, version)
     except Exception as e:
         if asynchronous:
             lambda_error_to_dead_letter_queue(func_details, event, e)
         raise e
     finally:
         self.function_invoke_times[func_arn] = invocation_time
     # forward log output to cloudwatch logs
     self._store_logs(func_details, log_output, invocation_time)
     # return final result
     return result, log_output