I'm currently running a group of c3.large Windows Server 2012 instances on Amazon EC2.
The project we're working on is a little different, we have a Node.js script running that periodically polls for jobs via a messaging queue. Each job opens a .jar file to open a user interface on the windows desktop. Our .jar file then performs a series of actions (which involves taking screenshots of the current window), terminates, then the Node.js uploads the results to MongoDb and Amazon S3. The Java application (.jar) requires a desktop session to be active in order to function properly (so I don't think a Service would be much use) - kind of like how automated UI testing would require an active desktop.
The infrastructure works great! However, one big issue is the desktop environment. Upon launching a new instance via the EC2 management console, the desktop environment doesn't exist until I manually start a remote desktop connection from my local machine (thus creating the desktop for our software to run). This isn't practical for scalability reasons, ideally I would like to be able to programatically start/stop instances according to demand.
I've tried a number of things; including
<powershell> commands in the EC2 user-data, using a VNC server and tweaked a couple of settings within the Windows machine itself... all to no avail.
Does anybody know of a technique/setting where by a desktop environment is created upon launch of an EC2 Windows Server 2012 instance?