public void launch(String command) throws Exception {
		// check format
		if(! this.launchInstancePattern.matcher(command).matches()) {
			System.out.println("Input format is not correct. " + Utils.FORMAT_COMMAND_LAUNCH_INSTANCE);
			return;
		}
		
		//
		RunInstancesRequest request = new RunInstancesRequest();
		StringTokenizer st = new StringTokenizer(command);
		st.nextToken();
		// set default values
		request.withImageId("ami-8c1fece5");
		request.withMinCount(1);
		request.withMaxCount(1);
		request.withInstanceType(Utils.INSTANCE_TYPES[0]);
		while(st.hasMoreTokens()) {
			String tag = st.nextToken();
			String value = st.nextToken();
			if(tag.equalsIgnoreCase("-i")) {
				request.withImageId(value);
			} else if(tag.equalsIgnoreCase("-t")) {
				request.withInstanceType(value);
			} else if(tag.equalsIgnoreCase("-k")) {
				request.withKeyName(value);
			} else if(tag.equalsIgnoreCase("-z")) {
				Placement placement = new Placement();
				placement.setAvailabilityZone(value);
				request.withPlacement(placement);
			} else if(tag.equalsIgnoreCase("-c")) {
				int value1 = Integer.parseInt(value);
				int value2 = Integer.parseInt(st.nextToken());
				value1 = value1 < 1 ? 1 : value1;
				value2 = value2 < 1 ? 1 : value2;
				request.withMinCount(Math.min(value1, value2));
				request.withMaxCount(Math.max(value1, value2));
			}
		}
		
		// -i ami -t instanceType -k keyName -z zone -c minCount maxCount 
		RunInstancesResult result = AWSInstanceManager.ec2.runInstances(request);
		Utils.printInstances(result.getReservation().getInstances());
	}