Its not about how tricky the implementation is, but what the value of setting this up is. With Lambda for example you just get this magic that invokes your functions when something happens. You don't have to deal with, manage or think about this at all. And its built into many different parts of the stack from S3 to APIG to Dynamo or SNS.
You can of course do something like that yourself in your own infrastructure, but then every piece of software needs to support it somehow, you need to manage that event bus infrastructure and you most likely have to push those events in yourself.
And that kind of thing is already there, so the appeal that Serverless event driven systems in the cloud have (because the providers give you all of this out of the box) is much harder to achieve when you have to do that yourself.