# US 10,768,955 B1 · Executing commands within virtual machine instances

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,768,955 B1
- Document ID: US10768955B1
- Status: Granted
- Kind: B1
- Application number: 16/178,149
- Filed: 2018-11-01
- Granted: 2020-09-08
- Earliest claimed: 2015-03-20
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Wesley Gavin King
- Web page: https://patentgrep.com/patent/US10768955B1

## CPC

- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 9/50: Allocation of resources, e.g. of the central processing unit [CPU]
- G06F 9/5005: {to service a request}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- G06F 9/5016: {the resource being the memory}
- G06F 9/5022: {Mechanisms to release resources}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/5055: {considering software capabilities, i.e. software resources associated or available to the machine}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/5072: {Grid computing}
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 9/54: Interprogram communication
- G06F 9/541: {via adapters, e.g. between incompatible applications}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/4557: {Distribution of virtual machine instances; Migration and load balancing}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45587: {Isolation or security of virtual machine instances}
- G06F 2009/45591: {Monitoring or debugging support}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Technologies are disclosed herein for executing commands within virtual machine (“VM”) instances. A public web service application programming interface (“API”) is exposed within a service provider network that includes methods relating to the execution of commands within VM instances. For example, the API might include a method for obtaining a list of the commands that can be executed within a VM instance. The API might also include a method for requesting the execution of a command within a VM instance. The API might also include a method for requesting data describing the status of the execution of a command within a VM instance. The API might also expose other methods. A software agent executing on a VM instance may be utilized to provide a list of commands that can be executed in the VM, to execute requested commands, and to provide data describing the status of execution of a command.

## Claims

### Claim 1

An apparatus, comprising:
a processor; and
a non-transitory computer-readable storage medium having instructions stored thereupon which are executable by the processor and which, when executed, cause the processor to:
expose a public web service application programming interface (API) comprising a method configured to execute a specified command within a virtual machine (VM) instance;
receive a call over the API to execute the specified command; and
cause a request to execute a script associated with the specified command to be transmitted to a software component, the software component executing within the VM instance and configured to execute the script within the VM instance.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the software component is further configured to identify the script associated with the specified command using a configuration file.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the software component is further configured to retrieve the script associated with the specified command from a data store.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the non-transitory computer-readable storage medium has further instructions stored thereupon which, when executed, cause the processor to log execution of the script associated with the specified command.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the non-transitory computer-readable storage medium has further instructions stored thereupon which, when executed, cause the processor to utilize data identifying commands available for execution within the VM instance to generate a user interface (UI) configured to display a UI control for selecting the specified command.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein receive the call over the API to execute the specified command is in response to a selection of the UI control for executing the specified command.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the non-transitory computer-readable storage medium has further instructions stored thereupon which, when executed, cause the processor to determine whether a user associated with the call over the API to execute the specified command is authorized to perform the specified command prior to causing the request to execute the script associated with the specified command to be transmitted to the software component executing in the VM instance.

### Claim 8

A computer-implemented method for executing a command within a virtual machine (VM) instance executing within a service provider network, the computer-implemented method comprising:
exposing an application programming interface (API) within the service provider network, the API comprising a method configured to execute a specified command within the VM instance;
receiving a call over the API to execute the specified command; and
causing a request to execute a script associated with the specified command to be transmitted to a software component, the software component executing within the VM instance and configured to execute the script within the VM instance.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein the software component is further configured to identify the script associated with the specified command using a configuration file.

### Claim 10 (depends on 8)

The computer-implemented method of claim 8, wherein the software component is further configured to retrieve the script associated with the specified command from a data store.

### Claim 11 (depends on 8)

The computer-implemented method of claim 8, further comprising:
logging execution of the script associated with the specified command.

### Claim 12 (depends on 8)

The computer-implemented method of claim 8, further comprising:
utilizing data identifying commands available for execution within the VM instance to generate a user interface (UI) configured to display a UI control for selecting the specified command.

### Claim 13 (depends on 12)

The computer-implemented method of claim 12, wherein receiving the call over the API to execute the specified command is in response to a selection of the UI control for executing the specified command.

### Claim 14 (depends on 8)

The computer-implemented method of claim 8, further comprising:
determining whether a user associated with the call over the API to execute the specified command is authorized to perform the specified command prior to causing the request to execute the script associated with the specified command to be transmitted to the software component executing in the VM instance.

### Claim 15

A non-transitory computer-readable storage medium having computer-executable instructions stored thereupon which, when executed by a computer, cause the computer to:
expose a public web service application programming interface (API) comprising a method configured to execute a specified command within a virtual machine (VM) instance;
receive a call over the API to execute the specified command; and
cause a request to execute a script associated with the specified command to be transmitted to a software component, the software component executing within the VM instance and configured to execute the script within the VM instance.

### Claim 16 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the software component is further configured to identify the script associated with the specified command using a configuration file.

### Claim 17 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the software component is further configured to retrieve the script associated with the specified command from a data store.

### Claim 18 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the non-transitory computer-readable storage medium has further instructions stored thereupon which, when executed, cause the computer to log execution of the script associated with the specified command.

### Claim 19 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the non-transitory computer-readable storage medium has further instructions stored thereupon which, when executed, cause the processor to utilize data identifying commands available for execution within the VM instance to generate a user interface (UI) configured to display a UI control for selecting the specified command.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein receive the call over the API to execute the specified command is in response to a selection of the UI control for executing the specified command.
