We do this at work.
We have a small server, let's call it the receiver, it's the target of the GitHub webhook events. It runs a small application that parses the payload and incorporates logic around how to proceed e.g. create a new server on the infrastructure provider, update the load balancer, destroy the server etc.
The receiver is relatively straightforward to handle, the other necessary supporting systems you'll need are an approach to configuration management/provisioning (how does the server have the packages necessary to run the application), secrets management (how does the server get access to sensitive information) and routing (how do the subdomains get updated and route to the correct server).
It could be worthwhile looking at preparing an AMI with the necessary services configured, a cloudformation template with the infrastructure provisioning logic and AWS code deploy could handle deployments for you.
Don't forget to consider how you'll handle the database/persistence layer & zero down time deployments.