def lambda_result_to_destination(func_details, event, result, is_async, error): if not func_details.destination_enabled(): return payload = { "version": "1.0", "timestamp": timestamp_millis(), "requestContext": { "requestId": long_uid(), "functionArn": func_details.arn(), "condition": "RetriesExhausted", "approximateInvokeCount": 1, }, "requestPayload": event, "responseContext": {"statusCode": 200, "executedVersion": "$LATEST"}, "responsePayload": {}, } if result and result.result: try: payload["requestContext"]["condition"] = "Success" payload["responsePayload"] = json.loads(result.result) except Exception: payload["responsePayload"] = result.result if error: payload["responseContext"]["functionError"] = "Unhandled" # add the result in the response payload if error.result is not None: payload["responsePayload"] = json.loads(error.result) send_event_to_target(func_details.on_failed_invocation, payload) return if func_details.on_successful_invocation is not None: send_event_to_target(func_details.on_successful_invocation, payload)
def func(*args): rule_name = data.get('Name') client = aws_stack.connect_to_service('events') targets = client.list_targets_by_rule(Rule=rule_name)['Targets'] if targets: LOG.debug( 'Notifying %s targets in response to triggered Events rule %s' % (len(targets), rule_name)) for target in targets: arn = target.get('Arn') event = json.loads(target.get('Input') or '{}') aws_stack.send_event_to_target(arn, event)
def process_events(event: Dict, targets: List[Dict]): for target in targets: arn = target["Arn"] changed_event = filter_event_with_target_input_path(target, event) try: aws_stack.send_event_to_target( arn, changed_event, aws_stack.get_events_target_attributes(target)) except Exception as e: LOG.info( f"Unable to send event notification {truncate(event)} to target {target}: {e}" )
def func(*args, **kwargs): rule_name = data.get("Name") client = aws_stack.connect_to_service("events") targets = client.list_targets_by_rule(Rule=rule_name)["Targets"] if targets: LOG.debug( "Notifying %s targets in response to triggered Events rule %s" % (len(targets), rule_name)) for target in targets: arn = target.get("Arn") event = json.loads(target.get("Input") or "{}") attr = aws_stack.get_events_target_attributes(target) aws_stack.send_event_to_target(arn, event, target_attributes=attr)
def func(*args, **kwargs): rule_name = data.get("Name") client = aws_stack.connect_to_service("events") targets = client.list_targets_by_rule(Rule=rule_name)["Targets"] if targets: LOG.debug( "Notifying %s targets in response to triggered Events rule %s" % (len(targets), rule_name)) for target in targets: arn = target.get("Arn") event_str = target.get("Input") or "{}" event = json.loads(event_str) attr = aws_stack.get_events_target_attributes(target) try: aws_stack.send_event_to_target(arn, event, target_attributes=attr) except Exception as e: LOG.info( f"Unable to send event notification {truncate(event)} to target {target}: {e}" )
def lambda_result_to_destination(func_details, event, result, is_async, error): if not func_details.destination_enabled(): return payload = { 'version': '1.0', 'timestamp': timestamp_millis(), 'requestContext': { 'requestId': long_uid(), 'functionArn': func_details.arn(), 'condition': 'RetriesExhausted', 'approximateInvokeCount': 1 }, 'requestPayload': event, 'responseContext': { 'statusCode': 200, 'executedVersion': '$LATEST' }, 'responsePayload': {} } if is_async: payload['responsePayload']['statusCode'] = 200 payload['responsePayload']['headers'] = None payload['responsePayload']['multiValueHeaders'] = None payload['responsePayload']['body'] = '' else: payload['responsePayload'] = result.result if error: payload['responseContext']['functionError'] = 'Unhandled' # add the result in the response payload if error.result is not None: payload['responsePayload'] = json.loads(error.result) send_event_to_target(func_details.on_failed_invocation, payload) return send_event_to_target(func_details.on_successful_invocation, payload)
def process_events(event, targets): for target in targets: arn = target['Arn'] changed_event = filter_event_with_target_input_path(target, event) aws_stack.send_event_to_target( arn, changed_event, aws_stack.get_events_target_attributes(target))