示例#1
0
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)
示例#5
0
def test_s3_delivery(environment, events):
    """Test S3 delivery."""
    delivery_stream = environment.outputs["delivery"]["DeliveryStream1"]
    utils.send_to_delivery_stream(events, delivery_stream)
示例#6
0
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)