(57)【特許請求の範囲】
【請求項１】
システムであって、
１つまたは複数のコンピュータシステムを備え、前記１つまたは複数のコンピュータシステムの各コンピュータシステムは、１つまたは複数のメモリに接続された１つまたは複数のプロセッサを含み、前記１つまたは複数のメモリは、前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令を有し、前記コンピュータ実行可能命令は、前記１つまたは複数のプロセッサによって実行されるときに、前記システムに、
仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するように構成された実行可能コードを備える公共ウェブサービスアプリケーションプログラミングインタフェース（ＡＰＩ）プログラムを公開させ、前記コマンドは、前記ＶＭインスタンスの中で実行できるコマンドのリスト及びコマンドの前記リストに対応するプログラム構成要素を識別するファイルで指定され、
前記ＶＭインスタンスの中で前記コマンドを実行するための呼出しを受け取らせ、
前記コマンドを実行する要求を、前記ＶＭインスタンスで実行するソフトウェアエージェントに送信させ、前記ソフトウェアエージェントは、前記要求の受取りに応えて、前記ファイルに基づいて前記コマンドに対応する前記プログラム構成要素を識別し、前記ＶＭインスタンスで前記プログラム構成要素を実行するように構成されている、
前記システム。
【請求項２】
前記１つまたは複数のメモリは、前記システムに、前記ＶＭインスタンスでの前記コマンドの前記実行を記録させる、前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項１に記載のシステム。
【請求項３】
前記公共ウェブサービスＡＰＩプログラムは、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するように構成された実行可能コードをさらに含む、請求項１に記載のシステム。
【請求項４】
前記１つまたは複数のメモリは、前記システムに、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータを要求する呼出しを受け取らせ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる、
前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項２に記載のシステム。
【請求項５】
前記１つまたは複数のメモリは、前記システムに、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを受け取らせ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データをキャッシュに記憶させ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータを要求する呼出しに応えるために、前記キャッシュに記憶される、前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを活用させる、
前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項３に記載のシステム。
【請求項６】
前記１つまたは複数のメモリは、前記システムに、前記ＶＭインスタンスの中で前記コマンドを実行するためのＵＩコントロールを表示するように構成されたユーザインタフェース（ＵＩ）を生成するために、前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを活用させる、前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項３に記載のシステム。
【請求項７】
前記公共ウェブサービスＡＰＩプログラムは、前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するように構成された実行可能コードをさらに含む、請求項１に記載のシステム。
【請求項８】
前記１つまたは複数のメモリは、前記システムに、
前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するために呼出しを受け取らせ、
前記ＶＭインスタンスの中での前記コマンドの前記実行の前記ステータスに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる、
前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項７に記載のシステム。
【請求項９】
前記１つまたは複数のメモリは、前記システムに、前記コマンドを実行する前記要求を前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる前に、前記呼出しと関連付けられたユーザが前記コマンドを実行する権限を与えられていると判断させる、前記１つまたは複数のメモリに記憶されたコンピュータ実行可能命令をさらに有する、請求項８に記載のシステム。
【請求項１０】
前記コマンドは、前記ＶＭインスタンスでプロセスを再開するためのコマンド、キャッシュをフラッシュするためのコマンド、バックアップ動作を実行するためのコマンド、前記ＶＭインスタンスを構成するためのコマンド、または前記ＶＭインスタンスで試験を実行するためのコマンドの１つまたは複数を含む、請求項８に記載のシステム。
【請求項１１】
仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのコンピュータ実装方法であって、
サービスプロバイダネットワークの中でアプリケーションプログラミングインタフェース（ＡＰＩ）プログラムを公に公開することであって、前記ＡＰＩプログラムは、前記サービスプロバイダネットワークの中で実行する仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのメソッドを含み、前記コマンドは、前記ＶＭインスタンスの中で実行できるコマンドのリスト及びコマンドの前記リストに対応するプログラム構成要素を識別するファイルで指定される、ＡＰＩプログラムを公に公開することと、
前記ＶＭインスタンスの中で前記コマンドを実行するための前記メソッドに対する呼出しを受け取ることと、
前記コマンドを実行する要求を、前記ＶＭインスタンスで実行するソフトウェアエージェントに送信させることであって、前記ソフトウェアエージェントは、前記要求の受取りに応えて、前記ファイルに基づいて前記コマンドに対応する前記プログラム構成要素を識別し、前記ＶＭインスタンスで前記プログラム構成要素を実行するように構成される、送信させることと、
を含む、前記コンピュータ実装方法。
【請求項１２】
前記ＡＰＩプログラムは、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドをさらに含む、請求項１１に記載のコンピュータ実装方法。
【請求項１３】
前記ＡＰＩプログラムは、前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するためのメソッドをさらに含む、請求項１１に記載のコンピュータ実装方法。
【請求項１４】
前記コマンドを実行する前記要求を前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる前に、前記コマンドを実行するための前記メソッドに対する前記呼出しと関連付けられたユーザが前記コマンドを実行する権限を与えられていると判断することをさらに含む、請求項１１に記載のコンピュータ実装方法。
【請求項１５】
前記コマンドは、前記ＶＭインスタンスでプロセスを再開するためのコマンド、キャッシュフラッシュするためのコマンド、バックアップ動作を実行するためのコマンド、前記ＶＭインスタンスを構成するためのコマンド、または前記ＶＭインスタンスで試験を実行するためのコマンドの１つまたは複数を含む、請求項１１に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシンインスタンスの中でのコマンドの実行に関する。
【０００２】
関連出願の相互参照
本特許は、出願全体が参照により本明細書に援用される、２０１５年３月２０日に出願された「Ｅｘｅｃｕｔｉｎｇ  Ｃｏｍｍａｎｄｓ  Ｗｉｔｈｉｎ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｉｎｓｔａｎｃｅｓ」と題する米国出願第１４／６６４，１３５号の優先権を主張する。
【背景技術】
【０００３】
顧客が多様なタイプのコンピューティングリソースを恒久的にまたは必要な場合に応じて購入及び活用できるようにするネットワークベースのサービスプロバイダネットワークが存在する。例えば、サービスプロバイダネットワークは、顧客が仮想マシン（「ＶＭ」）インスタンス、データストレージリソース、データベースリソース、ネットワーキングリソース、ネットワークサービス等のコンピューティングリソース、及び他のタイプのコンピューティングリソースを購入し、活用できるようにしてよい。顧客はサービスプロバイダネットワークによって提供されるコンピューティングリソースを、例えばネットワークベースのアプリケーションまたは別のタイプの機能性を提供する等の所望される機能性を実装するように構成してよい。
【０００４】
上述されたコンピューティングリソース等のサービスプロバイダネットワークによって提供される管理コンピューティングリソースは複雑で、多大な時間を要することがある。例えば及び制限なく、ＶＭインスタンスの中でコマンドを実行するためには、ユーザが所望されるコマンドを実行するためにＶＭインスタンスに遠隔でログインすることが必要な場合がある。特にコマンドを複数のＶＭインスタンスで実行しなければならない場合、このプロセスは、非常に多大な時間を要することがある。
【０００５】
本明細書で行われる開示は、これらの考慮事項及び他の考慮事項に関して提示される。
【図面の簡単な説明】
【０００６】
【図１】ＶＭインスタンスの中でコマンドを実行するための機能性を提供するように構成されるサービスプロバイダネットワークの構成及び動作の態様を示すシステムアーキテクチャ図である。
【図２】ＶＭインスタンスの中で実行できるコマンドのリストを入手するための例示的なルーチンを示す流れ図である。
【図３】ＶＭインスタンスの中でコマンドを実行するための例示的なルーチンを示す流れ図である。
【図４】ＶＭインスタンスの中で実行しているまたは実行を完了したコマンドのステータスを入手するための、本明細書に開示される例示的なルーチンの態様を示す流れ図である。
【図５】本明細書に説明される機能性の態様を実装するように構成されてよいサービスプロバイダネットワークを含む例示的な操作環境を示すシステム及びネットワークの図である。
【図６】本明細書に開示される技術の態様を実装するために活用されてよいデータセンタの構成を示すコンピューティングシステム図である。
【図７】本明細書に開示される１つの構成で、サービスプロバイダによって提供され、サービスプロバイダの中で活用される可能性があるいくつかのサービスの態様を示すシステム及びネットワークの図である。
【図８】本明細書に提示される多様な技術の態様を実装するために活用される可能性があるコンピューティング装置を実装するための例示的なコンピュータハードウェアアーキテクチャを示すコンピュータアーキテクチャ図である。
【発明を実施するための形態】
【０００７】
以下の発明を実施するための形態は、ＶＭインスタンスの中でコマンドを実行するための技術を対象としている。また、本明細書に提示される本開示は、ＶＭインスタンスの中で実行できるコマンドを発見するための、及びＶＭインスタンスの中で、実行しているまたは実行を完了したコマンドのステータスを示す情報を入手するための技術も含む。これらの技術の実装により、サービスプロバイダネットワークによって提供されるオンデマンドコンピューティングサービスのユーザはＶＭインスタンスに遠隔でログインする必要なく、ＶＭインスタンスの中で迅速に且つ容易にコマンドを実行できる。
【０００８】
上記に簡略に説明されるように、本明細書に開示される多様な技術はサービスプロバイダネットワークで実装されてよい。サービスプロバイダネットワークは、顧客が、ＶＭインスタンス、データストレージリソース、データベースリソース、ネットワーキングリソース、ネットワークサービス等の（本明細書で「リソース」と呼ばれることがある）コンピューティングリソース、及び他のタイプのコンピューティングリソースを購入し、活用できるようにしてよい。本明細書に開示される機能性をサポートするために、サービスプロバイダネットワークで実行するＶＭインスタンスは、コマンドを実行するために、及びコマンドの実行のステータスを示すデータを提供するために、特定のインスタンスで実行できるコマンドを識別する、例えばリスト等のデータの要求を受け取り、データの要求に応えるように構成される、デーモンまたは他のタイプのバックグラウンドプロセス等のソフトウェアエージェントで構成されてよい。これらの機能を実行するためには、インスタンスのために利用可能なコマンドを識別する、及びスクリプトまたはコマンドのそれぞれを実行するための他のタイプのプログラムコードを指定する構成ファイルが維持される可能性もある。構成ファイル及びスクリプトまたは他のタイプのプログラムはＶＭインスタンスでまたは別の場所に記憶される可能性がある。
【０００９】
また、公共ウェブサービスのアプリケーションプログラミングインタフェース（「ＡＰＩ」）は、いくつかの構成で、ＶＭインスタンスの中でのコマンドの実行に関するメソッドを提供するサービスプロバイダネットワークで公開される可能性もある。例えば、１つの構成では、ＡＰＩは、ＶＭインスタンスの中で実行されてよいコマンドを識別するデータを要求するメソッドを含む。ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドに対する呼出しの受取りに応えて、実行できるコマンドを識別するデータに対する要求は、ＶＭインスタンスで実行するソフトウェアエージェントに送信される。ＶＭインスタンスを実行するホストコンピュータで実行するインスタンスマネージャは、いくつかの構成では、要求を受け取り、ソフトウェアエージェントに要求を渡してよい。同様に、ソフトウェアエージェントは、ＶＭインスタンスで実行できるコマンドを識別するデータを返すように構成される。データはユーザの選択に応えて、及び／または他のメソッドでコマンドを実行するためのＵＩコントロールを表示するように構成されたユーザインタフェース（「ＵＩ」）をポピュレートするために活用されてよい。
【００１０】
いくつかの構成では、呼出しは、ＶＭインスタンスの中で実行されてよいコマンドを識別するデータを要求するためのメソッドに対して周期的に行われてよい。コマンドを識別するデータは受け取られ、キャッシュに記憶されてよい。その後メソッドに対する呼出しが受け取られると、ＶＭインスタンスでソフトウェアエージェントに対して要求を行うよりむしろ、キャッシュに記憶されたデータが活用されてよい。このようにして、ＶＭインスタンスで実行できるコマンドを識別するデータは、ＶＭインスタンスで実行するソフトウェアエージェントに対して呼出しが行われる場合よりも速く要求に応えて入手し、返すことができる。
【００１１】
また、ＡＰＩはＶＭインスタンスの中でコマンドを実行するためのメソッドも含む。ＶＭインスタンスの中でコマンドを実行するためのメソッドに対する呼出しに応えて、要求されたコマンドを実行する要求が、ＶＭインスタンスで実行するソフトウェアエージェントに送信される。同様に、ソフトウェアエージェントは、関連付けられたスクリプトまたは他のタイプのプログラムコードを実行することによって識別されたコマンドを実行するように構成される。また、ソフトウェアエージェントは、要求に応えてコマンドと関連付けられた一意の識別子（「ＩＤ」）を返すように構成される可能性もある。以下により詳細に説明されるように、ＩＤは、コマンドの実行及び／またはコマンドの実行の出力のステータスを記述する情報を入手するために活用されてよい。いくつかの構成では、多様な認証プロセス及び／または承認プロセスが、要求と関連付けられたユーザが特定のＶＭインスタンスで要求されたコマンドを実行する権限を与えられていることを保証するために実行されてよい。また、ＶＭインスタンスの中でコマンドを実行する前に、他のタイプのセキュリティチェックが行われる可能性もある。
【００１２】
いくつかの構成では、ＡＰＩはＶＭインスタンスの中でのコマンドの実行のステータスを記述するデータを入手するためのメソッドも含む。このメソッドに対する呼出しは、コマンドを実行する要求が行われたときにソフトウェアエージェントによって提供されるＩＤを含んでよい。このメソッドに対する呼出しの受取りに応えて、要求は、コマンドが実行されたＶＭインスタンスで実行するソフトウェアエージェントに送信される。要求は、コマンドと関連付けられたＩＤを含んでよい。それに応えて、ＶＭインスタンスで実行するソフトウェアエージェントはコマンドの実行のステータスを示すデータを入手し、返すように構成される。例えば及び制限なく、データは、実行が進行中であるのか、それとも完了したのか、及び完了した場合は、実行が成功したのか、それとも失敗したのかを示す可能性がある。また、いくつかの構成では、返されたデータはコマンドの実行の出力を含む可能性もある。
【００１３】
上述された機構の実装を使用し、多様なタイプのコマンドは、ユーザがＶＭインスタンスにログインすることを必要することなくＶＭインスタンスの中で実行できる。例えば及び制限なく、コマンドは、ＶＭインスタンスでプロセスを再起動するために、キャッシュをフラッシュするために、バックアップ動作を実行するために、ＶＭインスタンスを構成するために、及び／またはＶＭインスタンスで試験を実行するために実行できる。また、他のタイプのコマンドも実行できる。上記に簡略に説明される多様な構成要素及びプロセスに関する追加の詳細は、図１〜図８に関して以下に提示される。
【００１４】
本明細書に提示される主題は、コンピュータプロセス、コンピュータにより制御される装置、コンピュータシステム、またはコンピュータ可読記憶媒体等の製造品として実装され得ることが理解されるべきである。本明細書に説明される主題は１つまたは複数のコンピューティング装置で実行するプログラムモジュールの一般的な状況で提示されるが、当業者は、他のタイプのプログラムモジュールと組み合わせて他の実装が実行され得ることを認識する。概して、プログラムモジュールはルーチン、プログラム、構成要素、データ構造、及び特定のタスクを実行するまたは特定の抽象データ型を実装する他のタイプの構造を含む。
【００１５】
また、当業者は、本明細書に説明される主題の態様が、マルチプロセッサシステム、マイクロプロセッサベースのもしくはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、パーソナルデジタルアシスタント、電子ブックリーダー、携帯電話装置、タブレットコンピューティング装置、特殊目的ハードウェア装置、ネットワーク機器等を含む、本明細書に説明されるコンピュータシステム構成を超える他のコンピュータシステム構成で、または他のコンピュータシステム構成と併せて実施され得ることも理解する。上記に簡略に言及されるように、本明細書に説明される構成は、タスクが通信ネットワークを通してリンクされるリモートコンピューティング装置によって実行されてよい、サービスプロバイダネットワーク等の分散コンピューティング環境で実施されてよい。分散コンピューティング環境では、プログラムモジュールはローカルメモリ記憶装置とリモートメモリ記憶装置の両方に位置してよい。
【００１６】
以下の発明を実施するための形態では、本明細書の一部を形成し、特定の構成または例を例証として示す添付図面に対して参照が行われる。本明細書の図面は原寸に比例して描かれていない。（本明細書では「１つの図」または「複数の図」として参照されてよい）いくつかの図全体で、類似する数詞は類似する要素を表す。
【００１７】
図１は、ＶＭインスタンス１０６の中でコマンドを実行するための機能性を提供するように構成されるサービスプロバイアネットワーク１０２の構成及び動作の態様を示すシステムアーキテクチャ図である。サービスプロバイダネットワーク１０２は、顧客及び／または他のユーザが、恒久的にまたは必要に応じてＶＭインスタンス１０６等のコンピューティングリソース及び／または他のタイプのコンピューティングリソースを活用できる分散型ネットワークである。
【００１８】
コンピューティングリソースのそれぞれのタイプまたは構成は、異なるサイズでサービスプロバイダネットワーク１０２から入手可能であってよい。例えば、サービスプロバイダは物理ホスト、ＶＭインスタンス１０６、または購入及び使用のために利用可能であり、プロセッサ能力、メインメモリ、ディスクストレージ、及びオペレーティングシステムの多くの異なる構成を有する他のタイプのデータ処理リソースを提供する可能性がある。また、サービスプロバイダネットワーク１０２を運用するサービスプロバイダは顧客による購入及び使用のために他のタイプのリソースを提供する可能性もある。例えば、サービスプロバイダは、恒久的にもしくは必要に応じて、仮想装置もしくはハードウェア装置、データベースリソース及びインスタンス、ファイル、もしくはブロックデータストレージリソース、及び／またはロードバランシングリソース、ドメインネームサービス（「ＤＮＳ」）リソース、バーチャルプライベートクラウド（「ＶＰＣ」）リソース、バーチャルローカルエリアネットワーク（「ＶＰＬＡＮ」）リソース等のネットワーキングリソース、及び／または他のタイプのハードウェア及びソフトウェアのコンピューティングリソースもしくはサービス１０６を提供する可能性がある。また、リソースはＶＭインスタンス１０６及び画像、セキュリティグループ、オプショングループ、ゲートウェイ、オプションセット、ネットワークアクセス制御リスト（「ＡＣＬ」）、サブネット、ストレージバケット、ネットワークインタフェース、スナップショット、スポットマーケット要求、ならびに記憶ボリュームも含む可能性があるが、これに限定されるものではない。
【００１９】
また、サービスプロバイダネットワーク１０２を運用するサービスプロバイダは、リソースを作成し、使用する顧客にリソースの活用の料金を請求する可能性もある。特定のコンピューティングリソースに対して請求される料金は、コンピューティングリソースのタイプ及び／または構成に基づく可能性がある。例えば、ＶＭインスタンス１０６のようなデータ処理コンピューティングリソースの場合、コンピューティングリソースの使用に対する料金は、コンピューティングリソースが活用される時間の量に基づいて請求される可能性がある。データストレージコンピューティングリソースの場合、料金は記憶されるデータの量及び／またはコンピューティングリソースの中にもしくはコンピューティングリソースの中から転送されるデータの量に基づいて計算される可能性がある。また、他のタイプのリソースに対する料金は他の考慮事項に基づく可能性がある。また、サービスプロバイダはサービスプロバイダネットワーク１０２によって提供されるリソースの使用に対して顧客に請求する額を決定するために多様な購入モデルを活用する可能性もある。
【００２０】
上述されたリソースは、サービスプロバイダによって運用される１つまたは複数のデータセンタによる１つの特定の実装で提供されてよい。当業者に既知であるように、データセンタはコンピュータシステム及び関連構成要素を収容し、操作するために活用される施設である。また、データセンタは通常冗長且つ予備の電力系統、通信システム、冷却システム、及びセキュリティシステムも含む。データセンタは、地理的に異なる地域に位置する可能性があり、コロケーション施設等の多様な他の施設、及びインターネット等の多様な広域ネットワーク（「ＷＡＮ」）に接続される可能性もある。
【００２１】
また、上記の簡略に説明されるリソースは、自動的な方法で必要に応じてプロビジョニングされ、デプロビジョニングされる（ｄｅｐｒｏｖｉｓｉｏｎｅｄ）可能性もある。例えば、サービスプロバイダネットワーク１０２は、ネットワークサービスまたは他の状況に対する需要の増加に応えて、ＶＭインスタンス１０６等のコンピューティングリソースの新しいインスタンスをインスタンス化するように構成される可能性もある。また、他のタイプのコンピューティングリソースは同様にプロビジョニングされ、デプロビジョニングされる可能性もある。また、サービスプロバイダネットワーク１０２のサービスは、リソース及び／または他の要因に対する需要に基づいてリソースを自動的にスケーリング及び／またはデスケーリング（ｄｅｓｃａｌｉｎｇ）するための機能性を提供する可能性もある。
【００２２】
サービスプロバイダネットワーク１０２の顧客または潜在的な顧客は、適切なデータ通信ネットワーク（図１で不図示）を介してサービスプロバイダネットワーク１０２と通信するために適切なコンピューティングシステム（やはり図１で不図示）を活用する可能性がある。このようにして、サービスプロバイダネットワーク１０２の顧客は、サービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースの動作の多様な態様を構成する、またはそれ以外の場合顧客によって活用されているあらゆるコンピューティングリソースを制御できる。例えば及び制限なく、サービスプロバイダネットワーク１０２の顧客によって活用されるコンピューティングシステムは、サービスプロバイダネットワーク１０２でコンピューティングリソースを購入し、管理コンソール１１４または他のタイプのインタフェースを通してコンピューティングリソースの動作の態様を構成し、本明細書に説明される多様なサービス及びシステムによって提供される機能性にアクセスし、機能性を活用し、及び／またはサービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースの動作に関して他のタイプの機能性を実行するために構成するために活用される可能性がある。
【００２３】
顧客コンピューティングシステムは、ラップトップコンピュータもしくはデスクトップコンピュータ、タブレットコンピューティング装置、サーバコンピュータ、または携帯電話等であるが、これに限定されるものではない、適切なデータ通信ネットワークを介してサービスプロバイダネットワーク１０２に接続できる任意のタイプのコンピューティング装置である可能性がある。サービスプロバイダネットワーク１０２の事業者によって雇用される、サービスプロバイダネットワーク１０２の動作を管理するアドミニストレータ等の管理ユーザは、同様の方法でサービスプロバイダネットワーク１０２によって提供されるリソースと接続し、リソースを管理及び活用する可能性もある。
【００２４】
上記に簡略に説明されるように、サービスプロバイダネットワーク１０２は、内部で及び顧客によって使用するために多様なタイプのネットワークサービスを提供するように構成される可能性もある。例えば及び制限なく、サービスプロバイダネットワーク１０２は、オンデマンドでＶＭインスタンス１０６を提供するためのオンデマンドコンピューティングサービス１０４、データを記憶するためのデータストレージサービス、暗号サービス、通知サービス、認証サービス、方針管理サービス、タスクサービス、及び潜在的に他のタイプのネットワークアクセス可能サービス１０６を提供してよい。これらのサービス及び他のサービスならびにその関連付けられたリソースは、サービスプロバイダネットワーク１０２で多様なタイプのネットワークベースのアプリケーションを実装するためにともに活用されてよい。サービスプロバイダネットワーク１０２及びサービスプロバイダネットワーク１０２によって提供される可能性のある多様なタイプのネットワークサービスの１つの実装に関する追加の詳細は、図５〜図８に関して以下に説明される。
【００２５】
図１に示され、上記に簡略に説明されるように、オンデマンドコンピューティングサービス１０４は、ＶＭインスタンス１０６を提供するためにいくつかの構成で活用される。例えば、図１に示されるように、オンデマンドコンピューティングサービス１０４は、同じホストコンピュータ１０７Ａで実行している２つのＶＭインスタンス１０６Ａ及び１０６Ｂを提供している。この点で、図１に示される構成が説明のために簡略化されており、多くの他のホストコンピュータ１０７が同様の方法で多くの他のＶＭインスタンス１０６を提供するために活用されてよいことが理解されるべきである。例えば及び制限なく、ホストコンピュータ１０７Ｂは追加のＶＭインスタンス１０６を提供するために活用される可能性がある。上述されたように、ＶＭインスタンス１０６は、需要及び／または他の要因に基づいてプロビジョニングされる及び／またはデプロビジョニングされる可能性もある。
【００２６】
また、図１に示されるように、ホストコンピュータ１０７Ａは、いくつかの構成で、インスタンスマネージャ１０８で構成される。インスタンスマネージャ１０８は、ＶＭインスタンス１０６Ａ及び１０６Ｂの外部で実行するソフトウェア構成要素である。インスタンスマネージャ１０８は、特定のホストコンピュータ１０７ＡのＶＭインスタンス１０６Ａ及び１０６Ｂとの通信を可能にするための機能性を提供する。より詳細には、ソフトウェアエージェント１２０は、いくつかの構成では各ＶＭインスタンス１０６の中で実行される。例えば、図１に示される例では、ＶＭインスタンス１０６Ａはソフトウェアエージェント１２０Ａを実行中であり、ＶＭインスタンス１０６Ｂはソフトウェアエージェント１２０Ｂを実行中である。ソフトウェアエージェント１２０Ｂは、インスタンスマネージャ１０７からの通信のために割り当てられたポートで傾聴するデーモンまたは他のタイプのバックグラウンドプロセスとして実装される可能性がある。ソフトウェアエージェント１２０は、他の構成では別のタイプのソフトウェア構成要素として実装される可能性がある。
【００２７】
構成ファイル１２２及び１つまたは複数のコマンドスクリプト１２４も、１つの構成で各ＶＭインスタンス１０６にプロビジョニングされる。例えば、図１に示される例で、構成ファイル１２２Ａ及びコマンドスクリプト１２４ＡはＶＭインスタンス１０６Ａにプロビジョニングされ、構成ファイル１２２Ｂ及びコマンドスクリプト１２４ＢはＶＭインスタンス１０６Ｂにプロビジョニングされている。構成ファイル１２２は、各ＶＭインスタンス１０６の中で実行できるコマンドのリストを提供する。また、構成ファイル１２２は、コマンドごとに、関連付けられたコマンドを実行する要求がソフトウェアエージェント１２０によって受け取られるときに実行されるコマンドスクリプト１２４を識別する。この点で、コマンドはスクリプト以外の他のタイプのプログラムコードによって実装される可能性があることが理解されるべきである。例えば及び制限なく、コマンドは、他の構成で、コンパイルされたプログラムコード、解釈されたプログラムコード、及び／または他のタイプのプログラムコードによって実装される可能性がある。構成ファイル１２２Ａのコマンドのリスト等は、特定のＶＭインスタンス１０６で実行できるコマンドのカスタムリストを提供するために権限を与えられたユーザによって編集できることも理解されるべきである。
【００２８】
構成ファイル１２２及びコマンドスクリプト１２４（または他のタイプのプログラムコード）が、他の構成でＶＭインスタンス１０６の中以外の場所に記憶される可能性があることも理解されるべきである。例えば及び制限なく、構成ファイル１２２及びコマンドスクリプト１２４（または他のタイプのプログラムコード）は、ＶＭインスタンス１０６による使用のためにデータベースまたは他のタイプのネットワークがアクセス可能な場所に記憶される可能性がある。さらに、いくつかの構成では、ＶＭインスタンス１０６は構成ファイル１２２を使用することなく動作するように構成されてよい。これらの構成では、コマンドスクリプト１２４（または他のタイプのプログラムコード）は、ＶＭインスタンス１０６の外部のデータストアに記憶される可能性がある。コマンドを実行する要求が受け取られるとき、ソフトウェアエージェント１２０は構成ファイル１２２を参考にすることなくデータストアから、実行されるコマンドスクリプト１２４（または他のタイプのプログラムコード）を取り出してよい。また、他の実装が活用される可能性もある。
【００２９】
ソフトウェアエージェント１２０、構成ファイル１２２、及びコマンドスクリプト１２４（または他のタイプのプログラムコード）を含むＶＭインスタンス１０６をインスタンス化するために、これらの構成要素を含むＶＭ画像が事前に作成されてよい。ＶＭ画像は次いで上述されたソフトウェア構成要素で適切に構成されるＶＭインスタンス１０６をインスタンス化するために活用されてよい。ＶＭ画像はサービスプロバイダネットワーク１０２の事業者、サービスプロバイダネットワーク１０２の顧客、開発者、及び／または別のエンティティによって作成される可能性がある。
【００３０】
図１に示されるように、公共ウェブサービスのアプリケーションプログラミングインタフェース（「ＡＰＩ」）１１０は、いくつかの構成では、ＶＭインスタンス１０６の中でのコマンドの実行に関係するメソッド１１１を提供するサービスプロバイダネットワーク１０２の中で公開される可能性もある。例えば、１つの構成では、ＡＰＩ１１０は、特定のＶＭインスタンス１０６の中で実行されてよいコマンドを識別するデータを要求するためのメソッド１１１Ａを含む。サービスプロバイダネットワーク１０２の中で動作する多様な構成要素はＡＰＩ１１０を呼び出してよい。例えば及び制限なく、ＶＭインスタンス１０６の動作を管理するためのユーザインタフェース（「ＵＩ」）を提供する管理コンソール１１２が活用されてよい。ＶＭインスタンス１０６の中で実行できるコマンドを識別するデータは、ユーザの選択に応えて及び／または他のメソッドでコマンドを実行するためにＵＩ１１４の中でＵＩコントロールを生成するために活用されてよい。図１に示されるように、ＡＰＩ１１０によって公開されるメソッド１１１は、サービスプロバイダネットワーク１０２の中で動作するコマンドラインインタフェース（「ＣＬＩ」）１１６を通して等、他の構成要素によって呼び出される可能性がある。
【００３１】
ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッド１１１Ａに対する呼出しの受取りに応えて、実行できるコマンドを識別するデータに対する要求が、ＶＭインスタンス１０６上で実行するソフトウェアエージェント１２０に送信される。例えば及び制限なく、１つの構成で、ＡＰＩ１１０はサービスマネージャ１１８に要求を送信する。同様に、サービスマネージャ１１８は、コマンドのリストが所望されるＶＭインスタンス１０６と同じホストコンピュータ１０７で実行するインスタンスマネージャ１０８に利用可能なコマンドの要求を送信する。インスタンスマネージャ１０８は要求を受け取り、ＶＭインスタンス１０６の中で実行するソフトウェアエージェント１２０に要求を渡す。同様に、ソフトウェアエージェント１２０は構成ファイル１２２から利用可能なコマンドを読み取り、インスタンスマネージャ１０８に利用可能なコマンドを識別するデータを返す。インスタンスマネージャ１０８は、同様にＡＰＩ１１０にコマンドを返すサービスマネージャ１１８に利用可能なコマンドを返す。利用可能なコマンドを識別するデータは、次いでメソッド１１１Ａに対する呼出しに応えて、例えば管理コンソール１１２またはＣＬＩ１１６に返されてよい。
【００３２】
いくつかの構成では、サービスマネージャ１１８または別の構成要素は、上述された機構を通してＶＭインスタンス１０６から利用可能なコマンドのリストの要求を周期的に呼び出すように構成されてよい。サービスマネージャ１１８は、コマンドを識別するデータを受け取り、図１に示されるコマンドキャッシュ１２４等のキャッシュにデータを記憶してよい。その後メソッド１１１Ａに対する呼出しが受け取られると、サービスマネージャ１１８はＶＭインスタンス１０６でソフトウェアエージェント１２０に要求を行うよりむしろ、キャッシュに以前に記憶された利用可能なコマンドを識別するデータを返してよい。このようにして、ＶＭインスタンス１０６で実行できるコマンドを識別するデータは、呼出しがＶＭインスタンス１０６で実行するソフトウェアエージェント１２０に対して行われる場合よりも速く、入手し、メソッド１１１Ａに対する呼出しに応えて返すことができる。また、他の構成が他の実装で活用される可能性もある。メソッド１１１Ａの動作に関する追加の詳細は、図２に関して以下に提供される。
【００３３】
また、ＡＰＩ１１０は、ＶＭインスタンス１２０の中でコマンドを実行するためのメソッド１１１Ｂも含む。ＶＭインスタンス１２０の中でコマンドを実行するためのメソッド１１１Ｂに対する呼出しに応えて、ＡＰＩ１１０は識別されたＶＭインスタンス１０６で指定されたコマンドを実行する要求をサービスマネージャ１１８に送信する。同様に、サービスマネージャ１１８は、指定されるコマンドが実行されるＶＭインスタンス１０６を実行するホストコンピュータ１０７で実行するインスタンスマネージャ１０８に要求を送信する。それに応えて、サービスマネージャ１０８は次いで、コマンドが実行されるＶＭインスタンス１０６の中で実行するソフトウェアエージェント１２０に要求を送信する。
【００３４】
ソフトウェアエージェント１２０は、インスタンスマネージャ１０８からコマンドを実行する要求を受け取る。１つの構成で、ソフトウェアエージェント１２０は次いで、要求されたコマンドに対応するコマンドスクリプト１２４（または他のタイプのプログラムコード）を識別するために構成ファイル１２２を調べる。いったん要求されたコマンドと関連付けられたコマンドスクリプト１２４が識別されると、ソフトウェアエージェント１２０は、コマンドスクリプト１２４Ａ（またはコマンドを実装するための他のタイプのプログラムコード）をＶＭインスタンス１０６の中で実行させる。
【００３５】
上記に簡略に説明されるように、ソフトウェアエージェント１２０は、要求に応えて実行されたコマンドと関連付けられた一意の識別子（「ＩＤ」）を返すように構成される可能性もある。例えばソフトウェアエージェント１２０は、実行されたコマンドスクリプト１２４Ａまたは他のタイプのプログラムコードのためのプロセスＩＤを返す可能性がある。また、他のタイプのＩＤは、他の構成で活用される可能性もある。ＩＤは、サービスマネージャ１１８にＩＤを返すインスタンスマネージャ１０８に返される。サービスマネージャ１１８は、次いで、同様にメソッド１１１Ｂに対する呼出しに応えてＩＤを返すＡＰＩにＩＤを返してよい。以下により詳細に説明されるように、返されたＩＤはその後コマンドの実行及び／またはコマンドの実行の出力のステータスを記述する情報を入手するために活用されてよい。
【００３６】
いくつかの構成では、多様な認証及び／または承認プロセスが、コマンドを実行する要求と関連付けられたユーザが特定のＶＭインスタンス１０６で要求されたコマンドを実行する権限を与えられていることを保証するために実行されてよい。例えば及び制限なく、ＡＰＩ１１０及び／またはサービスマネージャ１１８は、コマンドの実行を要求するユーザがコマンドを実行する権限を与えられていることを検証するために、コマンドを実行する前に認証サービス１２０及び／または承認サービス１２２を呼び出す可能性がある。この認証機構を通して、ユーザはＶＭインスタンス１０６に遠隔でログインする権限を与えられていないことがあっても、ＶＭインスタンス１０６の中で特定のタイプのコマンドを実行する権限を与えられてよい。この点で、他のタイプのセキュリティチェックも、ＶＭインスタンス１０６の中でコマンドを実行する前に行われる可能性があることが理解されるべきである。ＶＭインスタンス１０６の中でコマンドを実行するためのメソッド１１１Ｂの動作に関する追加の詳細は、図３に関して以下に提供される。
【００３７】
いくつかの構成では、ＡＰＩ１１０は、ＶＭインスタンス１０６の中でのコマンドの実行のステータスを記述するデータを入手するためのメソッド１１１Ｃも含む。上述されたように、メソッド１１１Ｃに対する呼出しは、コマンドを実行する要求が行われたときにソフトウェアエージェント１２０によって提供されるＩＤを含んでよい。このメソッドに対する呼出しの受取りに応えて、ＡＰＩ１１０は、同様に適切なインスタンスマネージャ１０８に要求を送信するサービスマネージャ１１８に要求を送信する。インスタンスマネージャ１０８は、コマンドが実行されたＶＭインスタンス１０６で実行するソフトウェアエージェント１２０にコマンドのステータスに対する要求を送信する。それに応えて、ＶＭインスタンス１０６の中で実行するソフトウェアエージェント１２０は、コマンドの実行のステータスを示すデータを入手し、返す。例えば及び制限なく、データは、実行が進行中であるのか、それとも完了したのか、及び完了した場合は、実行が成功したのか、それとも失敗したのかを示す可能性がある。また、返されたデータはいくつかの構成ではコマンドの実行の出力を含む可能性もある。メソッド１１１Ｃの動作に関する追加の詳細は、図４に関して以下に提供される。
【００３８】
上記に簡略に説明されるように、上述された機構の実装を使用し、多様なタイプのコマンドが、ユーザがＶＭインスタンス１０６にログインすることを必要とすることなくＶＭインスタンス１０６の中で実行できる。例えば及び制限なく、コマンドは、ＶＭインスタンス１０６でプロセスを再開するために、キャッシュをフラッシュするために、バックアップ動作を実行するために、ＶＭインスタンス１０６を構成するために、及び／またはＶＭインスタンス１０６で試験を実行するために実行できる。また、他のタイプのコマンドも実行できる。
【００３９】
ＡＰＩ１１０によって公開されている上述された多様なメソッド１１１は例示的にすぎないこと、及び他のタイプのメソッド１１１が、さらにまたは代わりに他の構成で提供される可能性があることが理解されるべきである。サービスプロバイダネットワークで動作する他のサービスがＡＰＩ１１０によって公開されるメソッド１１１を活用する可能性があることも理解されるべきである。また、サービスプロバイダネットワーク１０２の中で動作する図１に示されるサービス以外のサービスは、ＡＰＩ１１０によって提供される機能性を実装するために活用される可能性もある。
【００４０】
図２は、特定のＶＭインスタンス１０６の中で実行できるコマンドを識別する、例えばリスト等のデータを入手するための例示的なルーチン２００を示す流れ図である。図２及び他の図に関して本明細書で説明される論理演算は、（１）コンピューティングシステムで実行するコンピュータによって実装される行為もしくはプログラムモジュールのシーケンスとして、及び／または（２）相互接続されたマシン論理回路もしくはコンピューティングシステムの中の回路モジュールとして実装されてよいことが理解されるべきである。
【００４１】
本明細書に説明される多様な構成要素の実装は、コンピューティングシステムの性能及び他の要件に応じて選択できる問題である。したがって、本明細書に説明される論理演算はさまざまに、動作、構造装置、行為またはモジュールと呼ばれる。これらの動作、構造装置、行為及びモジュールは、ソフトウェアで、ファームウェアで、特殊目的デジタル論理で、及びその任意の組合せで実装されてよい。また、複数の図に示され、本明細書に説明されるよりも多いまたは少ない動作が実行され得ることも理解されるべきである。また、これらの動作は、並行して、または本明細書で説明される順序とは異なる順序で実行されてもよい。また、これらの動作のいくつかまたはすべては、特に識別された構成要素以外の構成要素によって実行される可能性もある。
【００４２】
ルーチン２００は、公共ウェブサービスＡＰＩ１１０がサービスプロバイダネットワーク１０２の中で公開される動作２０２で開始する。上述されたように、ＡＰＩ１１０は、特定のＶＭインスタンス１０６の中で実行できるコマンドを記述する、リスト等のデータを入手するためのメソッド１１０２Ａを含む。動作２０２から、ルーチン２００は、ＶＭインスタンス１０６の中で実行できるコマンドを記述するデータを入手するためのメソッド１１１Ａに対する呼出しが受け取られる動作２０４に進む。例えば及び制限なく、管理コンソール１１２及びＣＬＩ１１６はメソッド１１１Ａに対する係る呼出しを行うために多様な構成で活用される可能性がある。他の構成要素は、他の構成で係る呼出しを行うために活用される可能性がある。
【００４３】
ルーチン２００は動作２０４から、ＡＰＩ１１０が、コマンドのリストが入手されるＶＭインスタンス１２０を実行するホストコンピュータ１０７のインスタンスマネージャ１０８に要求を送信させる、動作２０６に進む。上述されたように、いくつかの構成では、同様にコマンドのリストのために適切なホストコンピュータ１０７上のインスタンスマネージャ１０８を呼び出すサービスマネージャ１１８が呼び出される。インスタンスマネージャ１０８は、動作２０８で適切なＶＭインスタンス１０６で実行するソフトウェアエージェント１２０に利用可能なコマンドに対する要求を送信する。
【００４４】
動作２１０で、ソフトウェアエージェント１０６はインスタンスマネージャ１０８から利用可能なコマンドに対する要求を受け取り、１つの構成では構成ファイル１２２の内容に基づいて利用可能なコマンドを識別する。ソフトウェアエージェント１０６は、次いでインスタンスマネージャ１０８に実行に利用可能なコマンドを識別するデータを返す。同様に、インスタンスマネージャ１０８は、ＡＰＩ１１０にコマンドのリストを返すサービスマネージャ１１８に利用可能なコマンドを返す。同様に、コマンドのリストは動作２１２でメソッド１１１Ａに対する呼出しに応えて返される。ルーチン２００は次いで動作２１２から、ルーチン２００が終わる動作２１４に進む。上述されたように、キャッシング等の他の機構が、他の構成で、より迅速に利用可能なコマンドのリストを入手し、返すために活用される可能性もある。
【００４５】
図３は、ＶＭインスタンス１０６の中でコマンドを実行するための例示的なルーチン３００を示す流れ図である。ルーチン３００は、ＡＰＩ１００がサービスプロバイダネットワーク１０２で実行するＶＭインスタンス１０６の中でコマンドを実行するためのメソッド１１１Ｂを公開する動作３０２で始まる。ルーチン３００は動作３０２から、ＶＭインスタンス１０６の中でコマンドを実行するためのメソッド１１１Ｂに対する呼出しが受け取られる動作３０４に進む。上述されたように、係る呼出しは、管理コンソール１１２、ＣＬＩ１１６または別の構成要素によって行われる可能性がある。
【００４６】
ルーチン３００は動作３０４から、認証及び／または承認が、コマンドを実行する要求と関連付けられたユーザがコマンドを実行するのを許されていることを検証するために実行される可能性がある動作３０６に進む。例えば及び制限なく、ＡＰＩ１１０は、ユーザがコマンドを実行することを許されているかどうかを判断するために認証サービス１２０及び／または承認サービス１２２を呼び出す可能性がある。ユーザがコマンドを実行することを許されていない場合、ルーチン３００は動作３０８から、エラーが返されることがある動作３１０に進んでよい。しかしながら、ユーザがコマンドを実行することを許されている場合、ルーチン３００は動作３０８から動作３１２に進んでよい。
【００４７】
動作３１２で、ＡＰＩ１００は、コマンドを実行する要求を、コマンドが実行されるＶＭインスタンス１０６を実行しているホストコンピュータ１０７で実行するインスタンスマネージャ１０８に送信させてよい。同様に、インスタンスマネージャ１０８は、動作３１４で、コマンドを実行する要求をＶＭインスタンス１０６で実行する適切なソフトウェアエージェント１２０に送信する。ソフトウェアエージェント１２０は、動作３１８で、要求されたコマンドに対応するコマンドスクリプト１２４（または他のプログラム構成要素）を識別するために構成ファイル１２２を活用する。ソフトウェアエージェント１２０は次いで識別されたコマンドスクリプト１２４（または他のプログラム構成要素）を実行する。
【００４８】
ルーチン３００は動作３１６から、ソフトウェアエージェント１２０がインスタンスマネージャ１０８にコマンドの実行と関連付けられたＩＤを返す動作３１８に進む。インスタンスマネージャ１０８は、同様にＡＰＩ１１０にＩＤを返すサービスマネージャ１１８にＩＤを返す。ＩＤは次いで動作３２０でメソッド１１１Ｂに対する呼出しに応えて返すことができる。ルーチン３００は次いで動作３２０から、ルーチン３００が終わる動作３２２に進む。
【００４９】
いくつかの構成では、コマンドの実行及び／または実行の結果はソフトウェアエージェント１２０、インスタンスマネージャ１０８、ＡＰＩ１１０及び／またはサービスマネージャ１１８によって記録されてよいことが理解されるべきである。このようにして、各ＶＭインスタンス１０６に対して実行されたコマンド、及び潜在的に実行の結果の記録を残すことができる。また、他の構成では、ＡＰＩ１１０に対する呼出し及び／またはＶＭインスタンス１０６でのコマンドの実行に関する他のデータが取り込まれ、維持される可能性もある。
【００５０】
図４は、ＶＭインスタンス１０６の中で、実行しているまたは実行を完了したコマンドのステータスを入手するための、本明細書で開示される例示的なルーチン４００の態様を示す流れ図である。ルーチン４００は、ＡＰＩ１０がＶＭインスタンス１０６の中で実行されたコマンドのステータスを入手するためのメソッド１１１Ｃを公開する動作４０２で始まる。ルーチン４００は動作４０２から、ＶＭインスタンス１０６の中で実行されるコマンドのステータスを入手するためのメソッド１１１Ｃに対する呼出しが受け取られる動作４０４に進む。上述されたように、管理コンソール１１２、ＣＬＩ１１６、及び／または別の構成要素が係る呼出しを行う。さらに、呼出しは、コマンドが実行されたときにソフトウェアエージェント１２０によって返されたＩＤを含んでよい。
【００５１】
ルーチン４００は動作４０４から、要求が、コマンドが実行されたＶＭインスタンス１０６を含むホストコンピュータ１０７で実行するインスタンスマネージャ１０８にサービスマネージャ１１８を介して送信される動作４０６に進む。ルーチン４００は次いで動作４０６から、インスタンスマネージャ１０８がコマンドの実行のステータスに対する要求を、コマンドが実行されたＶＭインスタンス１０６のソフトウェアエージェント１２０に送信する動作４０８に進む。ルーチン４００は次いで、ソフトウェアエージェント１２０がコマンドの実行のステータスをインスタンスマネージャ１０８に返す動作４１０に進む。ステータスは、例えば、コマンドの実行が成功したこと、または実行が失敗したことを示す可能性がある。ステータスは、さらにまたは代わりに他のタイプの状況を示す可能性がある。また、ステータスはコマンドの実行のテキスト出力を含む可能性もある。コマンドの実行の出力は、ＵＩ１１４、ＣＬＩ１１６で、及び／または別のメソッドで提示される可能性がある。
【００５２】
動作４１０から、インスタンスマネージャ１０８はサービスマネージャ１１８に、コマンドの実行のステータスを示すデータを返す。サービスマネージャ１１８同様には、メソッド１１１Ｃに対する呼出しに応えてデータを返すＡＰＩ１１０にデータを返す。ルーチン４００は動作４１２から、ルーチン４００が終わる動作４１４に進む。
【００５３】
図５は、本明細書に開示される１つの構成に従って、上述されたメソッドでＶＭインスタンス１０６の中でコマンドを実行するための機能性、及び関係する機能性を提供するように構成されてよいサービスプロバイダネットワーク１０２を含む、本明細書に開示される構成のための１つの例示的な操作環境を示すシステム及びネットワーク図である。上述されたように、サービスプロバイダネットワーク１０２は、恒久的にまたは必要に応じてＶＭインスタンス１０６のようなコンピューティングリソースを提供できる。他のタイプの機能性の中で、サービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースは上述された多様なサービスを実装するために活用できる。やはり上述されたように、サービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースはＶＭインスタンス１０６のようなデータ処理リソース、データストレージリソース、ネットワーキングリソース、データ通信リソース、ネットワークサービス等の多様なタイプのコンピューティングリソースを含んでよい。
【００５４】
サービスプロバイダネットワーク１０２によって提供される各タイプのコンピューティングリソースは汎用であってよく、またはいくつかの特定の構成で利用可能であってよい。例えば、データ処理リソースは、いくつかの異なる構成では物理コンピュータまたはＶＭインスタンス１０６として利用可能であってよい。ＶＭインスタンス１０６は、ウェブサーバ、アプリケーションサーバ、メディアサーバ、データベースサーバ、上述されたサービスのいくつかもしくはすべて、及び／または他のタイプのプログラムを含むアプリケーションを実行するように構成されてよい。データストレージリソースは、ファイル記憶装置、ブロック記憶装置等を含んでよい。また、サービスプロバイダネットワーク１０２は本明細書に特に言及されていない他のタイプのコンピューティングリソースを提供するように構成される可能性もある。
【００５５】
サービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースは、（本明細書では単数で「データセンタ５０４」または複数で「複数のデータセンタ５０４」と参照されてよい）１つまたは複数のデータセンタ５０４Ａ〜５０４Ｎによって１つの実装で可能にされる。複数のデータセンタ５０４は、コンピュータシステム及び関連付けられた構成要素を収容し、操作するために活用される施設である。複数のデータセンタ５０４は、通常、冗長且つ予備の電力系統、通信システム、冷却システム及びセキュリティシステムを含む。また、複数のデータセンタ５０４は地理的に異なる場所に位置する可能性もある。本明細書に開示される技術を実装するために活用される可能性のあるデータセンタ５０４の１つの例示的な構成は、図６に関して以下に説明される。
【００５６】
サービスプロバイダネットワーク１０２の顧客及び他のユーザは、インターネット等の広域通信ネットワーク（「ＷＡＮ」）、イントラネットもしくはインターネットサービスプロバイダ（「ＩＳＰ」）ネットワーク、または係るネットワークの組合せであってよいネットワーク５０２を介してサービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースにアクセスしてよい。例えば及び制限なく、サービスプロバイダネットワーク１０２の顧客または他のユーザによって操作されるコンピューティング装置５００はネットワーク５０２を介してサービスプロバイダネットワーク１０２にアクセスするために活用される可能性がある。ローカルエリアネットワーク（「ＬＡＮ」）、インターネット、または複数のデータセンタ５０４をリモート顧客及び他のユーザに接続する、当業界で既知の任意の他のネットワーキングトポロジーが活用されてよいことが理解されるべきである。また、係るネットワークの組合せが活用される可能性があることも理解されるべきである。
【００５７】
図６は、ＶＭインスタンス１０６の中でコマンドを実行するための本明細書に開示される技術、及び本明細書に開示される関係する機能性の態様を実装するデータセンタ５０４の１つの構成を示すコンピューティングシステム図である。図６に示される例のデータセンタ５０４は、コンピューティングリソース６０６Ａ〜６０６Ｅを提供するための（本明細書で、単数で「サーバコンピュータ６０２」または複数で「複数のサーバコンピュータ６０２」と呼ばれることがある）いくつかのサーバコンピュータ６０２Ａ〜６０２Ｆを含む。
【００５８】
サーバコンピュータ６０２は、（図６でコンピューティングリソース６０４Ａ〜６０４Ｅとして示される）本明細書に説明されるコンピューティングリソースを提供するために適切に構成された標準的なタワーコンピュータ、ラックマウントコンピュータ、またはブレードサーバコンピュータであってよい。上記に言及されたように、サービスプロバイダネットワーク１０２によって提供されるコンピューティングリソースは、ＶＭインスタンス１０６もしくはハードウェアコンピューティングシステム等のデータ処理リソース、データストレージリソース、データベースリソース、ネットワーキングリソース等である可能性がある。また、サーバ６０２のいくつかはコンピューティングリソースをインスタンス化及び／または管理することができるリソースマネージャ６０４を実行するように構成される可能性もある。例えばＶＭインスタンス１０６の場合、リソースマネージャ６０４は、ハイパーバイザ、または単一サーバ６０２で複数のＶＭインスタンス１０６の実行を可能にするように構成された別のタイプのプログラムである可能性がある。データセンタ５０４の複数のサーバコンピュータ６０２は、ネットワークサービス及びその内のいくつかが図７に関して以下に詳細に説明される他のタイプのサービスを提供するように構成される可能性もある。
【００５９】
また、図６に示されるデータセンタ５０４は、上述されたソフトウェア構成要素のいくつかまたはすべてを実行してよいサーバコンピュータ６０２Ｆも含む。例えば及び制限なく、サーバコンピュータ６０２Ｆは、オンデマンドコンピューティングサービス１０４、管理コンソール１１２、及び／または上述された他のソフトウェア構成要素を提供するために多様な構成要素を実行するように構成される可能性がある。また、サーバコンピュータ６０２Ｆは、他の構成要素を実行する及び／または本明細書に説明される機能性のいくつかまたはすべてを提供するためのデータを記憶するように構成される可能性もある。この点で、サーバコンピュータ６０２Ｆで実行するとして図６に示されるサービスは、多様な構成では、複数のデータセンタ５０４の多くの他の物理サーバまたは仮想サーバで実行する可能性があることが理解されるべきである。
【００６０】
図６に示される例のデータセンタ５０４では、適切なＬＡＮ６０６もサーバコンピュータ６０２Ａ〜６０２Ｆを相互接続するために活用される。また、ＬＡＮ６０６は図５に示されるネットワーク５０２に接続される。本明細書に説明される構成及びネットワークトポロジーは大幅に簡略化されていること、及びより多くのコンピューティングシステム、ソフトウェア構成要素、ネットワーク及びネットワーキング装置が本明細書に開示される多様なコンピューティングシステムを相互接続するために及び上述された機能性を提供するために活用されてよいことが理解されるべきである。適切なロードバランシング装置または他のタイプのネットワーク構造構成要素も、複数のデータセンタ５０４Ａ〜５０４Ｎのそれぞれの間、各データセンタ５０４での複数のサーバコンピュータ６０２Ａ〜６０２Ｆの間、及び潜在的に複数のデータセンタ５０４のそれぞれのコンピューティングリソースの間で負荷を平衡させるために活用される可能性もある。図６に関して説明されたデータセンタ５０４の構成は例示的にすぎないこと、及び他の実装が活用される可能性があることが理解されるべきである。
【００６１】
図７は、本明細書に開示される１つの構成で、サービスプロバイダネットワーク１０２にっよって提供され、サービスプロバイダネットワーク１０２の中で活用される可能性があるいくつかのネットワークサービスの態様を示すシステム及びネットワーク図である。特に、及び上述されたように、サービスプロバイダネットワーク１０２はさまざまなネットワークサービスを、オンデマンドコンピューティングサービス１０４を含むが、これに限定されるものではないサービスプロバイダネットワーク１０２の顧客及び他のユーザに提供してよい。また、サービスプロバイダネットワーク１０２は、それぞれが以下により詳細に説明される、ストレージサービス７０２Ａ、展開サービス７０２Ｂ、暗号サービス７０２Ｃ、認証サービス１２０、方針管理サービス７０２Ｅ及び／またはタスクサービス７０２Ｆを含むが、これに限定されるものではない他のタイプのサービスを提供する可能性もある。さらに、サービスプロバイダネットワーク１０２は、いくつかが以下により詳細に説明される他のサービス７０２Ｇを提供する可能性もある。
【００６２】
サービスプロバイダネットワーク１０２の顧客が、サービスプロバイダネットワーク１０２によって提供されるサービスのいくつかまたはすべてを活用する組織または個人を含んでよいことが理解されるべきである。上述されたように、顧客または他のユーザは、図５に示されるネットワーク５０２等のネットワークを通してサービスプロバイダネットワーク１０２と通信してよい。図５に示されるコンピューティング装置５００等の顧客コンピューティング装置からサービスプロバイダネットワーク１０２への通信は、サービスプロバイダネットワーク１０２によって提供されるサービスを説明されている構成またはその変形形態に従って動作させてよい。
【００６３】
説明されているすべての構成が図７に関して説明されるサービスを含むとは限らないこと、及び追加サービスが明示的に説明されるサービスに加えてまたは明示的に説明されるサービスの代替策として提供されてよいことに留意されたい。また、図７に示されるサービスのそれぞれは、呼出し者がウェブサービス要求によって適切に構成されたＡＰＩ呼出しを多様なサービスに提出できるようにするウェブサービスインタフェースを公開する可能性もある。さらに、サービスのそれぞれは、（例えば、オンデマンドコンピューティングサービス１０４によって提供される仮想コンピュータシステムが、データストレージサービス７０２Ａにデータを記憶するまたはデータストレージサービス７０２Ａからデータを取り出すことを可能にするために）サービスが互いにアクセスできるようにするサービスインタフェースを含んでよい。図７に示されるサービスのいくつかに関する追加の詳細は、ここで提供される。
【００６４】
上述されたように、オンデマンドコンピューティングサービス１０４は、ＶＭインスタンス１０６をインスタンス化する、及びオンデマンドで他のタイプのコンピューティングリソースを提供するように構成されたコンピューティングリソースの集合体であってよい。例えば、サービスプロバイダネットワーク１０２の顧客または他のユーザは、サービスプロバイダネットワーク１０２によってホストされ、操作される物理コンピューティング装置上でインスタンス化されるＶＭインスタンス１０６をプロビジョニングし、操作するために（適切に構成され、認証されたＡＰＩ呼出しを介して）オンデマンドコンピューティングサービス１０４と対話してよい。ＶＭインスタンス１０６は、例えばウェブサイトをサポートするサーバとして動作するために、ビジネスアプリケーションを操作するために、または概して顧客のためのコンピューティングリソースとして役立つために等多様な目的のために使用されてよい。ＶＭインスタンス１０６のための他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション及び／または他のアプリケーションをサポートすることであってよい。オンデマンドコンピューティングサービス１０４は図７に示されているが、仮想化を利用せず、代わりに専用のまたは共用のコンピュータ／サーバ及び／または他のタイプの物理装置でコンピューティングリソースをプロビジョニングするコンピュータシステムまたはコンピュータシステムサービス等の任意の他のコンピュータシステムまたはコンピュータシステムサービスがサービスプロバイダネットワーク１０２で活用されてよい。
【００６５】
ストレージサービス７０２Ａは、ブロック記憶装置またはファイルレベル記憶装置（及び／またはその仮想化）を使用し、データを記憶するために集合的に動作するソフトウェアリソース及びコンピューティングリソースを含む可能性がある。ストレージサービス７０２Ａの記憶装置は、例えばコンピュータシステムのための論理ユニット（例えば、仮想ドライブ）として役立つためにオンデマンドコンピューティングサービス１０４によって提供される仮想コンピュータシステムに操作上取り付けられる可能性がある。また、記憶装置は、仮想コンピュータシステムサービスが一時的なデータストレージを提供するにすぎない対応する仮想コンピューティングシステムによって使用／生成されるデータの永続記憶を可能にする可能性もある。
【００６６】
また、サービスプロバイダネットワーク１０２は暗号サービス７０２Ｃを含んでもよい。暗号サービス７０２Ｃは、暗号化された形式で暗号鍵を記憶するために、ストレージサービス７０２Ａ等のサービスプロバイダネットワーク１０２のストレージサービスを活用してよく、これによって鍵は暗号サービス７０２Ｃの特定の装置だけにアクセス可能な顧客鍵を復号するために使用可能であってよい。また、暗号サービス７０２Ｃは本明細書に特に言及されていない他のタイプの機能性を提供する可能性もある。
【００６７】
図７で示されるように、サービスプロバイダネットワーク１０２は、多様な構成では、認証サービス１２０及び方針管理サービス７０２Ｅも含む。認証サービス１２０は、一例では、ユーザの認証に関与する動作を実行するように構成されたコンピュータシステム（つまり、コンピューティングリソースの集合体）である。例えば、図７に示されるサービス７０２の１つは、ユーザによって提出される要求が真正であるかどうかを示す情報を見返りに受け取るためにユーザから認証サービス１２０に情報を提供してよい。
【００６８】
方針管理サービス７０２Ｅは、１つの例では、サービスプロバイダネットワーク１０２の顧客または内部ユーザの代わりに方針を管理するように構成されたネットワークサービスである。方針管理サービス７０２Ｅは、顧客が方針の管理に関係する要求を提出できるようにするインタフェースを含んでよい。係る要求は、例えば、既存の方針等のインベントリを提供する等、顧客、サービスもしくはシステムのために、または他の管理アクションのために方針を追加、削除、変更、またはそれ以外の場合修正する要求であってよい。
【００６９】
また、サービスプロバイダネットワーク１０２は、多様な構成では、タスクサービス７０２Ｆで構成される。タスクサービス７０２Ｆは、タスクパッケージを受け取り、タスクパッケージによって決定されるようにタスクを実行することを可能にするように構成される。タスクサービス７０２Ｆは、タスクを実行するために、インスタンス化された仮想マシンまたは仮想ホスト等のサービスプロバイダネットワーク１０２の任意のリソースを使用するように構成されてよい。タスクサービス７０２Ｆは、インスタンス化された仮想マシンまたは仮想ホストを、指定された要件に従って選択されたオペレーティングシステム及び／または選択された実行アプリケーションを使用し、動作するように構成してよい。
【００７０】
サービスプロバイダネットワーク１０２は、さらにその顧客のニーズに少なくとも部分的に基づいて他のサービス７０２Ｇを維持してよい。例えば、サービスプロバイダネットワーク１０２は、いくつかの構成ではプログラムコード及び／またはデータベースサービス（図７では不図示）を展開するための展開サービス７０２Ｂを維持してよい。データベースサービスは、クエリーを作成、維持、及びサービスプロバイダネットワーク１０２の中に記憶されたデータベース上で実行できるようにするために集合的に動作するコンピューティングリソースの集合体であってよい。例えば、サービスプロバイダネットワーク１０２の顧客または他のユーザは、適切に構成されたネットワークＡＰＩ呼出しを活用することによってデータベースサービスからデータベースを操作し、管理してよい。これは、同様に、顧客がデータベースで動作を維持し、潜在的に拡大縮小できるようにしてよい。他のサービスはオブジェクトレベルのアーカイブデータストレージサービス、及び他のサービスを管理する、監視する、他のサービスと対話する、または他のサービスをサポートするサービスを含む。また、サービスプロバイダネットワーク１０２は、他の構成では、本明細書に特に言及されていない他のサービスで構成される可能性もある。
【００７１】
本開示の実施形態は以下の条項を考慮し、説明できる。
１．装置であって、
プロセッサと、
前記プロセッサによって実行可能であり、実行時、前記装置に、
サービスプロバイダネットワークの中で公共ウェブサービスのアプリケーションプログラミングインタフェース（ＡＰＩ）を公開させ、前記ＡＰＩは前記サービスプロバイダネットワークで実行する仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのメソッドを含み、
前記ＶＭインスタンスの中で前記コマンドを実行するための前記メソッドに対する呼出しを受け取らせ、
前記呼出しの受取りに応えて、前記コマンドを実行する要求を前記ＶＭインスタンスで実行するソフトウェアエージェントに送信させ、前記ソフトウェアエージェントは前記要求に応えて前記ＶＭインスタンスで前記コマンドを実行するように構成される
命令を非一過性コンピュータ可読記憶媒体に記憶された非一過性コンピュータ可読記憶媒体と、
を含む、前記装置。
【００７２】
２．前記公共ウェブサービスのＡＰＩが前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドをさらに含み、前記非一過性コンピュータ可読記憶媒体が、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータを要求するための前記メソッドに対する呼出しを受け取り、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータを要求するための前記メソッドに対する前記呼出しの受取りに応えて、前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータに対する要求を前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる
前記非一過性コンピュータ可読媒体に記憶された命令をさらに有する、条項１に記載の装置。
【００７３】
３．前記公共ウェブサービスＡＰＩが、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドをさらに含み、前記非一過性コンピュータ可読記憶媒体が、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータに対する要求を前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを受け取り、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データをキャッシュに記憶し、
前記キャッシュに記憶された、前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを使用し、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するための前記メソッドに対する呼出しに応える
ために、前記非一過性コンピュータ可読記憶媒体に記憶された追加の命令を有する、条項１に記載の装置。
【００７４】
４．前記非一過性コンピュータ可読記憶媒体が、前記ＶＭインスタンスの中で前記コマンドを実行するためのＵＩコントロールを表示するように構成されたユーザインタフェース（ＵＩ）を生成するために、前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを活用するために前記非一過性記憶媒体に記憶された追加の命令を有する、条項３に記載の装置。
【００７５】
５．前記公共ウェブサービスＡＰＩはさらに、前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するためのメソッドをさらに含み、前記非一過性コンピュータ可読記憶媒体は、
前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するための前記メソッドに対する呼出しを受け取り、
前記ＶＭインスタンスの中で前記コマンドの前記実行のステータスを入手するための前記メソッドに対する前記呼出しの受取りに応えて、前記ＶＭインスタンスの中での前記コマンドの前記実行の前記ステータスに対する要求を、前記ＶＭで実行する前記ソフトウェアエージェントに送信させる、
ために、前記非一過性コンピュータ可読記憶媒体に記憶された追加の命令を有する、条項１に記載の装置。
【００７６】
６．前記非一過性コンピュータ可読記憶媒体が、前記コマンドを実行する前記要求を前記ＶＭインスタンスで実行する前記ソフトウェアエージェントに送信させる前に、前記コマンドを実行するための前記メソッドに対する前記呼出しと関連付けられたユーザが前記コマンドを実行する権限を与えられていると判断するために、前記非一過性コンピュータ可読媒体に記憶された追加の命令を有する、条項１に記載の装置。
【００７７】
７．前記コマンドが前記ＶＭインスタンスでプロセスを再開するためのコマンド、キャッシュをフラッシュするためのコマンド、バックアップ動作を実行するためのコマンド、前記ＶＭインスタンスを構成するためのコマンド、または前記ＶＭインスタンスで試験を実行するためのコマンドの１つまたは複数を含む、条項１に記載の装置。
【００７８】
８．コンピュータ実行可能命令を非一過性コンピュータ可読記憶媒体に記憶させた前記非一過性コンピュータ可読記憶媒体であって、コンピュータ実行可能命令は、コンピュータによる実行時に、前記コンピュータに、
仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのメソッドを含む公共ウェブサービスのアプリケーションプログラミングインタフェース（ＡＰＩ）を公開させ、
前記ＶＭインスタンスの中で前記コマンドを実行するための前記メソッドに対する呼出しを受け取らせ、
前記コマンドを実行する要求を前記ＶＭインスタンスで実行するソフトウェア構成要素に送信させ、前記ソフトウェア構成要素が前記要求の受取りに応えて前記ＶＭインスタンスで前記コマンドを実行するように構成される
前記非一過性コンピュータ可読媒体。
【００７９】
９．前記ＶＭインスタンスでの前記コマンドの前記実行を記録するために前記非一過性コンピュータ可読記憶媒体に記憶された追加のコンピュータ実行可能命令を有する、条項８に記載の非一過性コンピュータ可読記憶媒体。
【００８０】
１０．前記公共ウェブサービスＡＰＩが、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドをさらに含む、条項８に記載の非一過性コンピュータ可読記憶媒体。
【００８１】
１１．前記ＶＭインスタンスの中で実行できる前記コマンドを識別するデータを要求するための前記メソッドに対する呼出しを受け取り、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェア構成要素に送信させる
ために、前記非一過性コンピュータ可読記憶媒体に記憶された追加のコンピュータ実行可能命令を有する、条項１０に記載の非一過性コンピュータ可読記憶媒体。
【００８２】
１２．前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェア構成要素に送信させ、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを受け取り、
前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データをキャッシュに記憶し、
前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するための前記メソッドに対する呼出しに応えるために、前記キャッシュに記憶される、前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを活用する
ために、前記非一過性コンピュータ可読記憶媒体に記憶された追加のコンピュータ実行可能命令を有する、条項１０に記載の非一過性コンピュータ可読記憶媒体。
【００８３】
１３．前記ＶＭインスタンスの中で実行できる前記コマンドを識別する前記データを活用して、前記ＶＭインスタンスの中で前記コマンドを実行するためのＵＩコントロールを表示するように構成されたユーザインタフェース（ＵＩ）を生成するために、前記銭非一過性コンピュータ可読記憶媒体に記憶された追加のコンピュータ実行可能命令を有する、条項１０に記載の非一過性コンピュータ可読記憶媒体。
【００８４】
１４．前記公共ウェブサービスＡＰＩが、前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するためのメソッドをさらに含む、条項８に記載の非一過性コンピュータ可読記憶媒体。
【００８５】
１５．前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するための前記メソッドに対する呼出しを受け取り、
前記ＶＭインスタンスの中での前記コマンドの前記実行の前記ステータスに対する要求を、前記ＶＭインスタンスで実行する前記ソフトウェア構成要素に送信させる
ために、前記非一過性コンピュータ可読記憶媒体に記憶された追加のコンピュータ実行可能命令を有する、条項１４に記載の非一過性コンピュータ可読記憶媒体。
【００８６】
１６．仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのコンピュータ実装方法であって、
サービスプロバイダネットワークの中でアプリケーションプログラミングインタフェース（ＡＰＩ）を公に公開することであって、前記ＡＰＩが前記サービスプロバイダネットワークの中で実行する仮想マシン（ＶＭ）インスタンスの中でコマンドを実行するためのメソッドを備える、ＡＰＩを公に公開することと、
前記ＶＭインスタンスの中で前記コマンドを実行するための前記メソッドに対する呼出しを受け取ることと、
前記コマンドを実行する要求を、前記ＶＭインスタンスで実行するソフトウェア構成要素に送信させることであって、前記ソフトウェア構成要素が前記要求の受取りに応えて前記ＶＭインスタンスで前記コマンドを実行するように構成される、送信させることと、
を含む、前記コンピュータ実装方法。
【００８７】
１７．前記ＡＰＩが、前記ＶＭインスタンスの中で実行できるコマンドを識別するデータを要求するためのメソッドをさらに含む、条項１５に記載のコンピュータ実装方法。
【００８８】
１８．前記ＡＰＩが、前記ＶＭインスタンスの中での前記コマンドの前記実行のステータスを入手するためのメソッドをさらに含む、条項１５に記載のコンピュータ実装方法。
【００８９】
１９．前記コマンドを実行する前記要求を、前記ＶＭインスタンスで実行する前記ソフトウェア構成要素に送信させる前に、前記コマンドを実行するための前記メソッドに対する前記呼出しと関連付けられたユーザが前記コマンドを実行する権限を与えられていると判断することをさらに含む、条項１５に記載のコンピュータ実装方法。
【００９０】
２０．前記コマンドが、前記ＶＭインスタンスでプロセスを再開するためのコマンド、キャッシュをフラッシュするためのコマンド、バックアップ動作を実行するためのコマンド、前記ＶＭインスタンスを構成するためのコマンド、または前記ＶＭインスタンスで試験を実行するためのコマンドの１つまたは複数を備える、条項１５に記載のコンピュータ実装方法。
【００９１】
図８は、上述された機能性を実装するためのプログラム構成要素を実行できるコンピュータ８００のための例のコンピュータアーキテクチャを示す。図８に示されるコンピュータアーキテクチャは、従来のサーバコンピュータ、ワークステーション、デスクトップコンピュータ、ラップトップ、タブレット、ネットワークアプライアンス、電子ブックリーダー、スマートフォンまたは他のコンピューティング装置を示し、本明細書に提示されるソフトウェア構成要素のいずれかを実行するために活用されてよい。
【００９２】
コンピュータ８００は、システムバスまたは他の電気通信経路を介して多数の構成要素または装置が接続されてよいプリント基板であるベースボード８０２、つまり「マザーボード」を含む。１つの例示的な構成では、１つまたは複数の中央演算処理装置（「ＣＰＵ」）８０４がチップセット８０６と連動して動作する。ＣＰＵ８０４は、コンピュータ８００の動作に必要な算術演算及び論理演算を実行する標準的なプログラム可能プロセッサであってよい。
【００９３】
ＣＰＵ８０４は、これらの状態を区別し、変更するスイッチング素子の操作を通してある離散した物理状態から次の離散した物理状態に遷移することによって演算を実行する。スイッチング素子は概して、フリップフロップ等の２つのバイナリ状態の１つを維持する電子回路、及び論理ゲート等の１つまたは複数の他のスイッチング素子の状態の論理的な組合せに基づいて出力状態を提供する電子回路を含んでよい。これらの基本的なスイッチング素子は、レジスタ、加算器−減算器、演算論理ユニット、浮動小数点ユニット等を含んだより複雑な論理回路を作成するために結合されてよい。
【００９４】
チップセット８０６は、ＣＰＵ８０４と、ベースボード８０２上の構成要素及び装置の残りとの間にインタフェースを提供する。チップセット８０６は、コンピュータ８００でメインメモリとして使用されるＲＡＭ８０８にインタフェースを提供してよい。チップセット８０６はさらに、コンピュータ８００を起動するため、ならびに多様な構成要素及び装置の間で情報を転送するために役立つ基本ルーチンを記憶するための、読出し専用メモリ（「ＲＯＭ」）８１０または不揮発性ＲＡＭ（「ＮＶＲＡＭ」）等のコンピュータ可読記憶媒体にインタフェースを提供してよい。また、ＲＯＭ８１０またはＮＶＲＡＭは、本明細書に説明される構成に従ってコンピュータ８００の動作に必要な他のソフトウェア構成要素を記憶してもよい。
【００９５】
コンピュータ８００は、ネットワーク６０６等のネットワークを通してリモートコンピューティング装置及びコンピュータシステムに対する論理接続を使用し、ネットワーク化された環境で動作してよい。チップセット８０６は、ギガビットイーサネットアダプタ等のＮＩＣ８１２を通してネットワーク接続性を提供するための機能性を含んでよい。ＮＩＣ８１２はネットワーク６０６を介して他のコンピューティング装置にコンピュータ８００を接続できる。複数のＮＩＣ８１２はコンピュータ８００に存在し、コンピュータを他のタイプのネットワーク及びリモートコンピュータシステムに接続してよいことが理解されるべきである。
【００９６】
コンピュータ８００は、不揮発性記憶をコンピュータに提供する大量記憶装置８１８に接続されてよい。大量記憶装置８１８は、本明細書でより詳細に説明されたオペレーティングシステム８２０、プログラム８２２及びデータを記憶してよい。大量記憶装置８１８は、チップセット８０６に接続されたストレージコントローラ８１４を通してコンピュータ８００に接続されてよい。大量記憶装置８１８は、１つまたは複数の物理記憶ユニットから成り立ってよい。ストレージコントローラ８１４は、シリアルアタッチドＳＣＳＩ（「ＳＡＳ」）インタフェース、シリアルＡＴＡ（「ＳＡＴＡ」）インタフェース、ファイバチャネル（「ＦＣ」）インタフェース、またはコンピュータと物理記憶装置との間で物理的にデータを接続し、転送するための他のタイプのインタフェースを通して物理記憶装置と連動してよい。
【００９７】
コンピュータ８００は、物理記憶装置の物理状態を、記憶されている情報を反映するために変換することによって大量記憶装置８１８でデータを記憶してよい。物理状態の特定の変形は、本明細書の異なる実施態様で、多様な要因に依存してよい。係る要因の例は、大量記憶装置８１８が一次記憶または二次記憶等として特徴付けられるかどうかに関わりなく、物理記憶装置を実装するために使用される技術を含むことがあるが、これに限定されるものではない。
【００９８】
例えば、コンピュータ８００は、磁気ディスク駆動装置の中の特定の場所の磁気特性、光記憶装置の特定の場所の反射特性もしくは屈折特性、または特定のコンデンサ、トランジスタ、もしくはソリッドステート記憶装置の他の離散構成要素の電気特性を改変するためにストレージコントローラ８１４を通して命令を発行することによって大量記憶装置８１８に情報を記憶してよい。物理媒体の他の変形は、本明細書を容易にするためだけに提供される上述の例により、本発明の範囲及び精神から逸脱することなく可能である。コンピュータ８００は、物理記憶装置の中の１つまたは複数の特定の場所の物理的な状態または特性を検出することによって大量記憶装置８１８から情報をさらに読み取ってよい。
【００９９】
上述された大量記憶装置８１８に加えて、コンピュータ８００は、プログラムモジュール、データ構造、または他のデータ等の情報を記憶し、取り出すために他のコンピュータ可読記憶媒体にアクセスできてよい。コンピュータ可読記憶媒体がデータの非一過性記憶を提供し、コンピュータ８００によってアクセス可能であってよい任意の利用可能な媒体であることが当業者によって理解されるべきである。
【０１００】
一例として及び制限ではなく、コンピュータ可読記憶媒体は任意の方法または技術で実装される揮発性及び不揮発性の、取外し可能な媒体及び取外しできない媒体を含んでよい。コンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、消去可能ＲＯＭ（「ＥＰＲＯＭ」）、電気的消去可能ＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、または他のソリッドステートメモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高解像度ＤＶＤ（「ＨＤ−ＤＶＤ」）、ＢＬＵ−ＲＡＹ、または他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または非一過性式で所望される情報を記憶するために使用できる他の媒体を含むが、これに限定されない。
【０１０１】
上記に簡略に言及されたように、大量記憶装置８１８は、コンピュータ８００の動作を制御するために活用されるオペレーティングシステム８２０を記憶してよい。１つの構成によると、オペレーティングシステムはＬＩＮＵＸオペレーティングシステムを含む。別の構成によると、オペレーティングシステムはＭＩＣＲＯＳＯＦＴ  ＣｏｒｐｏｒａｔｉｏｎからのＷＩＮＤＯＷＳ（登録商標）ＳＥＲＶＥＲオペレーティングシステムを含む。追加の構成によると、オペレーティングシステムはＵＮＩＸオペレーティングシステムまたはその変形の１つを含んでよい。他のオペレーティングシステムも活用されてよいことが理解されるべきである。大量記憶装置８１８は、コンピュータ８００によって活用される他のシステムまたはアプリケーションのプログラム及びデータを記憶してよい。
【０１０２】
１つの構成では、大量記憶装置８１８または他のコンピュータ可読記憶媒体は、コンピュータ８００にロードされるときに、コンピュータを汎用コンピューティングシステムから、本明細書に説明される構成を実装できる特殊目的コンピュータに変形するコンピュータ実行可能命令で符号化される。これらのコンピュータ実行可能命令は、上述されたように、ＣＰＵ８０４が状態の間でどのように遷移するのかを指定することによってコンピュータ８００を変形する。１つの構成によると、コンピュータ８００は、コンピュータ８００によって実行されるときに、図２〜図４に関して上述された多様なプロセスを実行するコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体にアクセスできる。また、コンピュータ８００は本明細書に説明される他のコンピュータ実装動作のいずれかを実行するためのコンピュータ可読記憶媒体を含む可能性もある。
【０１０３】
また、コンピュータ８００は、キーボード、マウス、タッチパッド、タッチスクリーン、電子スタイラス等のいくつかの入力装置または他のタイプの入力装置からの入力を受け取り、処理するための１つまたは複数の入出力コントローラ８１６を含んでもよい。同様に、入出力コントローラ８１６は、コンピュータモニタ、フラットパネルディスプレイ等のディスプレイ、デジタルプロジェクタ、プリンタ、プロッタ、または他のタイプの出力装置に出力を提供してよい。コンピュータ８００は図８に示される構成要素のすべてを含まないことがある、図８に明示的に示されない他の構成要素を含むことがある、または図８に示されるアーキテクチャとは完全に異なったアーキテクチャを活用することがあることが理解される。
【０１０４】
上述に基づいて、ＶＭインスタンスの中でコマンドを実行するための技術が本明細書に提示されていることが理解されるべきである。さらに、本明細書に提示される主題はコンピュータの構造上の特徴、方法論的な行為、及びコンピュータ可読媒体に特有の言語で説明されてきたが、添付の特許請求の範囲に定義される本発明は、必ずしも本明細書に説明される特定の特徴、行為、または媒体に制限されないことが理解されるべきである。むしろ、特定の特徴、行為、及び媒体は特許請求の範囲を実施する例の形として開示される。
【０１０５】
上述された主題は実例としてのみ提供され、制限的として解釈されるべきではない。さらに、主張される主題は本開示のいずれかの部分で留意されるあらゆるまたはすべての不利な点を解決する実施態様に制限されない。多様な修正及び変更は、示され、説明される例の構成及び応用に従うことなく、ならびに以下の特許請求の範囲に述べられる本発明の真の精神及び範囲から逸脱することなく、本明細書に説明される主題に加えられてよい。
【図１】
0006564050.tif 000002
【図２】
0006564050.tif 000003
【図３】
0006564050.tif 000004
【図４】
0006564050.tif 000005
【図５】
0006564050.tif 000006
【図６】
0006564050.tif 000007
【図７】
0006564050.tif 000008
【図８】
0006564050.tif 000009