def lambda_handler(event, context): """Handle incoming requests.""" if INPUT_DELIVERY_STREAM: send_to_delivery_stream(event, INPUT_DELIVERY_STREAM) resp = HANDLER(event, context) if OUTPUT_DELIVERY_STREAM: send_to_delivery_stream(resp, OUTPUT_DELIVERY_STREAM) return resp
def send_to_delivery_stream(events, delivery_stream): """Send events to a Firehose delivery stream.""" if events: logger.info("Sending %d events to delivery stream '%s' ...", len(events), delivery_stream) stream_name = delivery_stream["stream_name"] if "filter" in delivery_stream: logger.info("Applying filter before delivery") events = [ copy.deepcopy(ev) for ev in events if delivery_stream["filter"](ev) ] logger.info("Selected %d events for delivery", len(events)) if not events: logger.info("All events were filtered out: nothing delivered") return if "mapper" in delivery_stream: logger.info("Mapping %d events before delivery", len(events)) events = [ delivery_stream["mapper"](copy.deepcopy(ev)) for ev in events ] logger.info("First delivered event: %s", pretty(events[0])) resp = utils.send_to_delivery_stream(events, stream_name) if resp['ResponseMetadata']['HTTPStatusCode'] != 200: raise FirehoseError(json.dumps(resp)) logger.info(resp)
def send_to_delivery_stream(events, delivery_stream): """Send events to a Firehose delivery stream.""" if events: logger.info("Sending %d events to delivery stream '%s' ...", len(events), delivery_stream) stream_name = delivery_stream["stream_name"] if "filter" in delivery_stream: logger.info("Applying filter before delivery") events = [copy.deepcopy(ev) for ev in events if delivery_stream["filter"](ev)] logger.info("Selected %d events for delivery", len(events)) if not events: logger.info("All events were filtered out: nothing delivered") return if "mapper" in delivery_stream: logger.info("Mapping %d events before delivery", len(events)) events = [delivery_stream["mapper"](copy.deepcopy(ev)) for ev in events] logger.info("First delivered event: %s", pretty(events[0])) resp = utils.send_to_delivery_stream(events, stream_name) if resp['ResponseMetadata']['HTTPStatusCode'] != 200: raise FirehoseError(json.dumps(resp)) logger.info(resp)
def send_to_delivery_stream(events, delivery_stream): if events: logger.info("Sending events to delivery stream '{}' ...".format( len(events), delivery_stream)) resp = utils.send_to_delivery_stream(events, delivery_stream) if resp['ResponseMetadata']['HTTPStatusCode'] != 200: raise FirehoseError(json.dumps(resp)) logger.info(resp)
def test_s3_delivery(environment, events): """Test S3 delivery.""" delivery_stream = environment.outputs["delivery"]["DeliveryStream1"] utils.send_to_delivery_stream(events, delivery_stream)
def test_es_delivery(environment, events): delivery_stream = environment.outputs["delivery"]["DeliveryStream2"] utils.send_to_delivery_stream(events, delivery_stream) delivery_stream = environment.outputs["delivery"]["DeliveryStream3"] utils.send_to_delivery_stream(events, delivery_stream)