code: @Override
  	public String createMachine( TargetHandlerParameters parameters ) throws TargetException {
  
  		this.logger.fine( "Creating a new machine on AWS." );
  
  		// For IaaS, we only expect root instance names to be passed
  		if( InstanceHelpers.countInstances( parameters.getScopedInstancePath()) > 1 )
  			throw new TargetException( "Only root instances can be passed in arguments." );
  
  		String rootInstanceName = InstanceHelpers.findRootInstancePath( parameters.getScopedInstancePath());
  
  		// Deal with the creation
  		String instanceId;
  		try {
  			AmazonEC2 ec2 = createEc2Client( parameters.getTargetProperties());
  			String userData = UserDataHelpers.writeUserDataAsString(
  					parameters.getMessagingProperties(),
  					parameters.getDomain(),
  					parameters.getApplicationName(),
  					rootInstanceName );
  
  			RunInstancesRequest runInstancesRequest = prepareEC2RequestNode( parameters.getTargetProperties(), userData );
  			RunInstancesResult runInstanceResult = ec2.runInstances( runInstancesRequest );
  			instanceId = runInstanceResult.getReservation().getInstances().get( 0 ).getInstanceId();
  
  		} catch( Exception e ) {
  			this.logger.severe( "An error occurred while creating a new machine on EC2. " + e.getMessage());
  			throw new TargetException( e );
  		}
  
  		return instanceId;
  	}
docs: /*
  (non-Javadoc)
  @see net.roboconf.target.api.TargetHandler
  #createMachine(net.roboconf.target.api.TargetHandlerParameters)