(57)【特許請求の範囲】
【請求項１】
ルールベースのアクショントリガリングシステムを実施するように構成された複数のコンピューティング装置と、複数のクライアントのそれぞれに複数のリソースを提供するように構成されたプロバイダネットワークとを含むシステムであって、前記ルールベースのアクショントリガリングシステムは、
前記ルールベースのアクショントリガリングシステムを介して、及び、前記クライアントからの入力に従って、複数のトリガと複数のアクションに少なくとも部分的に基づいて、複数のルールを定義することであって、前記複数のルールのそれぞれは、前記トリガのうちの各１つまたは複数と前記アクションのうちの各１つまたは複数とを含む、前記複数のルールを定義することと、
前記トリガのうちの特定のトリガを発動する要求を受信することであって、前記要求は、当該特定のトリガを発動するための１つまたは複数の条件が満たされると生成され、前記１つまたは複数の条件が満たされたかどうかは、前記プロバイダネットワークの前記複数のリソースの監視に少なくとも部分的に基づいて決定される、前記要求を受信することと、
前記トリガのうちの前記特定のトリガを含む前記ルールのうちの特定の１つまたは複数を決定することと、
前記トリガのうちの前記特定のトリガを含む前記ルールのうちの前記特定の１つまたは複数における前記アクションのうちの特定の１つまたは複数を記述する、１つまたは複数のメッセージを生成することと、
前記１つまたは複数のメッセージをメッセージングサービスに送信することと、且つ、
前記１つまたは複数のメッセージを前記メッセージングサービスから１つまたは複数のアクションハンドラに送ることと、
を行うように構成され、前記１つまたは複数のアクションハンドラは、前記１つまたは複数のメッセージに記述された前記アクションの前記特定の１つまたは複数を行うように構成される、
システム。
【請求項２】
前記ルールベースのアクショントリガリングシステムは、
前記トリガのうちの追加のトリガを発動する要求を受信することであって、前記追加のトリガは、前記特定の時刻にスケジューリングされている、前記追加のトリガを発動する要求を受信することと、
前記トリガのうちの前記追加のトリガを含む前記ルールのうちの追加の１つまたは複数に前記アクションのうちの追加の１つまたは複数を記述する、１つまたは複数の追加メッセージを生成することと、
前記１つまたは複数の追加メッセージを前記メッセージングサービスに送信することと、
前記１つまたは複数の追加メッセージを前記メッセージングサービスから前記１つまたは複数のアクションハンドラに送ることと、を行うようにさらに構成され、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージに記述された前記アクションの前記追加の１つまたは複数を行うように構成される、
請求項１に記載のシステム。
【請求項３】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は、
プロバイダネットワークのクライアントからの入力に従って、複数のトリガと複数のアクションに少なくとも部分的に基づいて、複数のルールを定義することであって、前記複数のルールのそれぞれは、前記トリガのうちの各１つまたは複数と前記アクションのうちの各１つまたは複数とを含む、前記複数のルールを定義することと、
前記トリガのうちの特定の１つまたは複数のための１つまたは複数の条件が満たされていると決定することであって、前記１つまたは複数の条件が満たされているかどうかは、複数のリソースを含むプロバイダネットワークにおける前記複数のリソースの監視に少なくとも部分的に基づいて決定される、前記１つまたは複数の条件が満たされていると決定することと、
前記トリガのうちの前記特定の１つまたは複数を含む前記ルールのうちの特定の１つまたは複数を決定することと、
前記トリガのうちの前記特定の１つまたは複数を含む前記ルールのうちの前記特定の１つまたは複数における前記アクションのうちの特定の１つまたは複数を記述する、１つまたは複数のメッセージを送信することと、
を行うようにコンピュータによって実行可能で、１つまたは複数のアクションハンドラが、前記１つまたは複数のメッセージを受信し、前記１つまたは複数のメッセージに記述された前記アクションのうちの前記特定の１つまたは複数を行うように構成される、
コンピュータ可読記憶媒体。
【請求項４】
前記１つまたは複数のメッセージを送信する際、前記プログラム命令は、
前記１つまたは複数のメッセージをメッセージングサービスに送信することと、
前記１つまたは複数のメッセージを前記メッセージングサービスから前記１つまたは複数のアクションハンドラに配信することと、
を行うようにさらにコンピュータによって実行可能である、
請求項３に記載のコンピュータ可読記憶媒体。
【請求項５】
前記プログラム命令は、
前記トリガのうちの前記特定の１つまたは複数を含む前記ルールのうちの追加のルールを決定することであって、前記追加のルールはキュー入れ替えを含む、前記追加のルールを決定することと、
前記ルールのうちの前記追加のルールの前記キュー入れ替えに少なくとも部分的に基づいてキューメッセージをキューサービスに送信することと、
を行うようにさらにコンピュータによって実行可能である、請求項３に記載のコンピュータ可読記憶媒体。
【請求項６】
前記プログラム命令は、
前記トリガのうちの追加のトリガを特定の時刻にスケジューリングすることと、
前記トリガのうちの前記追加のトリガを含む前記ルールのうちの追加の１つまたは複数における、前記アクションのうちの追加の１つまたは複数を記述する１つまたは複数の追加メッセージを送信することと、
を行うようにさらにコンピュータによって実行可能であり、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージを受信し、前記１つまたは複数の追加メッセージに記述された前記アクションの前記追加の１つまたは複数を行うように構成される、請求項３に記載のコンピュータ可読記憶媒体。
【請求項７】
前記監視は、１つまたは複数のサービスログの監視、１つまたは複数のサービスメトリックの監視、１つまたは複数のデータストリームの監視、１つまたは複数の警告状態の変更の監視、または、それらの組み合わせを含む、請求項３−６のいずれか一項に記載のコンピュータ可読記憶媒体。
【請求項８】
前記複数のルールを定義する際、前記プログラム命令は、
前記複数のルールを定義するユーザ入力の受信を行うようにさらにコンピュータによって実行可能で、前記ユーザ入力は、１つもしくは複数の所定のアクション、１つもしくは複数のカスタムアクション、または、１つもしくは複数の所定のアクションと１つもしくは複数のカスタムアクションからの選択を含む、請求項３に記載のコンピュータ可読記憶媒体。
【請求項９】
複数のサブサービスを実施するように構成された複数のコンピューティング装置と、ルーティングハンドラと
を含むシステムであって、前記ルーティングハンドラは、
前記複数のサブサービスのうちの特定のサブサービスにおける特定の動作を指定する要求をクライアントから受信することであって、前記複数のサブサービスは、ルールサブサービスとアクションサブサービスを含み、前記ルールサブサービスは、複数のトリガと複数のアクションとを用いて複数のルールを定義するという１つまたは複数の動作を含み、前記ルールのうちの個々のルールは、前記トリガのうちの各１つまたは複数を前記アクションのうちの各１つまたは複数に結合するように定義され、前記アクションサブサービスは、複数のリソースを含むプロバイダネットワークにおいて前記複数のアクションを行うという１つまたは複数の動作を含む、前記要求を受信すること、
前記要求における前記特定の動作を決定すること、
前記特定の動作に少なくとも部分的に基づいて、前記サブサービスのうちの前記特定のサブサービスを決定することであって、前記サブサービスのうちの前記特定のサブサービスはルーティングマップを用いて決定され、前記ルーティングマップは、データストアから前記ルーティングハンドラに動的にロードされる、前記特定のサブサービスを決定すること、
前記要求を前記サブサービスのうちの前記特定のサブサービスにルーティングすること、
前記要求への応答を前記サブサービスのうちの前記特定のサブサービスから受信すること、
前記応答を前記クライアントに返信すること、
を行うように構成される、システム。
【請求項１０】
前記ルールサブサービスのうちの前記１つまたは複数の動作の修正、または、前記アクションサブサービスのうちの前記１つまたは複数の動作の修正に応答して、前記ルーティングマップに少なくとも部分的に基づいて、更新されたルーティングマップが生成され、前記更新されたルーティングマップは、１つまたは複数の新しいまたは修正された動作の前記サブサービスのうちの特定のサブサービスへのマッピングを含み、前記更新されたルーティングマップは、前記データストアに記憶される、請求項９に記載のシステム。
【請求項１１】
前記特定のサブサービスは、前記ルールサブサービスを含み、前記特定の動作は、特定のトリガを発動するという動作を含み、前記特定のトリガを発動するという前記動作を行う際、前記ルールサブサービスは、
前記特定のトリガを含む前記ルールのうちの特定の１つまたは複数を決定し、且つ、
前記特定のトリガを含む前記ルールのうちの前記特定の１つまたは複数における前記アクションのうちの特定の１つまたは複数を記述する、１つまたは複数のメッセージを生成する
ように構成される、請求項９に記載のシステム。
【請求項１２】
ルーティングハンドラにおいてクライアントから、複数のサブサービスのうちの特定のサブサービスにおける特定の動作を指定する要求を受信することであって、前記複数のサブサービスは、複数のルールを定義するという１つまたは複数の動作を含み、前記ルールのうちの個々のルールは、複数のトリガの各１つまたは複数を複数のアクションのうちの各１つまたは複数に結合するように定義され、前記複数のサブサービスは、複数のリソースを含むプロバイダネットワークにおいて前記複数のアクションを行うという１つまたは複数の動作を含む、前記要求を受信することと、
前記ルーティングハンドラにおいて、前記要求における前記特定の動作を決定することと、
前記ルーティングハンドラにおいて、前記特定の動作に少なくとも部分的に基づいて、前記サブサービスのうちの前記特定のサブサービスであって、前記ルーティングハンドラと１つまたは複数の追加のルーティングハンドラとによって共有されるルーティングマップを用いて決定される前記特定のサブサービスを決定することと、
前記要求を前記サブサービスのうちの前記特定のサブサービスにルーティングすることと、
を含む、コンピュータ実施方法。
【請求項１３】
前記複数のサブサービスは、ルールサブサービスを含み、前記ルールサブサービスは、前記複数のルールを定義する前記１つまたは複数の動作を含み、前記ルールサブサービスは、前記トリガの１つまたは複数を発動するという１つまたは複数の動作を含む、請求項１２に記載の方法。
【請求項１４】
前記複数のサブサービスは、アクションサブサービスを含み、前記アクションサブサービスは、前記複数のリソースを含む前記プロバイダネットワークにおいて前記複数のアクションを行うという前記１つまたは複数の動作を含む、請求項１２に記載の方法。
【請求項１５】
前記特定のサブサービスは、ルールサブサービスを含み、前記特定の動作は、特定のトリガを発動するという動作を含み、前記特定のトリガを発動するという前記動作を行う際、前記方法は、
前記特定のトリガを含む前記ルールのうちの特定の１つまたは複数を決定することと、
前記特定のトリガを含む前記ルールのうちの前記特定の１つまたは複数における前記アクションのうちの特定の１つまたは複数を記述する、１つまたは複数のメッセージを生成すること、
をさらに含む、請求項１２に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの会社や他の組織が、（例えば、ローカルネットワークの一部として）同じ場所に配置されているコンピューティングシステム、または、（例えば、１つまたは複数のプライベートまたはパブリックの中間ネットワークを介して接続された）複数の別々の地理的位置に配置されているコンピューティングシステム等、多くのコンピューティングシステムを相互に接続して動作を支援するコンピュータネットワークを運営している。例えば、かなりの数の相互に接続されたコンピューティングシステムを収容している分散システムがごく普通になってきた。このような分散システムは、クライアントと対話するウェブサーバにバックエンドサービスを提供してよい。このような分散システムは、顧客にコンピューティングリソースを提供する実体によって運営されるデータセンタも含んでよい。様々な顧客が所有するハードウェアにネットワークアクセス、電力、及び、安全な設置設備を提供するデータセンタ運営者もいれば、顧客が使用のために入手可能なハードウェアリソースも含む「完全なサービス」設備を提供するデータセンタ運営者もいる。
【０００２】
分散システムの規模や範囲が大きくなったので、リソースのプロビジョニング、アドミニストレーション、及び、管理のタスクが、ますます、複雑になってきた。例えば、分散システムの様々なコンポーネントに問題が生じると、保守が頻繁に必要である。システムアドミニストレータが、手動で、その場その場のやり方でこのような保守タスクを行うことが多い。保守タスクを手動で行うと、不必要に高価で、エラーを起こしやすい結果となる場合がある。さらに、システムアドミニストレータが、保守タスクを行うためにカスタムシステムを開発、デプロイすることが必要になり得る。
【図面の簡単な説明】
【０００３】
【図１】ある実施形態による、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例を示す。
【図２】ある実施形態による、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図３】ある実施形態による、キューサービスを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図４Ａ】ある実施形態による、トリガからアクションへの１対１マッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図４Ｂ】ある実施形態による、トリガからアクションへの１対多のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図４Ｃ】ある実施形態による、トリガからアクションへの多対１のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図４Ｄ】ある実施形態による、トリガからアクションへの多対多のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図５Ａ】ある実施形態による、トリガからアクションとキュー入れ替えへのマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図５Ｂ】ある実施形態による、トリガからアクションではなくキュー入れ替えへのマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。
【図６】ある実施形態による、プロバイダネットワークにおけるルールベースのアクショントリガリングの方法を示すフローチャートである。
【図７】ある実施形態による、プロバイダネットワークにおけるルールベースのメッセージトリガリングの方法を示すフローチャートである。
【図８】ある実施形態による、プロバイダネットワークにおけるスケジュールベースのアクショントリガリングの方法を示すフローチャートである。
【図９】ある実施形態による、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例を示す。
【図１０】ある実施形態による、動的にロードされたルーティングマップの使用を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。
【図１１】ある実施形態による、特定のサブサービスのためのＨＴＴＰクライアントの使用を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。
【図１２】ある実施形態による、サブサービスの例を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。
【図１３】ある実施形態による、サブサービスの更新を反映するようにルーティングマップを更新することを含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。
【図１４】ある実施形態による、サブサービスとルーティングハンドラにおけるメトリック収集を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。
【図１５】ある実施形態による、ルールベースのアクショントリガリングのルーティングハンドラを使用する方法を示すフローチャートである。
【図１６】ある実施形態で使用され得るコンピューティング装置の例を示す。
【０００４】
例として、幾つかの実施形態に関して例示的な図面を用いて、本明細書に実施形態を記載するが、実施形態は、記載した実施形態や図面に制限されないことを当業者は認識されよう。図面や図面に関する詳細な記載は、開示した特定の形態に実施形態を制限するものではなく、むしろ、添付の請求項に規定された精神及び範囲内に入る全ての修正形態、同等形態、代替形態を含むよう意図していることを理解されたい。本明細書で使用している表題は、系統立てのためであり、明細書または特許請求の範囲の制限に使用されることを意図していない。本出願書で使用される場合、「ｍａｙ」という語は、義務的な意味（すなわち、「しなければならない」を意味する）ではなく、許容の意味（すなわち、「する可能性がある」を意味する）で使用される。同様に、「ｉｎｃｌｕｄｅ」「ｉｎｃｌｕｄｉｎｇ」及び「ｉｎｃｌｕｄｅｓ」は、「〜を含むが、〜に限らない」を意味する。
【発明を実施するための形態】
【０００５】
プロバイダネットワークにおけるルールベースのアクショントリガリングの方法及びシステムの様々な実施形態を記載する。本明細書に記載の技術を用いて、トリガとアクションに基づいてルールを定義してよい。一実施形態においては、ルールは、１つまたは複数のトリガと１つまたは複数のアクションを含んでよい。プロバイダネットワークのリソースは、その動作中、監視されてよい。トリガのいずれかの条件に合致すると、ルールにおいてそのトリガに関連付けられた任意のアクションを行ってよい。アクションを開始するために、アクションを記述するメッセージが生成されて、メッセージングサービスに送られてよい。例えば、メッセージングサービスは、キューサービスを含んでよく、メッセージは、１つまたは複数のキューに配置されてよい。メッセージは、メッセージングサービスからメッセージに記述されたアクションを行う１つまたは複数のアクションハンドラに配信されてよい。このように、プロバイダネットワークの保守タスクまたは他のタスクは、自動化されてよい。
【０００６】
ルールベースのアクショントリガリングのルーティングハンドラの方法及びシステムの様々な実施形態を記載する。本明細書に記載の技術を使用して、ルーティングハンドラは、要求を様々なサブサービスにルーティングしてよい。ルーティングハンドラは、外部データストアから読み出したルーティングマップを使用して、要求の個々の動作を個々のサブサービスにマッピングしてよい。サブサービスは、ルールベースのアクショントリガリング、アクションのスケジューリング、ルールに基づいたアクションの実行、及び／または、任意の他の適切なタスクのサブサービスを含んでよい。個々のサブサービスの１つまたは複数の動作が更新される時、ルーティングハンドラ自体の代わりにルーティングマップが更新されてよい。ルーティングハンドラは、ルーティングハンドラ群の一部であってよい。ルーティングハンドラ群全ての代わりに、ルーティングマップを更新することによって、サブサービスの更新を効率的に実施してよい。
【０００７】
プロバイダネットワークにおけるルールベースのアクショントリガリング
図１は、ある実施形態による、プロバイダネットワークのルールベースのアクショントリガリングのシステム環境例を示す。ルールベースのアクショントリガリングシステム１００は、ルールに基づいてアクションをトリガ、実行する複数のコンポーネントを含んでよい。一実施形態においては、ルールベースのアクショントリガリングシステム１００は、トリガ定義機能１１０Ａ、アクション定義機能１１０Ｂ、及び、ルール定義機能１１０Ｃを含んでよい。データストア１１５は、トリガ定義機能１１０Ａ、アクション定義機能１１０Ｂ、及び／または、ルール定義機能１１０Ｃを用いて定義されたトリガ１１１Ａ、アクション１１１Ｂ、及び、ルール１１１Ｃに関連付けられた情報を記憶してよい。データストア１１５は、データベース管理技術等、任意の適切な記憶技術を用いて実施されてよい。
【０００８】
ルールベースのアクショントリガリングシステム１００は、ユーザインタフェース１０５も含んでよい。一実施形態においては、ユーザインタフェース１０５によって、ユーザは、トリガ定義機能１１０Ａ、アクション定義機能１１０Ｂ、及び／または、ルール定義機能１１０Ｃを用いて、トリガ１１１Ａ、アクション１１１Ｂ、及び／または、ルール１１１Ｃを定義及び／または選択できる。例えば、ユーザインタフェース１０５は、ユーザが、１つまたは複数の所定のトリガを選択し、及び／または、１つまたは複数のカスタムトリガを定義するのを可能にしてよい。同様に、ユーザインタフェース１０５は、ユーザが、１つまたは複数の所定のアクションを選択し、及び／または、１つまたは複数のカスタムアクションを定義するのを可能にしてよい。ユーザインタフェース１０５は、ユーザが１つまたは複数のルールを定義するのを可能にしてよい。一実施形態においては、ルールは、１つまたは複数のトリガと１つまたは複数のアクションを含むように定義されてよい。一実施形態においては、ルールは、トリガとメッセージ交換を含むように定義されてよい。トリガ１１１Ａ、アクション１１１Ｂ、及び、ルール１１１Ｃの定義を、図４Ａ、４Ｂ、４Ｃ、４Ｄ、５Ａ及び５Ｂに関して以下に詳細に記載する。
【０００９】
ルールベースのアクショントリガリングシステム１００は、１つまたは複数のコンピューティング装置を用いて実施されてよい。１つまたは複数のコンピューティング装置のいずれかは、図１６に示す例示のコンピューティング装置３０００によって実施されてよい。様々な実施形態において、ルールベースのアクショントリガリングシステム１００の機能の一部は、同じコンピューティング装置によって、または、任意の適切な数の異なるコンピューティング装置によって提供されてよい。ルールベースのアクショントリガリングシステム１００のコンポーネントのいずれかが、異なるコンピューティング装置を用いて実施される場合、コンポーネントと、そのコンポーネントの各コンピューティング装置とは、例えば、ネットワークを介して通信可能に接続されてよい。図示のコンポーネントは、それぞれ、各機能の実行に使用可能なソフトウェアとハードウェアの任意の組み合わせを表してよい。ルールベースのアクショントリガリングシステム１００は、図に示されていない追加のコンポーネント、図に示されているより少ないコンポーネント、または、図に示されているコンポーネントとは異なる組み合わせ、構成、もしくは、量を含んでよいと考えられる。
【００１０】
ルールベースのアクショントリガリングシステム１００は、１つまたは複数のネットワーク１９０または他のインターコネクトを用いて、プロバイダネットワーク１７０に接続されてよい。プロバイダネットワーク１７０は、コンピューティングリソース１７１Ａ、１７１Ｂ〜１７１Ｎ等、複数のコンピューティングリソースを含んでよい。リソース１７１Ａ〜１７１Ｎは、任意の適切な数及び構成の計算インスタンス、及び／または、他の処理リソース、ストレージリソース、データベースリソース、ネットワークリソース、電力リソース、及び／または、他の適切な種類のコンピューティングリソースを含んでよい。３つのコンピューティングリソース１７１Ａ、１７１Ｂ及び１７１Ｎを例示のために図に示しているが、任意の適切な数及び構成のコンピューティングリソースを使用してよいと考えられる。プロバイダネットワーク１７０は、アクションのトリガのソース、トリガされたアクションの対象、及び／または、トリガされたアクションを行う１つまたは複数のアクションハンドラを含んでよい。
【００１１】
プロバイダネットワーク１７０は、会社または公的組織等の実体によって運営され、インターネット及び／または他のネットワークを介して分散したクライアントセットにリソース（リソース１７１Ａ〜１７１Ｎ等）及び／またはサービス（様々な種類のクラウドベースのコンピューティングまたはストレージ等）を提供してよい。プロバイダネットワーク１７０は、プロバイダが提供したインフラストラクチャ及びサービスを実施、分散させるために使用される物理的及び／または仮想のコンピュータサーバ、記憶装置、及び、ネットワーク機器のコレクション等、様々なリソースプールをホストする多くのデータセンタを含んでよい。リソースは、ある実施形態においては、仮想もしくは物理的な計算インスタンスまたはストレージインスタンス等、「インスタンス」と呼ばれる単位で、クライアントに提供されてよい。仮想計算インスタンスは、例えば、指定された計算能力（ＣＰＵの種類と数、メインメモリのサイズ等を示すことによって指定されてよい）と、指定されたソフトウェアスタック（例えば、特定のバージョンのオペレーティングシステム、当該オペレーティングシステムは、ハイパーバイザに追加して実行してよい）とを有する１つまたは複数のサーバを含んでよい。多くの異なる種類のコンピューティング装置は、単一で、または、組み合わせて使用されて、汎用または特殊用途のコンピュータサーバ、記憶装置、ネットワーク装置等を含む、異なる実施形態におけるプロバイダネットワーク１７０のリソースを実施してよい。
【００１２】
一実施形態においては、プロバイダネットワーク１７０は、クライアントのためのリソースの予約、制御、アクセスのインタフェースの柔軟なセットを実施してよい。例えば、プロバイダネットワーク１７０は、クライアントが、リソースについて知る、リソースを選択する、リソースへのアクセスを購入する、及び／または、リソースを予約することを可能にする（例えば、ウェブサイトまたはウェブページのセットを介した）プログラム的なリソース予約インタフェースを実施してよい。一実施形態において、リソースは、クライアントがアクセス可能なサービスを用いて、クライアントに代わって予約されてよい。一実施形態においては、プロバイダネットワーク１７０は、プロバイダネットワークの選択されたリソースプールの１つまたは複数のリソースを使用して、クライアントに代わってタスクを実行してよい。一実施形態においては、リソースプールは、様々なタスクの予測される計算ニーズに基づいて自動的に選択されてよい。一実施形態においては、リソースプールは、クライアントが提出した特定のリソース要求または予約に基づいて選択されてよい。
【００１３】
プロバイダネットワーク１７０は、監視機能１８０も備えてよい。監視機能１８０は、例えば、リソースの動作中、及び／または、使用中、リソースのいずれかを監視してよい。監視機能１８０は、エージェントソフトウェア、または、任意の他の適切な技術を使用して、個々のリソースを監視してよい。一実施形態においては、プロバイダネットワークのリソース監視は、１つまたは複数のサービスログの監視、１つまたは複数のサービスメトリックの監視、及び／または、任意の適切なデータストリームの監視を含んでよい。一実施形態においては、監視は、性能メトリック、使用メトリック、及び／または、リソース１７１Ａ〜１７１Ｎの動作に関する他の適切なデータを所定の閾値及び／または警告と比較してよい。任意の適切な所定の閾値及び／または警告は、個々のトリガに関して１つまたは複数の条件を表してよい。コンピューティングリソースの監視が、トリガのいずれかの条件に合致することを示すと、監視機能１８０は、トリガを発動または起動させてよい。監視機能１８０は、閾値及び／または警告に基づいてトリガの条件に合致したことを決定してよい。例えば、監視機能１８０は、警告状態の変更を検出してよく、結果として、トリガを発動してよい。一実施形態においては、外部エージェントが、監視機能１８０を実施し、トリガを発動してよい。一実施形態においては、プロバイダネットワーク１７０内のサービスが、監視機能１８０を実施し、トリガを発動してよい。一実施形態においては、監視機能１８０は、適切なアプリケーションプログラミングインタフェース（ＡＰＩ）を通してルールベースのアクショントリガリングシステム１００に要求を送信することによってトリガを発動してよい。
【００１４】
一実施形態においては、ルールベースのアクショントリガリングシステム１００は、ルール施行機能１２０を備えてよい。ルール施行機能１２０は、例えば、トリガ発動要求を受信後、発動されたトリガに作用してよい。トリガを発動する要求が受信されると、ルール施行機能１２０は、どのルールが、そのトリガを含むかを、もしあれば、決定してよい。どのルールがトリガを含むかを決定するために、ルール施行機能１２０は、データストア１１５に記憶されたルール、トリガ、及び／または、他の適切なデータを参照してよい。発動されたトリガを含む任意のルールを読み出した後、ルール施行機能１２０は、読み出されたルールに定義された任意のアクションを決定してよい。ルール施行機能１２０は、次に、読み出されたルールに定義された任意のアクションを開始してよい、またはそうでなければ、アクションを行わせてよい。アクションを開始する時、ルール施行機能１２０は、例えば、トリガ発動要求で受信された、アクションのメタデータまたはパラメータを供給してよい。このように、ルールベースのアクショントリガリングシステム１００は、特定のトリガが起動された時、定義されたルールを使用して、特定のアクションを行ってよい。
【００１５】
図２は、ある実施形態による、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。ルールベースのアクショントリガリングシステム１００は、メッセージ生成機能１３０を含んでよい。ルール施行機能１２０によって呼び出されると、メッセージ生成機能１３０は、例えば、アクションに関連付けられたトリガが発動された時、行うべきアクションを記述したメッセージ１４５を生成してよい。メッセージ生成機能１３０は、メッセージ１４５をメッセージングサービス１４０に送信してよい。メッセージは、任意の発動されたトリガと共に供給されたランタイム入力パラメータ、及び／または、アクションに関連付けられたデフォルトパラメータに基づいて、生成されてよい。一実施形態においては、ジョブディスパッチャ１５０は、メッセージングサービス１４０と対話して、メッセージ１４５に基づいたジョブを発送してよい。
【００１６】
一実施形態においては、アクション実行環境１６０は、メッセージ１４５に記述され、ジョブディスパッチャ１５０によって送られたアクションを行ってよい。アクション実行環境１６０は、スクリプト、ワークフロー、及び／または、コンパイル済みプログラムコードを含む、命令実行のための１つまたは複数の環境を含んでよい。アクション実行環境１６０は、アクションハンドラ１６１Ａ、１６１Ｂ〜１６１Ｎ等、１つまたは複数のアクションハンドラを含んでよい。３つのアクションハンドラ１６１Ａ、１６１Ｂ、１６１Ｎが例示の目的で図に示されているが、任意の適切な数のアクションハンドラを使用してよいと考えられる。アクションハンドラ１６１Ａ〜１６１Ｎが行うアクションは、リソース１７１Ａ〜１７１Ｎ及び／またはその構成要素のいずれかの任意の適切な修正及び／または設定を含んでよい。例えば、特定のトリガが発動される時、アクションは、プロバイダネットワーク１７０で計算インスタンスを自動的に、終了、一時停止、または、再スタートさせて良い。別の例として、画像ファイルが特定の記憶場所、ディレクトリ、または、バケットに追加される時、画像ファイルを所定の幅及び所定の高さに自動的にサイズ変更するアクションが行われてよい。アクションは、発動されているトリガに基づいて、スケジュールに基づいて、または、ユーザもしくは他のコンピューティングコンポーネントからの要求に基づいて、アクションハンドラによって行われてよい。
【００１７】
一実施形態においては、ルールベースのアクショントリガリングシステム１００は、推薦エンジンを含んでよい。推薦エンジンは、顧客のリソース使用パターン、及び／または、リソースメタデータに基づいて、機械学習技術を用いて顧客に自動操作を推薦してよい。推薦エンジンは、また、顧客の反応に適応して、経時的に推薦を改良してよい。推薦は、顧客からの入力とルールベースのアクショントリガリングシステム１００で人気のある傾向を用いたフィードバックループを使用して改良されてよい。
【００１８】
図３は、ある実施形態による、キューサービスを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。一実施形態においては、メッセージングサービス１４０は、１つまたは複数のキューを管理するキューサービスを用いて実施されてよい。行うべきアクションを記述するメッセージ１４５は、メッセージングサービスに送信されてよい、または、１つまたは複数のキューに配置されてよい。３つのキュー１４１Ａ、１４１Ｂ、１４１Ｎが、例示の目的で図に示されているが、任意の適切な数のキューを使用してよいと考えられる。一実施形態においては、キュー１４１Ａは、メッセージ生成機能１３０が生成した全てのメッセージを最初に記憶する一次キューであってよく、他のキュー１４１Ｂ〜１４１Ｎは、一次キューが全てのメッセージを扱うのに十分でない場合、バックアップキューとして使用されるだけであってよい。
【００１９】
一実施形態においては、ジョブディスパッチャ１５０は、タスクポーラ１５１を用いて実施されてよい。タスクポーラ１５１は、適切な間隔で１つまたは複数のキューにポーリングして、キューがメッセージ、例えば、行うべきアクションを記述するメッセージを含むか否かを決定してよい。タスクポーラ１５１は、一次キュー１４１Ａから適切なエラーメッセージを受信すると、バックアップキュー１４１Ｂ〜１４１Ｎの使用を開始してよい。タスクポーラ１５１は、特定の間隔で様々なキュー１４１Ａ〜１４１Ｎのそれぞれをポーリングしてよい。一実施形態においては、タスクポーラ１５１は、バックアップキュー１４１Ｂ〜１４１Ｎより頻繁に一次キュー１４１Ａをポーリングしてよい。
【００２０】
図４Ａは、ある実施形態による、トリガからアクションへの１対１のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。上記のように、データストア１１５は、トリガ１１１Ａ、アクション１１１Ｂ、及び、ルール１１１Ｃを記憶してよい。図４Ａに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガがデータストア１１５に記憶されてよいと考えられる。
【００２１】
図４Ａに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａと、１つまたは複数の追加のアクション設定（図示せず）とを含んでよい。各アクション設定（アクション設定４１０Ａ等）は、アクション（アクション４１１等）、アクションの任意のデフォルトパラメータ（デフォルトパラメータ４１２等）、及び、アクションに必要な任意の役割（役割（複数可）４１３等）を含んでよい。アクションは、１つまたは複数のコマンド、命令、または、１つまたは複数のタスクを行う機能の他の呼び出しを含んでよい。アクションは、アクションの全ての呼び出しに当てはまるデフォルトパラメータに関連付けられてよい。一実施形態においては、アクションが呼び出される時、そのアクションの特定のインスタンスに関してランタイム入力パラメータも指定されてよい。一実施形態においては、ランタイム入力パラメータは、デフォルトパラメータを増強させてよいが、オバーライドはしない。例えば、画像ファイルが追加された時にアクションが画像ファイルのサイズ変更を伴う場合、デフォルトパラメータは、目標とする幅と高さを含んでよく、ランタイム入力パラメータは、画像ファイルの記憶場所を含んでよい。役割は、アクションがランタイム時にリソースセットにアクセスすることを可能にする許可または他のセキュリティ証明書を含んでよい。役割は、どの特定のユーザまたはユーザグループとも無関係であってよく、関連付けられたアクションへの権限の委任を表してよい。
【００２２】
図４Ａに示す例においては、ルール１１１Ｃは、ルール４２０Ａと１つまたは複数の追加のルール（図示せず）を含んでよい。ルール４２０Ａは、トリガ４００Ａ等、トリガの１つと、アクション設定４１０Ａ等、アクション設定の１つを指定してよい。トリガ４００Ａが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ａがルール４２０Ａの一部であることを決定してよい。ルール施行機能１２０は、データストア１１５を使用して、アクション設定４１０Ａもルール４２０Ａの一部である、すなわち、トリガ４００Ａに結び付いていることを決定してよい。ルール施行機能１２０によって、次に、指定されたアクション４１１をデフォルトパラメータ４１２（及び、任意で、ランタイム入力パラメータ）と、役割（複数可）４１３を用いて行わせてよい。一実施形態においては、メッセージ生成機能１３０は、アクション４１１、デフォルトパラメータ４１２、任意のランタイム入力パラメータ、及び、役割（複数可）４１３を指定するメッセージを生成してよい。
【００２３】
図４Ｂは、ある実施形態による、トリガからアクションへの１対多のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。図４Ｂに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガをデータストア１１５に記憶してよいと考えられる。図４Ｂに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａ、４１０Ｂ〜４１０Ｎを含んでよい。しかしながら、任意の適切な数のアクション設定をデータストア１１５に記憶してよいと考えられる。上記のように、アクション設定４１０Ａ〜４１０Ｎは、それぞれ、アクション、アクションの任意のデフォルトパラメータ、及び、アクションに必要な任意の役割を含んでよい。アクション設定４１０Ａ〜４１０Ｎの個々のアクション設定は、（例えば、異なるデフォルトパラメータを有する）同じアクションまたは異なるアクションを表してよい。
【００２４】
一実施形態においては、ルール１１１Ｃは、トリガからアクションへの１対多のマッピングを含んでよい。図４Ｂに示す例においては、ルール１１１Ｃは、ルール４２０Ａ、４２０Ｂを含んでよい。ルール４２０Ａは、トリガ４００Ａからアクション設定４１０Ａへの結合を表してよい。ルール４２０Ｂは、同じトリガ４００Ａから異なるアクション設定４１０Ｂへの結合を表してよい。トリガ４００Ａが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ａがルール４２０Ａ、４２０Ｂの一部であることを決定してよい。ルール施行機能１２０は、データストア１１５を使用して、アクション設定４１０Ａがルール４２０Ａの一部であり、アクション設定４１０Ｂがルール４２０Ｂの一部であることも決定してよい。ルール施行機能１２０は、次に、アクション設定４１０Ａと４１０Ｂの両方に指定されたアクションを行わせてよい。一実施形態においては、メッセージ生成機能１３０は、アクション、アクションに関連付けられたデフォルトパラメータ、任意のランタイム入力パラメータ、及び、任意の必要な役割（複数可）を指定する１つまたは複数のメッセージを生成してよい。
【００２５】
図４Ｃは、ある実施形態による、トリガからアクションへの多対１のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。図４Ｃに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガをデータストア１１５に記憶してよいと考えられる。図４Ｃに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａ、４１０Ｂ〜４１０Ｎを含んでよい。しかしながら、任意の適切な数のアクション設定をデータストア１１５に記憶してよいと考えられる。上記のように、アクション設定４１０Ａ〜４１０Ｎは、それぞれ、アクション、アクションの任意のデフォルトパラメータ、及び、アクションに必要な任意の役割を含んでよい。
【００２６】
一実施形態においては、ルール１１１Ｃは、トリガからアクションへの多対１のマッピングを含んでよい。図４Ｃに示す例においては、ルール１１１Ｃは、ルール４２０Ａ、４２０Ｃを含んでよい。ルール４２０Ａは、トリガ４００Ａからアクション設定４１０Ａへの結合を表してよい。ルール４２０Ｃは、異なるトリガ４００Ｂから同じアクション設定４１０Ａへの結合を表してよい。トリガ４００Ａが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ａがルール４２０Ａの一部であることを決定してよい。同様に、トリガ４００Ｂが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ｂがルール４２０Ｃの一部であることを決定してよい。トリガ４００Ａ及び／または４００Ｂのいずれかまたは両方が発動される時、ルール施行機能１２０は、データストア１１５を使用して、アクション設定４１０Ａがルール４２０Ａの一部であり、アクション設定４１０Ａはルール４２０Ｃの一部でもあることを決定してよい。トリガ４００Ａまたは４００Ｂのいずれかが発動された場合、または、両方が発動された場合、ルール施行機能１２０は、アクション設定４１０Ａに指定されたアクションを行わせてよい。一実施形態においては、メッセージ生成機能１３０は、アクション、アクションに関連付けられたデフォルトパラメータ、任意のランタイム入力パラメータ、及び、任意の必要な役割（複数可）を指定するメッセージを生成してよい。
【００２７】
図４Ｄは、ある実施形態による、トリガからアクションへの多対多のマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。図４Ｄに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガをデータストア１１５に記憶してよいと考えられる。図４Ｄに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａ、４１０Ｂ〜４１０Ｎを含んでよい。しかしながら、任意の適切な数のアクション設定をデータストア１１５に記憶してよいと考えられる。上記のように、アクション設定４１０Ａ〜４１０Ｎは、それぞれ、アクション、アクションの任意のデフォルトパラメータ、及び、アクションに必要な任意の役割を含んでよい。
【００２８】
一実施形態においては、ルール１１１Ｃは、トリガからアクションへの多対多のマッピングを含んでよい。図４Ｄに示す例においては、ルール１１１Ｃは、ルール４２０Ａ、４２０Ｂ、４２０Ｃ、及び、４２０Ｄを含んでよい。ルール４２０Ａは、第１のトリガ４００Ａから第１のアクション設定４１０Ａへの結合を表してよい。ルール４２０Ｂは、第１のトリガ４００Ａから第２のアクション設定４１０Ｂへの結合を表してよい。ルール４２０Ｃは、第２のトリガ４００Ｂから第１のアクション設定４１０Ａへの結合を表してよい。ルール４２０Ｄは、第２のトリガ４００Ｂから第２のアクション設定４１０Ｂへの結合を表してよい。トリガ４００Ａが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ａがルール４２０Ａ、４２０Ｂの一部であることを決定してよい。ルール施行機能１２０は、データストア１１５を使用して、アクション設定４１０Ａがルール４２０Ａの一部であり、アクション設定４１０Ｂがルール４２０Ｂの一部であることも決定してよい。同様に、トリガ４００Ｂが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ｂがルール４２０Ｃ、４２０Ｄの一部であることを決定してよい。ルール施行機能１２０は、データストア１１５を使用して、アクション設定４１０Ａはルール４２０Ｃの一部であり、アクション設定４１０Ｂはルール４２０Ｄの一部であることも決定してよい。トリガ４００Ａまたは４００Ｂのいずれかが発動された場合、または、両方が発動された場合、ルール施行機能１２０は、アクション設定４１０Ａ、４１０Ｂに指定されたアクションを行わせてよい。一実施形態においては、メッセージ生成機能１３０は、アクション、アクションに関連付けられたデフォルトパラメータ、任意のランタイム入力パラメータ、及び、任意の必要な役割（複数可）を指定する１つまたは複数のメッセージを生成してよい。
【００２９】
図５Ａは、ある実施形態による、トリガからアクションとキュー入れ替えへのマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。図５Ａに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガをデータストア１１５に記憶してよいと考えられる。図５Ａに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａ、４１０Ｂ〜４１０Ｎを含んでよい。しかしながら、任意の適切な数のアクション設定をデータストア１１５に記憶してよいと考えられる。上記のように、アクション設定４１０Ａ〜４１０Ｎは、それぞれ、アクション、アクションの任意のデフォルトパラメータ、及び、アクションに必要な任意の役割を含んでよい。
【００３０】
一実施形態においては、ルール１１１Ｃは、トリガからアクションへのマッピングと、トリガからキュー入れ替えへのマッピングも含んでよい。図５Ａに示す例においては、ルール１１１Ｃは、ルール４２０Ａ、４２０Ｅを含んでよい。ルール４２０Ａは、トリガ４００Ａからアクション設定４１０Ａへの結合を表してよい。ルール４２０Ｅは、同じトリガ４００Ａからキュー入れ替え４３０への結合を表してよい。キュー入れ替え４３０は、生成すべき１つまたは複数のキューメッセージを指定してよい。トリガ４００Ａが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ａがルール４２０Ａ、４２０Ｅの一部であることを決定してよい。ルール施行機能１２０は、また、データストア１１５を使用して、アクション設定４１０Ａがルール４２０Ａの一部であり、キュー入れ替え４３０がルール４２０Ｂの一部であることを決定してよい。ルール施行機能１２０は、次に、アクション設定４１０Ａに指定されたアクションを行わせてよい。一実施形態においては、メッセージ生成機能１３０は、アクション、アクションに関連付けられたデフォルトパラメータ、任意のランタイム入力パラメータ、及び、任意の必要な役割（複数可）を指定する１つまたは複数のメッセージを生成してよい。さらに、ルール施行機能１２０は、キュー入れ替え４３０によって指定されるキューメッセージを生成してよく、そのメッセージをキューに配置してよい、またはそうでなければ、メッセージをメッセージングサービスに送信してよい。例えば、キューメッセージは、（例えば、アドミニストレータまたはログへの）、トリガ４００Ａが特定の時刻に発動されたという通知、または、アクション設定４１０Ａのアクションが特定のパラメータを用いて特定の時刻に行われたという通知を表してよい。
【００３１】
図５Ｂは、ある実施形態による、トリガからアクションではなくキュー入れ替えへのマッピングを含む、プロバイダネットワークにおけるルールベースのアクショントリガリングのシステム環境例のさらなる態様を示す。図５Ｂに示す例においては、トリガ１１１Ａは、トリガ４００Ａ、４００Ｂ〜４００Ｎを含んでよい。しかしながら、任意の適切な数のトリガをデータストア１１５に記憶してよいと考えられる。図５Ｂに示す例においては、アクション１１１Ｂは、アクション設定４１０Ａ、４１０Ｂ〜４１０Ｎを含んでよい。しかしながら、任意の適切な数のアクション設定をデータストア１１５に記憶してよいと考えられる。上記のように、アクション設定４１０Ａ〜４１０Ｎは、それぞれ、アクション、アクションの任意のデフォルトパラメータ、及び、アクションに必要な任意の役割を含んでよい。
【００３２】
一実施形態においては、ルール１１１Ｃは、トリガのキュー入れ替えへのマッピングを含んでよい。図５Ｂに示す例においては、ルール１１１Ｃは、ルール４２０Ｆを含んでよい。ルール４２０Ｆは、トリガ４００Ｎからキュー入れ替え４３０への結合を表してよい。キュー入れ替え４３０は、生成すべき１つまたは複数のキューメッセージを指定してよい。同じトリガ４００Ｎが、アクション設定４１０Ａ〜４１０Ｎのいずれにも結合されなくてもよい。トリガ４００Ｎが発動される時、ルール施行機能１２０は、データストア１１５を使用して、トリガ４００Ｎがルール４２０Ｆの一部であることを決定してよい。ルール施行機能１２０は、データストア１１５を使用して、キュー入れ替え４３０がルール４２０Ｆの一部であることも決定してよい。ルール施行機能１２０は、キュー入れ替え４３０によって指定されるキューメッセージを生成してよく、そのメッセージをキューに配置してよい、またはそうでなければ、メッセージをメッセージングサービスに送信してよい。例えば、キューメッセージは、トリガ４００Ｎが特定の時刻に発動されたという（例えば、アドミニストレータまたはログ）への通知を表してよい。
【００３３】
図６は、ある実施形態による、プロバイダネットワークにおけるルールベースのアクショントリガリングの方法を示すフローチャートである。６０５に示すように、複数のルールが、複数のトリガと複数のアクションに基づいて定義されてよい。一実施形態においては、個々のルールは、トリガの１つまたは複数と、アクションの１つまたは複数を含む。あるいは、個々のルールは、トリガとキュー入れ替えを含んでよい。トリガ、アクション、及び／または、ルールは、所定の要素、及び／または、カスタム要素を用いて、ユーザによって定義または選択されてよい。
【００３４】
６１０に示すように、プロバイダネットワークにおける複数のリソースを監視してよい。リソースを監視して、トリガのいずれかを発動するか否かを決定してよい。言い換えると、プロバイダネットワークの条件をリソースの動作中または使用中に監視して、条件がいずれかのトリガを満たすか否かを決定してよい。一実施形態においては、プロバイダネットワークのリソースの監視は、１つまたは複数のサービスログ、１つまたは複数のサービスメトリック、及び／または、１つまたは複数の他のデータストリームの監視を含んでよい。監視は、外部エージェント及び／またはサービス自体等、任意の適切なコンポーネント（複数可）によって行われてよい。６１５に示すように、監視に基づいて、特定の１つまたは複数のトリガの条件に合致したことを決定してよい。６１５に示す動作は、メトリックと閾値の比較、ログ分析、及び／または、警告段階の変更の検出を含んでよい。トリガの条件に合致した場合、「トリガ発動」要求が、例えば、外部のエージェント、サービス、または、監視を行う他の実体からルールベースのアクショントリガリングシステムに送信されてよい。
【００３５】
６２０に示すように、発動された特定の１つまたは複数のトリガを含むルールの特定の１つまたは複数を決定してよい。特定の１つまたは複数のトリガの条件に合致すると決定したことに応答して、特定の１つまたは複数のルールを決定してよい。特定の１つまたは複数のルールは、ルール内に規定された特定の１つまたは複数のトリガに基づいて、データストアからルールを読み出すことによって決定されてよい。特定のルール（複数可）は、それぞれ、特定の１つまたは複数のアクションも含んでよい。
【００３６】
６２５に示すように、１つまたは複数のメッセージを生成してよい。１つまたは複数のメッセージは、特定の１つまたは複数のトリガも含む特定の１つまたは複数のルールに、特定の１つまたは複数のアクションを記述してよい。６３０に示すように、１つまたは複数のメッセージをメッセージングサービスに送信してよい。一実施形態においては、メッセージングサービスは、キューサービスを用いて実施されてよく、１つまたは複数のメッセージは、キューサービスが管理する１つまたは複数のキューに配置されてよい。
【００３７】
６３５に示すように、１つまたは複数のメッセージは、メッセージングサービスから１つまたは複数のアクションハンドラに送られてよい。アクションハンドラ（複数可）は、アクション実行環境の一部であってよい。６４０に示すように、１つまたは複数のアクションハンドラは、１つまたは複数のメッセージに記述された１つまたは複数のアクションを行ってよい。一実施形態においては、行われたアクションによって、別のトリガが発動されてよく、その結果、異なるトリガ、異なるルール、及び／または、異なるアクションに対して、６１０〜６４０に示す動作が再度、行われる。このように、トリガは、他のトリガにチェーンされて、複雑なアクションチェーンを行ってよい。
【００３８】
図７は、ある実施形態による、プロバイダネットワークにおけるルールベースのメッセージトリガリングの方法を示すフローチャートである。６０５に示すように、複数のルールが、複数のトリガと複数のアクションに基づいて定義されてよい。一実施形態においては、個々のルールは、トリガの１つまたは複数と、アクションの１つまたは複数を含む。あるいは、個々のルールは、トリガとキュー入れ替えを含んでよい。トリガ、アクション、及び／または、ルールは、所定の要素及び／またはカスタム要素を用いてユーザによって定義または選択されてよい。
【００３９】
６１０に示すように、プロバイダネットワークの複数のリソースを監視してよい。リソースを監視して、トリガのいずれかを発動するか否かを決定してよい。言い換えると、リソースの動作中または使用中にプロバイダネットワークの条件を監視して、条件がいずれかのトリガを満たすか否かを決定してよい。一実施形態においては、プロバイダネットワークのリソースの監視は、１つまたは複数のサービスログ、１つまたは複数のサービスメトリック、及び／または、１つまたは複数の他のデータストリームの監視を含んでよい。監視は、外部エージェント及び／またはサービス自体等、任意の適切なコンポーネント（複数可）によって行われてよい。６１５に示すように、監視に基づいて、特定の１つまたは複数のトリガの条件に合致したことを決定してよい。６１５に示す動作は、メトリックと閾値の比較、ログ分析、及び／または、警告段階の変更の検出を含んでよい。トリガの条件に合致した場合、「トリガ発動」要求が、例えば、外部のエージェント、サービス、または、監視を行う他の実体から、ルールベースのアクショントリガリングシステムに送信されてよい。
【００４０】
７２０に示すように、発動された特定のトリガを含む特定のルールを決定してよい。特定のトリガの条件に合致したと決定することに応答して、特定のルールが決定されてよい。特定のルールは、ルール内で定義された特定のトリガに基づいて、データストアからルールを読み出すことによって、決定されてよい。特定のルールは、生成すべき１つまたは複数のキューメッセージを指定する特定のキュー入れ替えも含んでよい。
【００４１】
７２５に示すように、キューメッセージは、特定のルールのキュー入れ替えに基づいて生成されてよい。７３０に示すように、キューメッセージは、キューサービス等のメッセージングサービスに送信されてよい。一実施形態においては、キューメッセージは、キューサービスによって管理される１つまたは複数のキューに配置されてよく、最終的には、適切な受信者に配信されてよい。
【００４２】
図８は、ある実施形態による、プロバイダネットワークにおけるスケジュールベースのアクショントリガリングの方法を示すフローチャートである。６０５に示すように、複数のルールは、複数のトリガと複数のアクションに基づいて定義されてよい。一実施形態においては、個々のルールは、トリガの１つまたは複数と、アクションの１つまたは複数とを含む。あるいは、個々のルールは、トリガとキュー入れ替えを含んでよい。トリガ、アクション、及び／または、ルールは、所定の要素及び／またはカスタム要素を用いてユーザによって定義または選択されてよい。
【００４３】
８０７に示すように、特定の時刻にトリガをスケジューリングしてよい。トリガは、ワンタイムイベントとして、または、繰り返しイベントとしてスケジューリングされてよい。例えば、トリガは、毎日特定の時刻に、７日毎に特定の時刻に、毎月特定の日に、または、任意の他の適切な間隔でスケジューリングされてよい。トリガは、自動で、または、ユーザ入力に基づいてスケジューリングされてよい。８１０に示すように、プロバイダネットワークにおいて、時間の経過を監視して、任意のスケジューリングされたトリガをいつ発動するかを決定してよい。
【００４４】
８１５に示すように、監視に基づいて、特定のスケジューリングされたトリガを発動する時刻になったことを決定してよい。トリガの時刻になった場合、「トリガ発動」要求が、例えば、外部のエージェント、サービス、または、監視を行う他の実体から、ルールベースのアクショントリガリングシステムに送信されてよい。６２０に示すように、発動された特定のスケジューリングされたトリガを含むルールの特定の１つまたは複数が決定されてよい。特定の１つまたは複数のルールは、特定のスケジューリングされたトリガの条件に合致すると決定されたことに応答して、決定されてよい。特定の１つまたは複数のルールは、ルール内に定義された特定のスケジューリングされたトリガに基づいて、データストアからルールを読み出すことによって決定されてよい。特定のルール（複数可）は、それぞれ、特定の１つまたは複数のアクションも含んでよい。
【００４５】
６２５に示すように、１つまたは複数のメッセージを生成してよい。１つまたは複数のメッセージは、特定のスケジューリングされたトリガも含む特定の１つまたは複数のルールに、特定の１つまたは複数のアクションを記述してよい。６３０に示すように、１つまたは複数のメッセージは、メッセージングサービスに送信されてよい。一実施形態においては、メッセージングサービスは、キューサービスを使用して実施してよく、１つまたは複数のメッセージは、キューサービスによって管理された１つまたは複数のキューに配置されてよい。
【００４６】
６３５に示すように、１つまたは複数のメッセージは、メッセージングサービスから１つまたは複数のアクションハンドラに送られてよい。アクションハンドラ（複数可）は、アクション実行環境の一部であってよい。６４０に示すように、１つまたは複数のアクションハンドラは、１つまたは複数のメッセージに記述された１つまたは複数のアクションを行ってよい。一実施形態においては、行われたアクションによって、別のトリガが発動されてよく、その結果、異なるトリガ、異なるルール、及び／または、異なるアクションに対して６１０〜６４０に示す動作が再度、行われる。このように、トリガは、他のトリガにチェーンされて、複雑なアクションを行ってよい。 
【００４７】
ルールベースのアクショントリガリングのルーティングハンドラ 
図９は、ある実施形態による、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例を示す。ルーティングハンドラ９００は、ルールベースのアクショントリガリングシステム１００のコンポーネントと、ルールベースのアクショントリガリングシステム１００に使用される他のコンポーネントを含む、上記コンポーネントの様々なコンポーネントに、要求をルーティングしてよい。ルーティングハンドラ９００は、ルールベースのアクショントリガリングシステム１００及びその関連するコンポーネントのプロキシとも呼ばれてよい。ルーティングハンドラ９００が要求をルーティングするコンポーネントは、本明細書においては、サブサービスと呼ばれてよい。ルーティングハンドラ９００は、サブサービス９５０Ａ、９５０Ｂ〜９５０Ｎ等、複数のサブサービスのうちの選択されたサブサービスに個々の要求をルーティングしてよい。３つのサブサービス９５０Ａ、９５０Ｂ、９５０Ｎが例示の目的で示されているが、任意の適切な数及び設定のサブサービスを使用してよいと考えられる。サブサービス９５０Ａ〜９５０Ｎは、異なるサブサービス、または、同じサブサービスの異なるバージョンを表してよい。図９の例に示すように、サブサービス９５０Ａ等、サブサービスの１つまたは複数は、ルールベースのアクショントリガリングシステム１００の機能の態様を実施してよい。サブサービス９５０Ｂ、９５０Ｎ等、サブサービスのうちの他のサブサービスは、ルールベースのアクショントリガリングシステム１００に呼び出される機能、またはそうでなければ、関連付けられた機能を実施してよい。このように、ルーティングハンドラ９００は、上記のルールベースのアクショントリガリング及び／またはスケジュールベースのアクショントリガリングに関連付けられた様々な異なるサブサービス９５０Ａ〜９５０Ｎとの対話に統一された顧客体験を提供してよい。さらに、ルーティングハンドラ自体を更新及び／または再デプロイすることなしに、ルーティングハンドラ群のルーティング情報を更新してよい。
【００４８】
ルーティングハンドラ９００は、１または複数のクライアント９９０から、例えば、ネットワークを介して要求９０１を受信してよい。クライアント９９０は、ルーティングハンドラ９００を維持する組織の外部の顧客、ルーティングハンドラ９００を維持する組織の内部の顧客、または、サブサービス９５０Ａ〜９５０Ｎの任意の適切な顧客を表してよい。個々の要求は、個々のサブサービスが行うべき動作を指定してよい。以下により詳細に記載するように、ルーティングハンドラ９００は、サブサービスのうちのどのサブサービスが任意の特定の要求の対象であるかを決定してよい。ルーティングハンドラ９００は、次に、例えば、ネットワークを介して、その特定のサブサービスへの要求を、（例えば、サブサービスを実施する１つまたは複数のホストに）ルーティングしてよい。要求に対する任意の応答が、受信者のサブサービスによって生成される場合、ルーティングハンドラは、応答を受信して、要求を送信したクライアントにその応答をルーティングしてよい。図９の例に示すように、ルーティングハンドラ９００は、要求９５１Ａをサブサービス９５０Ａに送信して、サブサービス９５０Ａから応答９５２Ａを受信してよく、要求９５１Ｂをサブサービス９５０Ｂに送信して、サブサービス９５０Ｂから応答９５２Ｂを受信してよく、要求９５１Ｎをサブサービス９５０Ｎに送信して、サブサービス９５０Ｎから応答９５２Ｎを受信してよい。クライアントから受信された要求９０１は、サブサービス９５０Ａ〜９５０Ｎにルーティングされた要求９５１Ａ〜９５１Ｎを集合的に表してよい。クライアントにルーティングされた応答９０２は、サブサービス９５０Ａ〜９５０Ｎから受信された応答９５２Ａ〜９５２Ｎを集合的に表してよい。
【００４９】
ルーティングハンドラ９００は、１つまたは複数のコンピューティング装置を用いて実施されてよく、１つまたは複数のコンピューティング装置のいずれかは、図１６に示す例示のコンピューティング装置３０００によって実施されてよい。様々な実施形態において、ルーティングハンドラ９００の機能の一部は、同じコンピューティング装置によって、または、任意の適切な数の異なるコンピューティング装置によって提供されてよい。ルーティングハンドラ９００のコンポーネントのいずれかが、異なるコンピューティング装置によって実施される場合、コンポーネントと、その各コンピューティング装置は、例えば、ネットワークを介して、通信可能に接続されてよい。ルーティングハンドラ９００は、ルーティングハンドラ群の一部であってよい。ルーティングハンドラ群のうちの他のルーティングハンドラは、同様に構成されてよい、及び／または、類似の機能を提供してよい。
【００５０】
サブサービス９５０Ａ〜９５０Ｎも、それぞれ、１つまたは複数のコンピューティング装置を用いて実施されてよく、１つまたは複数のコンピューティング装置のいずれかは、図１６に示す例示のコンピューティング装置３０００によって実施されてよい。様々な実施形態において、サブサービス９５０Ａ〜９５０Ｎのいずれかの機能は、同じコンピューティング装置によって、または、任意の適切な数の異なるコンピューティング装置によって、提供されてよい。サブサービス９５０Ａ〜９５０Ｎの１つのサブサービスのコンポーネントのいずれかを異なるコンピューティング装置を使用して実施する場合、コンポーネントとその各コンピューティング装置は、例えば、ネットワークを介して通信可能に接続されてよい。
【００５１】
図１０は、ある実施形態による、動的にロードされたルーティングマップの使用を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。ルーティングハンドラ９００は、外部データストア９１５から読み出されたルーティングマップ９１６を使用して、要求の特定の動作を特定のサブサービスにマッピングしてよい。データストア９１５は、任意の適切なストレージ技術を用いて実施されてよい。一実施形態においては、ルーティングハンドラ９００は、要求分析機能９１０、動的ルーティング設定機能９２０、及び、動作からサブサービスへのマッピング機能９３０を含んでよい。ルーティングハンドラ９００は、図に示されていない追加のコンポーネント、図に示されているより少ないコンポーネント、または、図に示されたコンポーネントの異なる組み合わせ、構成、もしくは、量を含んでよいことを意図している。
【００５２】
一実施形態においては、要求分析機能９１０は、着信要求９０１に関する要求分析を行ってよい。任意の適切な技術（複数可）を用いて、要求分析機能９１０は、着信要求で指定された１つまたは複数の動作を決定してよい。例えば、着信要求は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求として受信されてよく、動作（複数可）は、ＨＴＴＰ要求の特定の部分に指定されてよい。様々な動作は、様々なサブサービスが提供した様々なアプリケーションプログラミングインタフェース（ＡＰＩ）を表してよい。
【００５３】
一実施形態においては、動的ルーティング設定機能９２０は、最新のルーティングマップ９１６を維持してよい。ルーティングマップ９１６は、適切な間隔で外部データストア９１５から読み出され、動的ルーティング設定機能９２０によってキャッシュされてよい。ルーティングマップ９１６は、動的に、ルーティングハンドラ９００にロードされてよい。例えば、ルーティングハンドラのプログラムコードの更新、ルーティングハンドラの再デプロイ、ルーティングハンドラの再スタートを必要とせずに、ルーティングハンドラ実行中にロードされてよい。ルーティングマップ９１６は、個々の動作名（または他の識別子）をその動作を行う個々のサブサービスにマッピングすることを表してよい。ルーティングマップ９１６は、キーと値のデータストアを用いて実施されてよい。キーと値のデータストアにおいて、キーは、動作名（または、他の識別子）を表し、関連付けられた値は、サブサービス名（または、他の識別子）を表す。一実施形態においては、（例えば、ルーティングハンドラ群の形態の）複数のルーティングハンドラは、例えば、ルーティングマップの異なるコピーをキャッシュすることによって、同じルーティングマップ９１６を参照してよい。
【００５４】
一実施形態においては、動作からサブサービスへのマッピング機能９３０は、ルーティングマップ９１６を使用して、着信要求をルーティングすべき特定のサブサービスを決定してよい。動作からサブサービスへのマッピング機能９３０は、（動的ルーティング設定機能９２０によって提供された）ルーティングテーブル９１６の（要求分析機能９１０によって決定された）特定の動作を調べて、要求で指定された動作を提供する特定のサブサービスを決定してよい。ルーティングハンドラ９００は、次に、動作からサブサービスへのマッピング機能９３０によって決定された適切なサブサービスに要求をルーティングしてよい。サブサービスからルーティングハンドラ９００によって受信された応答はいずれも、要求を送信したクライアントにルーティングされてよい。ホスト群は、特定のサブサービスを実施してよく、要求のサブサービスへのルーティングは、サブサービスに関連付けられたロードバランサに要求をルーティングすることを含んでよい。ロードバランサは、次に、要求を特定のホストにルーティングしてよい。
【００５５】
図１１は、ある実施形態による、特定のサブサービスのためのＨＴＴＰクライアントの使用を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。一実施形態においては、要求９０１は、ＨＴＴＰ要求として表されてよく、ルーティングハンドラ９００は、複数のＨＴＴＰクライアントを使用して、サブサービス９５０Ａ〜９５０Ｎと通信してよい。一実施形態においては、ルーティングハンドラ９００は、サブサービス毎またはサブサービスホスト毎に１つのＨＴＴＰクライアントを使用してよい。図１１に示すように、ルーティングハンドラ９００は、１つのＨＴＴＰクライアント９４０Ａを使用して、サブサービス９５０Ａと通信してよく、別のＨＴＴＰクライアント９４０Ｂを使用して、サブサービス９５０Ｂと通信してよく、さらに別のＨＴＴＰクライアント９４０Ｎを使用して、サブサービス９５０Ｎと通信してよい。しかしながら、任意の適切な数及び設定のＨＴＴＰクライアントを使用してよいと考えられる。ルーティングハンドラ９００が、要求をサブサービス９５０Ａ〜９５０Ｎのうちの１つの対応するサブサービスにルーティングしようとする時、ＨＴＴＰクライアント９４０Ａ〜９４０Ｎのいずれかを、作成（例えば、インスタンス化）してよく、または、再使用してよい。
【００５６】
一実施形態においては、ＨＴＴＰクライアントは、同期モードで実行してよい。同期モードにおいては、ＨＴＴＰクライアントは、サブサービスのうちの１つに要求を転送した後、応答を待つ。一実施形態においては、ＨＴＴＰクライアントの１つまたは複数は、代わりに、非同期モードで実行してよい。非同期モードにおいては、ＨＴＴＰクライアントの１つまたは複数のスレッドは、要求をサブサービスにルーティングするために使用された後、スレッドプールに返されてよい。１つまたは複数のキューが、ルーティングハンドラ９００によって使用されて、サブサービスからの応答を受信してよい。このように非同期入力／出力（Ｉ／Ｏ）を用いて、ルーティングハンドラ９００のリソースをより効率的に使用してよい。
【００５７】
図１２は、ある実施形態による、サブサービスの例を含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。様々な実施形態において、サブサービスは、ルールベースのアクショントリガリング、アクションのスケジューリング、ルールに基づいたアクションの実行、及び／または、任意の他の適切なタスクのサブサービスを含んでよい。図１２の例に示すように、ルーティングハンドラ９００は、ルールサブサービス９５０Ｃ、スケジューリングサブサービス９５０Ｄ、及び、アクションサブサービス９５０Ｅに要求をルーティングしてよい。ルールサブサービス９５０Ｃは、例えば、図１、図２、及び、図３に関して記載したように、ルールベースのアクショントリガリングシステム１００の上記機能を表してよい。例えば、ルールサブサービス９５０Ｃは、トリガをアクションに結合するルールを定義してよく、トリガを発動して、ルールに基づいてアクションを行わせてよい。ルールサブサービス９５０Ｃは、ルーティングハンドラ９００からルーティングされた要求９５１Ｃを受信して、応答９５２Ｃをルーティングハンドラに送信してよい。スケジューリングサブサービス９５０Ｄは、例えば、図８に関して記載したように、特定の時刻にアクションが行われるようにスケジューリングしてよい。スケジューリングサブサービス９５０Ｄは、ルーティングハンドラ９００からルーティングされた要求９５１Ｄを受信して、応答９５２Ｄをルーティングハンドラに送信してよい。アクションサブサービス９５０Ｅは、例えば、図１、図２、及び、図３に関して記載したように、アクションハンドラ１６１Ａ〜１６１Ｎ及び／またはアクション実行環境１６０に関して上述した機能を表してよい。例えば、アクションサブサービス９５０Ｅは、プロバイダネットワーク１７０のリソース１７１Ａ〜１７１Ｎにルールベース、及び／または、スケジュールベースのアクションを行ってよい。アクションサブサービス９５０Ｅは、ルーティングハンドラ９００からルーティングされた要求９５１Ｅを受信して、応答９５２Ｅをルーティングハンドラに送信してよい。
【００５８】
図１３は、ある実施形態による、サブサービスへの更新を反映するようにルーティングマップを更新することを含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。特定のサブサービスの１つまたは複数の動作を更新する時、ルーティングハンドラ自体の代わりに、ルーティングマップを更新してよい。ルーティングハンドラは、ルーティングハンドラ群の一部であってよい。ルーティングハンドラ群全体の代わりにルーティングマップを更新することによって、サブサービスの更新を効率的に実施してよい。従って、図１３に示すように、更新されたサブサービス９５０Ｆが、別のサブサービス（例えば、サブサービス９５０Ｂ）に置き換わってよい、または、補ってよい。ルーティングハンドラ９００と共に使用した旧バージョンと比較して、更新されたサブサービス９５０Ｆは、１つまたは複数の追加の動作、１つまたは複数のより少ない動作、及び／または、１つまたは複数の修正された動作を実施してよく、クライアントに提供してよい。修正された動作は、動作名（または、他の識別子）、及び／または、動作に関連付けられたパラメータの相違を反映してよい。一実施形態においては、サービスオーナー９６０は、更新されたサブサービス９５０Ｆを更新し、トラフィックがルーティングハンドラ９００によって管理されるサブサービスセットに更新されたサブサービス９５０Ｆを追加してよい。更新されたサブサービス９５０Ｆが、ルーティングハンドラ９００によって管理されるサブサービスセットに追加される時、サービスオーナー９６０は、更新されたルーティングマップ９１７も生成してよい。更新されたルーティングマップ９１７は、特定の動作名（または、他の識別子）から、更新されたサブサービス９５０Ｆの更新された動作を含む、それらの動作を提供する特定のサブサービスへのマッピングを表してよい。サービスオーナー９６０は、データストア９１５に更新されたルーティングマップ９１７を記憶してよい。一実施形態においては、サービスオーナー９６０は、もはや使用されていないルーティングマップ９１６をデータストア９１５の更新されたルーティングマップ９１７で上書きするために、任意の適切なセキュリティ証明書を提供してよい。
【００５９】
図１４は、ある実施形態による、サブサービスとルーティングハンドラのメトリックコレクションを含む、ルールベースのアクショントリガリングのルーティングハンドラのシステム環境例のさらなる態様を示す。一実施形態においては、個々のサブサービス９５０Ａ〜９５０Ｎは、要求９０１の受信及び／または処理に関する性能メトリックを収集してよい。図１４の例に示すように、サブサービス９５０Ａは、メトリックコレクション機能９５５Ａを含んでよく、サブサービス９５０Ｂは、メトリックコレクション機能９５５Ｂを含んでよく、サブサービス９５０Ｎは、メトリックコレクション機能９５５Ｎを含んでよい。ルーティングハンドラ９００は、要求９０１及び応答９０２のルーティングを含む、ルーティングハンドラ９００が行う様々なタスクに関連する性能メトリックを収集するメトリックコレクション機能９４５も含んでよい。収集されたメトリックは、ネットワーク使用量、プロセッサ使用量、メモリ使用量、ストレージ使用量、電力使用量、及び／または、他のリソース使用量に関連してよい。様々なメトリックコレクション機能９５５Ａ〜９５５Ｎ及び９４５は、集約及び／または分析のための任意の適切なコンポーネントに収集されたメトリックを報告してよい。例えば、要求のルーティングと処理のためのエンドツーエンド待ち時間を測定するために、要求の待ち時間メトリックをルーティングハンドラ９００と受信者サブサービスの両方から収集してよい。
【００６０】
一実施形態においては、サブサービス９５０Ａ〜９５０Ｎの個々のサブサービスは、同じサブサービスの異なるバージョンを表してよい。例えば、サブサービス９５０Ａ〜９５０Ｎのうちの２つは、ルールサブサービスの旧バージョンと、ルールサブサービスの新バージョンを表してよい。ルーティングハンドラ９００は、一部の要求を１つのバージョンにルーティングし、他の要求を他のバージョンにルーティングすることによって、同じサブサービスの２つのバージョンのＡ／Ｂテストを支援してよい。要求は、クライアントホワイトリスト及び／またはクライアントブラックリストに基づいて、ルーティングされてよい。一実施形態においては、対応するサブサービスのメトリックコレクション機能と、ルーティングハンドラ９００のメトリックコレクション機能９４５を使用して、例えば、同じサブサービスの２つの異なるバージョンの相対的な性能を決定することによって、テストの結果を評価してよい。
【００６１】
図１５は、ある実施形態による、ルールベースのアクショントリガリングのルーティングハンドラを使用する方法を示すフローチャートである。１５０５に示すように、要求は、要求ルータでクライアントから受信されてよい。要求は、特定のサブサービスの特定の動作を指定してよい。１５１０に示すように、要求の特定の動作を決定してよい。一実施形態においては、特定の動作は、要求分析を用いて、例えば、ＨＴＴＰ要求の動作名（または他の識別子）を識別して決定されてよい。
【００６２】
１５１５に示すように、サブサービスの特定のサブサービスを、特定の動作に基づいて決定してよい。サブサービスの特定のサブサービスは、動作名（または、他の識別子）とサブサービス名（または、他の識別子）の間の関連付けを表すルーティングマップを用いて、決定されてよい。ルーティングマップは、ルーティングハンドラ群の各ルーティングハンドラが最新のルーティング情報を有するように、データストアから動的にロードされてよい。
【００６３】
１５２０に示すように、要求は、ルーティングハンドラから特定のサブサービスにルーティングされてよい。１５２５に示すように、要求への応答は、特定のサブサービスからルーティングハンドラで受信されてよい。１５３０に示すように、応答は、ルーティングハンドラからクライアントに返信されてよい。
【００６４】
上述の事項は、以下の条項を考慮すると、よりよく理解されよう。
１．ルールベースのアクショントリガリングシステムを実施するように構成された複数のコンピューティング装置と、複数のリソースを含むプロバイダネットワークと、
を含むシステムであって、前記ルールベースのアクショントリガリングシステムは、
複数のトリガと複数のアクションとに少なくとも部分的に基づいて、複数のルールであって、それぞれ、前記トリガの各１つまたは複数と、前記アクションの各１つまたは複数とを含む、前記複数のルールを定義し、
前記トリガの特定のトリガを発動する要求であって、当該特定のトリガを発動する１つまたは複数の条件は、前記プロバイダネットワークの前記複数のリソースの監視に少なくとも部分的に基づいて決定される、前記トリガの前記特定のトリガを発動する前記要求を受信し、
前記トリガの前記特定のトリガを含む前記ルールの特定の１つまたは複数を決定し、
前記トリガの前記特定のトリガを含む前記ルールの前記特定の１つまたは複数に前記アクションの特定の１つまたは複数を記述する１つまたは複数のメッセージを生成し、
前記１つまたは複数のメッセージをメッセージングサービスに送信し、且つ、
前記１つまたは複数のメッセージを前記メッセージングサービスから１つまたは複数のアクションハンドラに送るように構成され、前記１つまたは複数のアクションハンドラは、前記１つまたは複数のメッセージに記述された前記アクションの前記特定の１つまたは複数を行うように構成される、
前記システム。
【００６５】
２．前記ルールベースのアクショントリガリングシステムは、
前記トリガの前記特定のトリガを含む前記ルールのうちの追加のルールであって、キュー入れ替えを含む前記追加のルールを決定し、且つ、
前記ルールのうちの前記追加のルールの前記キュー入れ替えに少なくとも部分的に基づいて、キューメッセージをキューサービスに送信する、
ようにさらに構成される、条項１に記載のシステム。
【００６６】
３．前記ルールベースのアクショントリガリングシステムは、
前記トリガのうちの追加のトリガであって、特定の時刻にスケジューリングされた前記追加のトリガを発動する要求を受信し、
前記トリガのうちの前記追加のトリガを含む前記ルールの追加の１つまたは複数に前記アクションの追加の１つまたは複数を記述する１つまたは複数の追加メッセージを生成し、
前記１つまたは複数の追加メッセージを前記メッセージングサービスに送信し、且つ、
前記１つまたは複数の追加メッセージを前記メッセージングサービスから前記１つまたは複数のアクションハンドラに送る
ようにさらに構成され、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージに記述された前記アクションの前記追加の１つまたは複数を行うように構成される、
条項１に記載のシステム。
【００６７】
４．前記１つまたは複数のメッセージに記述された前記アクションの前記特定の１つまたは複数に応答して、前記ルールベースのアクショントリガリングシステムは、
前記トリガのうちの追加の１つまたは複数を発動する要求を受信し、
前記トリガのうちの前記追加の１つまたは複数を含む前記ルールの追加の１つまたは複数を決定し、
前記トリガのうちの前記追加の１つまたは複数を含む前記ルールの前記追加の１つまたは複数に前記アクションの追加の１つまたは複数を記述する１つまたは複数の追加メッセージを生成し、
前記１つまたは複数の追加メッセージを前記メッセージングサービスに送信し、且つ、
前記１つまたは複数の追加メッセージを前記メッセージングサービスから前記１つまたは複数のアクションハンドラに送るようにさらに構成され、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージに記述された前記追加の１つまたは複数のアクションを行うように構成される、
条項１に記載のシステム。
【００６８】
５．１つまたは複数のトリガを含む１つまたは複数のルールであって、当該トリガの１つまたは複数の条件は、複数のリソースを含むプロバイダネットワークで決定される、前記１つまたは複数のルールを決定することと、
前記１つまたは複数のトリガを含む前記１つまたは複数のルールに１つまたは複数のアクションを決定することと、
前記プロバイダネットワークの前記複数のリソースの１つまたは複数を修正することを含む、前記１つまたは複数のアクションを行うことと、
を含む、コンピュータ実施方法。
【００６９】
６．前記１つまたは複数のアクションを記述する１つまたは複数のメッセージを生成することと、
前記１つまたは複数のメッセージをメッセージングサービスに送信することと、
前記１つまたは複数のメッセージを前記メッセージングサービスから１つまたは複数のアクションハンドラに送ることと、
をさらに含む、条項５に記載の方法。
【００７０】
７．前記メッセージングサービスは、キューサービスを含み、前記１つまたは複数のメッセージは、前記キューサービスが管理する１つまたは複数のキューに配置され、前記１つまたは複数のメッセージは、前記１つまたは複数のキューからジョブディスパッチャによって取り除かれる、条項６に記載の方法。
【００７１】
８．前記１つまたは複数のトリガの少なくとも１つを含む追加のルールであって、キュー入れ替えを含む前記追加のルールを決定することと、
前記追加のルールの前記キュー入れ替えに少なくとも部分的に基づいて、キューメッセージをキューサービスに送信することと、
をさらに含む、条項５に記載の方法。
【００７２】
９．特定の時刻に追加のトリガをスケジューリングすることと、
前記特定の時刻になったことに応答して、前記追加のトリガを含む１つまたは複数の追加のルールに１つまたは複数の追加のアクションを決定することと、
前記１つまたは複数の追加のアクションを行うことと、
をさらに含む、条項５に記載の方法。
【００７３】
１０．前記１つまたは複数のアクションを行うことに応答して、前記方法は、
１つまたは複数の追加のトリガを発動することと、
前記１つまたは複数の追加のトリガを含む１つまたは複数の追加のルールを決定することと、
前記１つまたは複数の追加のトリガを含む前記１つまたは複数の追加のルールに１つまたは複数の追加のアクションを決定することと、
前記１つまたは複数の追加のアクションを行うことと、
をさらに含む、条項５に記載の方法。
【００７４】
１１．前記１つまたは複数の条件は、前記プロバイダネットワークの前記複数のリソースの監視に少なくとも部分的に基づいて決定され、前記監視は、１つまたは複数のサービスログの監視、１つまたは複数のサービスメトリックの監視、１つまたは複数のデータストリームの監視、１つまたは複数の警告状態の変更の監視、または、それらの組み合わせを含む、条項５に記載の方法。
【００７５】
１２．複数のトリガと複数のアクションとに少なくとも部分的に基づいて、複数のルールを定義するユーザ入力を受信することをさらに含み、前記複数のルールは、それぞれ、前記トリガの各１つまたは複数と、前記アクションの各１つまたは複数とを含む、
条項５に記載の方法。
【００７６】
１３．プログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は、
複数のトリガと複数のアクションとに少なくとも部分的に基づいて、複数のルールであって、それぞれ、前記トリガの各１つまたは複数と、前記アクションの各１つまたは複数を含む、前記複数のルールを定義することと、
前記トリガの特定の１つまたは複数のための１つまたは複数の条件であって、複数のリソースを含むプロバイダネットワークにおいて決定される前記１つまたは複数の条件に合致することを決定することと、
前記トリガの前記特定の１つまたは複数を含む前記ルールの特定の１つまたは複数を決定することと、
前記トリガの前記特定の１つまたは複数を含む前記ルールの前記特定の１つまたは複数に前記アクションの特定の１つまたは複数を記述する１つまたは複数のメッセージを送信することと、を行うようにコンピュータによって実行可能であり、１つまたは複数のアクションハンドラが、前記１つまたは複数のメッセージを受信し、前記１つまたは複数のメッセージに記述された前記アクションの前記特定の１つまたは複数を行うように構成される、
前記コンピュータ可読記憶媒体。
【００７７】
１４．前記１つまたは複数のメッセージを送信する際、前記プログラム命令は、
前記１つまたは複数のメッセージをメッセージングサービスに送信することと、
前記１つまたは複数のメッセージを前記メッセージングサービスから前記１つまたは複数のアクションハンドラに送ることと
を行うようにさらにコンピュータによって実行可能である、条項１３に記載のコンピュータ可読記憶媒体。 
【００７８】
１５．前記ルールの少なくとも１つは、前記トリガの１つを前記アクションの複数に結合する、条項１３に記載のコンピュータ可読記憶媒体。
【００７９】
１６．前記プログラム命令は、
前記トリガの前記特定の１つまたは複数を含む前記ルールのうちの追加のルールであって、キュー入れ替えを含む前記追加のルールを決定することと、
前記ルールのうちの前記追加のルールの前記キュー入れ替えに少なくとも部分的に基づいて、キューメッセージをキューサービスに送信することと、
を行うようにさらにコンピュータによって実行可能である、条項１３に記載のコンピュータ可読記憶媒体。
【００８０】
１７．前記プログラム命令は、
特定の時刻に前記トリガのうちの追加のトリガをスケジューリングすることと、
前記トリガのうちの前記追加のトリガを含む前記ルールの追加の１つまたは複数に前記アクションの追加の１つまたは複数を記述する１つまたは複数の追加メッセージを送信することと、を行うようにさらにコンピュータによって実行可能であり、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージを受信し、前記１つまたは複数の追加メッセージに記述された前記アクションのうちの前記追加の１つまたは複数を行うように構成される、
条項１３に記載のコンピュータ可読記憶媒体。
【００８１】
１８．前記１つまたは複数のメッセージに記述された前記アクションの前記特定の１つまたは複数を行うことに応答して、前記プログラム命令は、
前記トリガのうちの追加の１つまたは複数を発動することと、
前記トリガのうちの前記追加の１つまたは複数を含む前記ルールの追加の１つまたは複数を決定することと、
前記トリガのうちの前記追加の１つまたは複数を含む前記ルールの前記追加の１つまたは複数に前記アクションの追加の１つまたは複数を記述する１つまたは複数の追加メッセージを送信することと、
を行うように、さらにコンピュータによって実行可能で、前記１つまたは複数のアクションハンドラは、前記１つまたは複数の追加メッセージを受信し、前記１つまたは複数の追加メッセージに記述された前記アクションの前記追加の１つまたは複数を行うように構成される、条項１３に記載のコンピュータ可読記憶媒体。
【００８２】
１９．前記１つまたは複数の条件は、前記プロバイダネットワークの前記複数のリソースの監視に少なくとも部分的に基づいて決定され、前記監視は、１つまたは複数のサービスログの監視、１つまたは複数のサービスメトリックの監視、１つまたは複数のデータストリームの監視、１つまたは複数の警告状態の変更の監視、または、それらの組み合わせを含む、条項１３に記載のコンピュータ可読記憶媒体。
【００８３】
２０．前記複数のルールを定義する際、前記プログラム命令は、
前記複数のルールを定義するユーザ入力を受信すること
を行うようにさらにコンピュータによって実行可能であり、前記ユーザ入力は、１つもしくは複数の所定のアクション、１つもしくは複数のカスタムアクション、または、１つもしくは複数の所定のアクションと１つもしくは複数のカスタムアクション、からの選択を含む、条項１３に記載のコンピュータ可読記憶媒体。
【００８４】
さらに、上記事項は、以下の追加の条項を考慮することによってよりよく理解されよう。
１．複数のサブサービスを実施するように構成された複数のコンピューティング装置と、ルーティングハンドラとを含むシステムであって、前記ルーティングハンドラは、
前記複数のサブサービスの特定のサブサービスの特定の動作を指定する要求をクライアントから受信することであって、前記複数のサブサービスは、ルールサブサービスとアクションサブサービスを含み、前記ルールサブサービスは、複数のトリガと複数のアクションを用いて複数のルールを定義する１つまたは複数の動作を含み、前記ルールの個々のルールは、前記トリガの各１つまたは複数を前記アクションの各１つまたは複数に結合させるように定義され、前記アクションサブサービスは、複数のリソースを含むプロバイダネットワークにおいて前記アクションを行う１つまたは複数の動作を含む、前記要求を前記クライアントから受信すること、
前記要求の前記特定の動作を決定すること、
前記特定の動作に少なくとも部分的に基づいて、前記サブサービスの前記特定のサブサービスを決定することであって、前記サブサービスの前記特定のサブサービスは、ルーティングマップを用いて決定され、前記ルーティングマップは、データストアから前記ルーティングハンドラに動的にロードされる、前記特定のサブサービスを決定すること、
前記要求を前記サブサービスの前記特定のサブサービスにルーティングすること、
前記サブサービスの前記特定のサブサービスから前記要求への応答を受信すること、且つ、
前記応答を前記クライアントに返信すること、
を行うように構成される、前記システム。
【００８５】
２．前記複数のサブサービスは、スケジューリングサブサービスを含み、前記スケジューリングサブサービスは、特定の時刻に前記アクションの個々のアクションをスケジューリングする１つまたは複数の動作を含む、条項１に記載のシステム。
【００８６】
３．前記ルールサブサービスの前記１つまたは複数の動作の修正、または、前記アクションサブサービスの前記１つまたは複数の動作の修正に応答して、前記ルーティングマップに少なくとも部分的に基づいて、更新されたルーティングマップが生成され、前記更新されたルーティングマップは、１つまたは複数の新しいまたは修正された動作から前記サブサービスの特定のサブサービスへのマッピングを含み、前記更新されたルーティングマップは、前記データストアに記憶される、条項１に記載のシステム。
【００８７】
４．前記特定のサブサービスは、前記ルールサブサービスを含み、前記特定の動作は、特定のトリガを発動する動作を含み、前記特定のトリガを発動する前記動作を行う際、前記ルールサブサービスは、
前記特定のトリガを含む前記ルールの特定の１つまたは複数を決定し、且つ、
前記特定のトリガを含む前記ルールの前記特定の１つまたは複数に前記アクションの特定の１つまたは複数を記述する１つまたは複数のメッセージを生成するように、
構成される、条項１に記載のシステム。
【００８８】
５．ルーティングハンドラにおいて、クライアントから、複数のサブサービスの特定のサブサービスの特定の動作を指定する要求を受信することであって、前記複数のサブサービスは、複数のルールを定義する１つまたは複数の動作を含み、前記ルールの個々のルールは、複数のトリガの各１つまたは複数を複数のアクションの各１つまたは複数に結合するように定義され、前記複数のサブサービスは、複数のリソースを含むプロバイダネットワークにおいて前記複数のアクションを行うための１つまたは複数の動作を含む、前記要求を受信することと、
前記ルーティングハンドラにおいて、前記要求の前記特定の動作を決定することと、
前記ルーティングハンドラにおいて、前記特定の動作に少なくとも部分的に基づいて、前記サブサービスの前記特定のサブサービスを決定することであって、前記サブサービスの前記特定のサブサービスは、前記ルーティングハンドラと１つまたは複数の追加のルーティングハンドラによって共有されるルーティングマップを用いて決定される、前記特定のサブサービスを決定することと、
前記要求を前記サブサービスの前記特定のサブサービスにルーティングすることと、
を含む、コンピュータ実施方法。
【００８９】
６．前記複数のサブサービスは、ルールサブサービスを含み、前記ルールサブサービスは、前記複数のルールを定義する前記１つまたは複数の動作を含み、前記ルールサブサービスは、前記トリガの１つまたは複数を発動する１つまたは複数の動作を含む、条項５に記載の方法。
【００９０】
７．前記複数のサブサービスは、アクションサブサービスを含み、前記アクションサブサービスは、前記複数のリソースを含む前記プロバイダネットワークにおいて前記複数のアクションを行うための前記１つまたは複数の動作を含む、条項５に記載の方法。
【００９１】
８．前記複数のサブサービスは、スケジューリングサブサービスを含み、前記スケジューリングサブサービスは、特定の時刻に前記アクションの個々のアクションをスケジューリングする１つまたは複数の動作を含む、条項５に記載の方法。
【００９２】
９．前記ルーティングマップは、データストアから前記ルーティングハンドラに動的にロードされ、前記方法は、
前記ルーティングマップに少なくとも部分的に基づいて、更新されたルーティングマップを生成することであって、前記更新されたルーティングマップは、１つまたは複数の新しいまたは修正された動作を前記サブサービスの特定のサブサービスにマッピングすることを含む、前記更新されたルーティングマップを生成することと、
前記更新されたルーティングマップを前記データストアに記憶することと、
をさらに含む、条項５に記載の方法。
【００９３】
１０．前記特定のサブサービスは、ルールサブサービスを含み、前記特定の動作は、特定のトリガを発動する動作を含み、前記特定のトリガを発動する前記動作を行う際、前記方法は、
前記特定のトリガを含む前記ルールの特定の１つまたは複数を決定することと、
前記特定のトリガを含む前記ルールの前記特定の１つまたは複数に前記アクションの特定の１つまたは複数を記述する１つまたは複数のメッセージを生成することと、
をさらに含む、条項５に記載の方法。
【００９４】
１１．前記ルーティングハンドラにおいて、前記サブサービスの前記特定のサブサービスからの前記要求への応答を受信することと、
前記応答を前記クライアントに返信することと、
をさらに含む、条項５に記載の方法。
【００９５】
１２．前記要求は、特定のＨＴＴＰクライアントを用いて、前記サブサービスの前記特定のサブサービスにルーティングされ、追加の要求は、追加のＨＴＴＰクライアントを用いて前記サブサービスのうちの別のサブサービスにルーティングされる、条項５に記載の方法。
【００９６】
１３．プログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は、
ルーティングハンドラにおいてクライアントから複数のサブサービスの特定のサブサービスの特定の動作を指定する要求を受信することであって、前記複数のサブサービスは、複数のルールを定義する１つまたは複数の動作を含み、前記ルールの個々のルールは、複数のトリガの各１つまたは複数を複数のアクションの各１つまたは複数に結合するように定義され、前記複数のサブサービスは、複数のリソースを含むプロバイダネットワークにおいて前記複数のアクションを行うための１つまたは複数の動作を含む、前記要求を受信することと、
前記ルーティングハンドラにおいて、前記要求の前記特定の動作を決定することと、
前記ルーティングハンドラにおいて、前記特定の動作に少なくとも部分的に基づいて、前記サブサービスの前記特定のサブサービスを決定することであって、前記サブサービスの前記特定のサブサービスは、データストアからロードされ、前記ルーティングハンドラと１つまたは複数の追加のルーティングハンドラとによって共有されるルーティングマップを用いて、決定される、前記特定のサブサービスを決定することと、
前記サブサービスの前記特定のサブサービスに前記要求をルーティングすることと、
を行うようにコンピュータによって実行可能である、前記コンピュータ可読記憶媒体。
【００９７】
１４．前記複数のサブサービスは、ルールサブサービスを含み、前記ルールサブサービスは、前記複数のルールを定義する前記１つまたは複数の動作を含み、前記ルールサブサービスは、前記トリガの１つまたは複数を発動するための１つまたは複数の動作を含む、条項１３に記載のコンピュータ可読記憶媒体。
【００９８】
１５．前記複数のサブサービスは、アクションサブサービスを含み、前記アクションサブサービスは、前記複数のリソースを含む前記プロバイダネットワークにおいて前記複数のアクションを行う前記１つまたは複数の動作を含む、条項１３に記載のコンピュータ可読記憶媒体。
【００９９】
１６．前記複数のサブサービスは、スケジューリングサブサービスを含み、前記スケジューリングサブサービスは、特定の時刻に前記アクションの個々のアクションをスケジューリングする１つまたは複数の動作を含む、条項１３に記載のコンピュータ可読記憶媒体。
【０１００】
１７．前記プログラム命令は、
前記ルーティングマップに少なくとも部分的に基づいて、更新されたルーティングマップを生成することであって、前記更新されたルーティングマップは、１つまたは複数の新しいまたは修正された動作を前記サブサービスの特定のサブサービスにマッピングすることを含む、前記更新されたルーティングマップを生成することと、
前記更新されたルーティングマップを前記データストアに記憶することと、
を行うようにさらにコンピュータによって実行可能である、条項１３に記載のコンピュータ可読記憶媒体。
【０１０１】
１８．前記特定のサブサービスは、ルールサブサービスを含み、前記特定の動作は、特定のトリガを発動する動作を含み、前記特定のトリガを発動する前記動作を行う際、前記ルールサブサービスは、
前記特定のトリガを含む前記ルールの特定の１つまたは複数を決定することと、
前記特定のトリガを含む前記ルールの前記特定の１つまたは複数に前記アクションの特定の１つまたは複数を記述する１つまたは複数のメッセージを生成することと、
を行うように構成される、
条項１３に記載のコンピュータ可読記憶媒体。
【０１０２】
１９．前記プログラム命令は、
前記サブサービスの前記特定のサブサービスから前記要求に対する応答を前記ルーティングハンドラにおいて受信することと、
前記応答を前記クライアントに返信することと、
を行うようにさらにコンピュータによって実行可能である、条項１３に記載のコンピュータ可読記憶媒体。
【０１０３】
２０．前記要求は、特定のＨＴＴＰクライアントを用いて前記サブサービスの前記特定のサブサービスにルーティングされ、追加の要求は、追加のＨＴＴＰクライアントを用いて前記サブサービスの別のサブサービスにルーティングされ、前記特定のＨＴＴＰクライアントは、非同期入力／出力を用いて前記要求をルーティングするように構成される、条項１３に記載のコンピュータ可読記憶媒体。
【０１０４】
例示のコンピュータシステム 
少なくとも一部の実施形態において、本明細書に記載の技術の１つまたは複数の一部または全てを実施するコンピュータシステムは、汎用コンピュータシステムを含んでよい。汎用コンピュータシステムは、１つまたは複数のコンピュータ可読媒体を含む、または、当該コンピュータ可読媒体にアクセスするように構成される。図１６は、このような汎用コンピューティング装置３０００を示す。図示の実施形態においては、コンピューティング装置３０００は、入力／出力（Ｉ／Ｏ）インタフェース３０３０を介してシステムメモリ３０２０に接続された１つまたは複数のプロセッサ３０１０を含む。コンピューティング装置３０００は、Ｉ／Ｏインタフェース３０３０に接続されたネットワークインタフェース３０４０をさらに含む。
【０１０５】
様々な実施形態において、コンピューティング装置３０００は、１つのプロセッサ３０１０を含むユニプロセッサシステム、または、幾つか（例えば、２、４、８、または、他の適切な数）のプロセッサ３０１０を含むマルチプロセッサシステムであってよい。プロセッサ３０１０は、命令を実行できる任意の適切なプロセッサを含んでよい。例えば、様々な実施形態において、プロセッサ３０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、または、ＭＩＰＳ  ＩＳＡ、または、任意の他の適切なＩＳＡ等、様々な命令セットアーキテクチャ（ＩＳＡ）のいずれかを実施する汎用または組み込みプロセッサであってよい。マルチプロセッサシステムにおいて、各プロセッサ３０１０は、必ずしも同じＩＳＡを実施しないが、通常は実施してもよい。
【０１０６】
システムメモリ３０２０は、プロセッサ（複数可）３０１０によってアクセス可能なプログラム命令及びデータを記憶するように構成されてよい。様々な実施形態において、システムメモリ３０２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期型ダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ型メモリ、または、任意の他の種類のメモリ等、任意の適切なメモリ技術を使用して実施されてよい。図示の実施形態においては、上記の方法、技術、及び、データ等、１つまたは複数の所望の機能を実施するプログラム命令及びデータは、コード（すなわち、プログラム命令）３０２５及びデータ３０２６のように、システムメモリ３０２０内に記憶されていることが示されている。
【０１０７】
一実施形態において、Ｉ／Ｏインタフェース３０３０は、ネットワークインタフェース３０４０または他の周辺インタフェースを含む、プロセッサ３０１０、システムメモリ３０２０、及び、装置内の任意の周辺機器間のＩ／Ｏトラフィックを調整するように構成されてよい。ある実施形態においては、Ｉ／Ｏインタフェース３０３０は、任意の必要なプロトコル、タイミング、または、他のデータの変換を行って、１つのコンポーネント（例えば、システムメモリ３０２０）からのデータ信号を別のコンポーネント（例えば、プロセッサ３０１０）での使用に適したフォーマットに変換してよい。ある実施形態においては、Ｉ／Ｏインタフェース３０３０は、例えば、周辺コンポーネントインターコネクト（ＰＣＩ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変形等、様々な種類の周辺バスを通して取り付けられる装置に対する支援を含んでよい。ある実施形態においては、Ｉ／Ｏインタフェース３０３０の機能は、例えば、ノースブリッジ及びサウスブリッジ等、２つまたは複数の別個のコンポーネントに分割されてよい。また、ある実施形態においては、システムメモリ３０２０へのインタフェース等、Ｉ／Ｏインタフェース３０３０の機能の一部または全ては、プロセッサ３０１０に直接、組み込まれてよい。
【０１０８】
ネットワークインタフェース３０４０は、コンピューティング装置３０００と、ネットワークまたはネットワーク３０５０に取り付けられた他の装置３０６０との間のデータ交換を可能にするように構成されてよい。様々な実施形態においては、ネットワークインタフェース３０４０は、例えば、イーサネット（登録商標）ネットワークの種類等、任意の適切な有線または無線の一般的なデータネットワークを介して通信を支援してよい。従って、ネットワークインタフェース３０４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等、テレコミュニケーション／テレフォニーネットワークを介して、ファイバーチャンネルＳＡＮ等、ストレージエリアネットワークを介して、または、任意の他の適切な種類のネットワーク及び／もしくはプロトコルを介して、通信を支援してよい。
【０１０９】
ある実施形態においては、システムメモリ３０２０は、対応する方法及び装置の実施形態を実施するために上記プログラム命令及びデータを記憶するように構成されたコンピュータ可読（すなわち、コンピュータアクセス可能な）媒体の一実施形態であってよい。しかしながら、他の実施形態においては、プログラム命令及び／またはデータは、受信、送信、または、異なる種類のコンピュータ可読媒体に記憶されてよい。一般的に言えば、コンピュータ可読媒体は、Ｉ／Ｏインタフェース３０３０を介してコンピューティング装置３０００に接続されたディスクまたはＤＶＤ／ＣＤ等、磁気または光学媒体等の非一時的記憶媒体またはメモリ媒体を含んでよい。非一時的コンピュータ可読記憶媒体は、システムメモリ３０２０または別の種類のメモリ等、コンピューティング装置３０００のある実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等、任意の揮発性または不揮発性媒体も含んでよい。さらに、コンピュータ可読媒体は、ネットワークインタフェース３０４０を介して実施され得る等の、ネットワーク及び／または無線リンク等の通信媒体を介して伝達される、電気、電磁気、もしくは、デジタルの信号等、送信媒体または信号を含んでよい。様々な実施形態において、図１６に示すコンピューティング装置等の複数のコンピューティング装置の一部または全てを使用して、様々な実施形態で記載の機能を実施してよい。例えば、様々な異なる装置及びサーバで実行しているソフトウェアコンポーネントは、協働して機能を提供してよい。ある実施形態においては、記載した機能の一部は、汎用コンピュータシステムを用いて実施することに加えて、または、それに代えて、記憶装置、ネットワーク装置、もしくは、専用コンピュータシステムを用いて実施してよい。本明細書で使用される「コンピューティング装置」という語は、少なくともこれらの種類の装置の全てを指すが、これらの種類の装置に限らない。
【０１１０】
様々な実施形態は、コンピュータ可読媒体上で、上記記載に従って実施される命令及び／またはデータを受信、送信、または、記憶することをさらに含んでよい。一般的に言うと、コンピュータ可読媒体は、磁気または光学媒体等の記憶媒体またはメモリ媒体、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭや、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の揮発性または不揮発性媒体を含んでよい。ある実施形態においては、コンピュータ可読媒体は、ネットワーク及び／または無線リンク等の通信媒体を介して伝達される、電気、電磁気、もしくは、デジタルの信号等、送信媒体または信号も含んでよい。
【０１１１】
図に示し、本明細書に記載した様々な方法は、方法の実施形態例を表す。方法は、ソフトウェア、ハードウェア、または、それらの組み合わせで実施されてよい。様々な方法において、ステップの順序は、変更されてよく、様々な要素が追加、並べ替え、組み合わせ、省略、修正等されてよい。ステップのうちの様々なステップは、自動で（例えば、ユーザ入力によって直接、プロンプトされることなく）、及び／または、プログラムで（例えば、プログラム命令に従って）行われてよい。
【０１１２】
本明細書の発明の記載で使用される語は、特定の実施形態の記載のみを目的としており、発明を制限することは意図していない。発明の記載及び請求項で使用される、単数形の「ａ」「ａｎ」「ｔｈｅ」は、文脈から明らかに別の意味を示さない限り、複数形を含むものとする。本明細書で使用される「ａｎｄ／ｏｒ（及び／または）」という語は、関連する列挙された項目の１つまたは複数のいずれかまたは全ての可能な組み合わせを指し、含むと理解されよう。「ｉｎｃｌｕｄｅｓ」「ｉｎｃｌｕｄｉｎｇ」「ｃｏｍｐｒｉｓｅｓ」、及び／または、「ｃｏｍｐｒｉｓｉｎｇ」という語は、本明細書で使用される場合、記載した特徴、整数、ステップ、動作、要素、及び／または、コンポーネントの存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／または、それらのグループの存在または追加を除外しないこともさらに理解されよう。
【０１１３】
本明細書で使用する「ｉｆ（の場合）」という語は、文脈に応じて、「ｗｈｅｎ（時）」または「ｕｐｏｎ（すると）」または、「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（決定に応答して）」または「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ（検出に応答して）」を意味すると解釈されてよい。同様に、「ｉｆ  ｉｔ  ｉｓ  ｄｅｔｅｒｍｉｎｅｄ（と決定される場合）」または「ｉｆ［ａ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］ｉｓ  ｄｅｔｅｃｔｅｄ（記載の条件またはイベント）が検出された場合」という句は、文脈に応じて、「ｕｐｏｎ  ｄｅｔｅｒｍｉｎｉｎｇ（決定すると）」または「ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｒｍｉｎｉｎｇ（決定に応答して）」または「（記載の条件またはイベント）を検出すると（ｕｐｏｎ  ｄｅｔｅｃｔｉｎｇ［ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］」または「（記載された条件またはイベント）の検出に応答して（ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ｄｅｔｅｃｔｉｎｇ［ｔｈｅ  ｓｔａｔｅｄ  ｃｏｎｄｉｔｉｏｎ  ｏｒ  ｅｖｅｎｔ］」を意味すると解釈してよい。
【０１１４】
第１、第２等の語が、様々な要素の記載に本明細書で使用され得るが、これらの要素は、これらの語によって限定されるべきではないことも理解されよう。これらの用語は、１つの要素と別の要素を区別するためにのみ用いられる。例えば、本発明の範囲を逸脱することなく、第１の接点は、第２の接点と称してもよく、同様に、第２の接点は、第１の接点と称してもよい。第１の接点と第２の接点は両方とも接点であるが、同じ接点ではない。
【０１１５】
請求の主題が完全に分かるように、多くの具体的詳細を記載している。しかしながら、請求の主題は、これらの具体的詳細なしに実践してよいことを当業者は理解されよう。他の例では、当業者であれば知っている方法、装置、または、システムは、請求の主題を曖昧にしないように詳細に記載しなかった。本開示の利益を有する当業者にとっては明らかであるように、様々な修正及び変更を行ってよい。このような修正及び変更全てを含むことを意図しており、従って、上記記載は、制限的ではなく例示的な意味であるとみなすべきである。
【図１】
0006588544.tif 000002
【図２】
0006588544.tif 000003
【図３】
0006588544.tif 000004
【図４Ａ】
0006588544.tif 000005
【図４Ｂ】
0006588544.tif 000006
【図４Ｃ】
0006588544.tif 000007
【図４Ｄ】
0006588544.tif 000008
【図５Ａ】
0006588544.tif 000009
【図５Ｂ】
0006588544.tif 000010
【図６】
0006588544.tif 000011
【図７】
0006588544.tif 000012
【図８】
0006588544.tif 000013
【図９】
0006588544.tif 000014
【図１０】
0006588544.tif 000015
【図１１】
0006588544.tif 000016
【図１２】
0006588544.tif 000017
【図１３】
0006588544.tif 000018
【図１４】
0006588544.tif 000019
【図１５】
0006588544.tif 000020
【図１６】
0006588544.tif 000021