def handler()

in orders/src/on_events/main.py [0:0]


def handler(event, _):
    """
    Lambda handler
    """

    order_ids = event["resources"]

    metrics_data = defaultdict(int)

    for order_id in order_ids:
        logger.info({
            "message": "Got event of type {} from {} for order {}".format(event["detail-type"], event["source"], order_id),
            "source": event["source"],
            "eventType": event["detail-type"],
            "orderId": order_id
        })
        tracer.put_annotation("orderId", order_id)
        if event["source"] == "ecommerce.warehouse":
            if event["detail-type"] == "PackageCreated":
                metrics_data["orderPackaged"] += 1
                update_order(order_id, "PACKAGED", event["detail"]["products"])
            elif event["detail-type"] == "PackagingFailed":
                metrics_data["orderFailed"] += 1
                update_order(order_id, "PACKAGING_FAILED")
            else:
                logger.warning({
                    "message": "Unknown event type {} for order {}".format(event["detail-type"], order_id),
                    "source": event["source"],
                    "eventType": event["detail-type"],
                    "orderId": order_id
                })
        elif event["source"] == "ecommerce.delivery":
            if event["detail-type"] == "DeliveryCompleted":
                metrics_data["orderFulfilled"] += 1
                update_order(order_id, "FULFILLED")
            elif event["detail-type"] == "DeliveryFailed":
                metrics_data["orderFailed"] += 1
                update_order(order_id, "DELIVERY_FAILED")
            else:
                logger.warning({
                    "message": "Unknown event type {} for order {}".format(event["detail-type"], order_id),
                    "source": event["source"],
                    "eventType": event["detail-type"],
                    "orderId": order_id
                })
        else:
            logger.warning({
                "message": "Unknown source {} for order {}".format(event["source"], order_id),
                "source": event["source"],
                "eventType": event["detail-type"],
                "orderId": order_id
            })

    # Add custom metrics
    metrics.add_dimension(name="environment", value=ENVIRONMENT)
    for key, value in metrics_data.items():
        metrics.add_metric(name=key, unit=MetricUnit.Count, value=value)