1. A computer implemented method for scaling a virtual machine, said method comprising: under the control of one or more computer systems configured with executable instructions, receiving, at the one or more computer systems from at least one customer via an application programming interface (API), a request to launch an instance of a virtual machine image; provisioning, at the one or more computer systems, a virtual machine instance for the at least one customer based at least in part upon the virtual machine image, the virtual machine instance provisioned on a host computing device; receiving, at the one or more computer systems, from the customer via the API, the customer-defined threshold associated with the virtual machine instance; monitoring, at the one or more computer systems, one or more metrics associated with the virtual machine instance during execution of the virtual machine instance; and adjusting, at the one or more computer systems, allocation of one or more computing resources to the virtual machine instance based at least in part on the one or more metrics and the customer-defined threshold, the computing resources including at least one of: processing resources, networking resources, or memory resources.