(57)【特許請求の範囲】
【請求項１】
プロバイダネットワークの複数のコンピューティングデバイスにおいて実施されるアプリケーション展開サービスの１つまたは複数のコンポーネントを備え、
前記１つまたは複数のコンポーネントは、
前記プロバイダネットワークの１つまたは複数の実行プラットフォームにおいて実行されることになる特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信し、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信し、前記特定のエンドポイントは、前記特定のアプリケーションと関連付けられた複数の展開タスクカテゴリのうちの少なくとも第１の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになり、
前記１つまたは複数のクライアントの特定のクライアントによって前記特定のエンドポイントに向けられたメッセージからペイロードを抽出し、
前記ペイロードの検査に少なくとも部分的に基づいて、１つまたは複数のセキュリティ確認オペレーションが前記第１の展開タスクカテゴリの展開タスクの実施の前に実行されることになると決定し、
前記１つまたは複数のセキュリティ確認オペレーションが成功したと決定したことに応答して、前記展開タスクを実施し、前記展開タスクは、前記ペイロードで示される展開アーチファクトのバージョンをリポジトリに記憶することを含む
ように構成される、システム。
【請求項２】
前記１つまたは複数のコンポーネントは、
前記特定のエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第１のセットの表示、及び前記通信チャネルに対して確立される異なるエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第２のセットの表示を記憶するように構成される、請求項１に記載のシステム。
【請求項３】
前記１つまたは複数のコンポーネントは、
前記通信チャネルの第２のエンドポイントの確立を開始するように構成され、前記第２のエンドポイントは、前記複数の展開タスクカテゴリのうちの少なくとも第２の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになる、請求項１に記載のシステム。
【請求項４】
前記１つまたは複数のセキュリティ確認オペレーションは、
（ａ）多段階認証プロトコルまたは（ｂ）多者認証プロトコルのうちの１つまたは複数の使用を含む、請求項１に記載のシステム。
【請求項５】
前記複数の展開タスクカテゴリは、
（ａ）ソースコードを更新すること、（ｂ）実行可能パッケージを展開すること、（ｃ）アプリケーション構成設定を修正すること、または（ｄ）アプリケーションを実行するために使用されるリソースセットを修正すること、のうちの１つまたは複数を含む、請求項１に記載のシステム。
【請求項６】
プロバイダネットワークの１つまたは複数のコンピューティングデバイスにおいて実施されるアプリケーション展開サービスにおいて、
特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信することと、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信することと、
前記特定のエンドポイントを介して受信される第１のメッセージに応答して、前記第１のメッセージ及び前記特定のアプリケーションに対応する第１の展開タスクの実施の前に、１つまたは複数のセキュリティ確認オペレーションが実行されることになると決定することと、
前記１つまたは複数のセキュリティ確認オペレーションを完了したことに応答して、前記第１のメッセージで示される少なくとも第１のアーチファクトを使用して前記第１の展開タスクを実施することと、
を実行すること、を備える、方法。
【請求項７】
前記特定のエンドポイントの前記指示は、
（ａ）電子メールアドレス、（ｂ）ショートメッセージサービス（ＳＭＳ）宛先アドレス、または（ｃ）ファイル転送宛先アドレスのうちの１つを含む、請求項６に記載の方法。
【請求項８】
前記アプリケーション展開サービスによって、
前記特定のエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第１のセットの表示、及び前記通信チャネルに対して確立される異なるエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第２のセットの表示を記憶すること、を実行することをさらに備える、請求項６に記載の方法。
【請求項９】
前記第１の展開タスクは、前記特定のアプリケーションの複数の展開タスクカテゴリの第１の展開タスクカテゴリに属し、前記アプリケーション展開サービスによって、
前記通信チャネルの第２のエンドポイントの確立を開始すること、を実行することををさらに備え、前記第２のエンドポイントは、前記複数の展開タスクカテゴリの少なくとも第２の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになる、請求項６に記載の方法。
【請求項１０】
前記１つまたは複数のセキュリティ確認オペレーションは、
（ａ）多段階認証プロトコル、または（ｂ）多者認証プロトコル、のうちの１つまたは複数の使用を含む、請求項６に記載の方法。
【請求項１１】
前記第１の展開タスクを前記実施することは、
前記第１のメッセージに含まれる特定のソースコードファイルが記憶されることになるソースコードの階層内の特定の位置を決定することと、
前記特定のソースコードファイルを前記特定の位置に記憶することと、
前記特定のソースコードファイルを使用して、前記特定のアプリケーションの実行可能バージョンを生成することと、
前記実行可能バージョンを使用して、１つまたは複数の実行プラットフォームにおいて前記特定のアプリケーションの実行をインスタンス化することと、を含む、請求項６に記載の方法。
【請求項１２】
前記アプリケーション展開サービスによって、
前記特定のエンドポイントにおいて第２のメッセージを受信したことに応答して、前記第２のメッセージで示される第２の展開タスクを実施する前に、スケジュールされることになる追加のセキュリティ確認オペレーションがないと決定すること、を実行することをさらに備える、請求項６に記載の方法。
【請求項１３】
前記アプリケーション展開サービスによって、
プログラムインタフェースを介して、前記特定のアプリケーションと関連付けられた認可されたエンティティが、前記通信チャネルを介して展開アーチファクトを提出する前記１つまたは複数のクライアントの権利を取り消したことの指示を受信することと、
前記特定のエンドポイントにおいて前記指示に続く第２のメッセージを受信したことに応答して、前記第２のメッセージを破棄することと、を実行することをさらに備える、請求項６に記載の方法。
【請求項１４】
前記アプリケーション展開サービスによって、
第２のメッセージが前記特定のエンドポイントと関連付けられた１つまたは複数のデータ転送制約に違反すると決定したことに少なくとも部分的に基づいて、前記特定のエンドポイントに向けられた前記第２のメッセージを拒否すること、を実行することをさらに備える、請求項６に記載の方法。
【請求項１５】
１つまたは複数のプロセッサと、
１つまたは複数のメモリと、を備え、
前記１つまたは複数のメモリは、前記１つまたは複数のプロセッサ上で実行されるときに、
特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信し、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信し、
前記特定のエンドポイントを介して受信される第１のメッセージに応答して、前記第１のメッセージ及び前記特定のアプリケーションに対応する第１の展開タスクの実施の前に、１つまたは複数のセキュリティ確認オペレーションが実行されることになると決定し、
前記１つまたは複数のセキュリティ確認オペレーションが完了したことに応答して、前記第１のメッセージで示される少なくとも第１のアーチファクトを使用して前記第１の展開タスクを実施する、
ように構成される、アプリケーション展開サービスの１つまたは複数のコンポーネントを実施するプログラム命令を記憶する、システム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの会社及び他の組織が、それらの運用をサポートするために、多数のコンピューティングシステムを、同一場所に配置され（例えば、ローカルネットワークの一部として）または代わりに、複数の別個の地理的位置に配置されている（例えば、１つもしくは複数のプライベートもしくはパブリック仲介ネットワークを介して接続される）コンピューティングシステムなどと相互接続するコンピュータネットワークを運用する。例えば、単一の組織によって、及び単一の組織の代わりに運用されるプライベートデータセンタ、ならびにコンピューティングリソースを顧客に提供するビジネスとしてのエンティティによって運用されるパブリックデータセンタなど、かなりの数の相互接続されたコンピューティングシステムを収容するデータセンタが普通になっている。いくつかのパブリックデータセンタのオペレータは、種々の顧客によって保有されるハードウェアのために、ネットワークアクセス、電力、及びセキュアなインストール設備を提供しつつ、その他のパブリックデータセンタのオペレータは、それらの顧客による使用のために利用可能とされるハードウェアリソースをも含む「完全なサービス」設備を提供する。
【０００２】
いくつかの大規模なクラウドベースのプロバイダネットワークは、様々なアプリケーションを実施するために使用することができる仮想コンピューティングサービスを含む、いくつかのネットワークアクセス可能なサービスを実施する。例えば、仮想コンピューティングサービスの顧客は、指定された性能能力を有するいくつかの数のゲスト仮想マシン（計算インスタンスとしても知られる）の割り当てを要求することがあり、多層ウェブべースのアプリケーションをセットアップするために、ゲスト仮想マシンを、ウェブサーバ、アプリケーションサーバ、及びデータベースサーバなどとして構成することがある。データベースサービス及びストレージサービスなどの、プロバイダネットワークのいくつかの追加サービスは、複合アプリケーションの種々のコンポーネントに対して利用されることがある。
【０００３】
プロバイダネットワークのいくつかのサービスは、共通に使用されるパターンまたは一連のタスクを達成するために他のサービスのコンポーネントを利用することがある。例えば、或るタイプのアプリケーション（Ｒｕｂｙ、ＰＨＰ、またはＪａｖａ（商標）などの一般的な言語で記述されたウェブベースのアプリケーションなど）について、アプリケーションの展開ワークフローは、プロバイダネットワークの展開サービスを使用して、大いに、または完全に自動化されることがある。展開サービスの顧客が十分な構成メタデータ及びソースファイルまたは実行可能ファイルの集合を提供する場合、展開サービスは、アプリケーションをオンラインにするのに必要なコンピューティング、ストレージ、及びネットワーキングサービスの適切なリソースを割り当て、構成することが可能な場合がある。いくつかのケースでは、サービスはまた、アプリケーションの性能を監視し、負荷の変化に基づいて必要に応じてリソースを追加または削除することが可能な場合がある。しかしながら、アプリケーションの開発者の観点からは、アプリケーション展開サービスと通信するのに一般的に利用可能な機構のうちのいくつかは、ある程度は重荷となることがある。特に、即時的なコード開発の速さ及び大多数の開発者を有するアジャイルソフトウェア開発の組織では、展開サービスの通信機構が時に、時に生産性を制限することがある。
【図面の簡単な説明】
【０００４】
【図１】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのために、カスタマイズされた通信チャネルをオンデマンドで確立することができる実施例のシステム環境を示す。
【図２】少なくともいくつかの実施形態に従った、クライアントとアプリケーション展開サービスの制御プレーンコンポーネントとの間の実施例のやり取りを示す。
【図３】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルに対して記憶することができる実施例のメタデータ要素を示す。
【図４ａ】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。
【図４ｂ】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。
【図４ｃ】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。
【図４ｄ】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。
【図４ｅ】少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。
【図５】少なくともいくつかの実施形態に従った、アプリケーション展開ワークフローを実施するために使用することができるプロバイダネットワークサービスの実施例を示す。
【図６】少なくともいくつかの実施形態に従った、展開関連アーチファクトを送信するためのカスタム通信チャネルを構成及び使用するように実行することができるオペレーションの態様を示すフローチャートである。
【図７】少なくともいくつかの実施形態で使用することができる実施例のコンピューティングデバイスを示すブロック図である。
【０００５】
本明細書では、実施形態がいくつかの実施形態及び例示的な図面についての例として説明されるが、当業者は、実施形態が説明される実施形態または図面に限定されないことを認識するであろう。図面及びその詳細な説明は、実施形態を開示される特定の形式に限定することを意図しておらず、逆に、その意図は、添付の特許請求の範囲によって定義される精神及び範囲に含まれる全ての変形、均等物及び代替物に及ぶことを理解するべきである。本明細書で使用される表題は、構成的な目的で使用されているにすぎず、詳細な説明及び特許請求の範囲の範囲を限定するために使用することを意図していない。本出願を通じて使用されるように、単語「ｍａｙ」は、必須の意味（すなわち、ｍｕｓｔを意味する）ではなく、許容的な意味（すなわち、ｈａｖｉｎｇ  ｔｈｅ  ｐｏｔｅｎｔｉａｌ  ｔｏを意味する）で使用される。同様に、単語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」は、ｉｎｃｌｕｄｉｎｇ，ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ、を意味する。
【発明を実施するための形態】
【０００６】
クライアントとプロバイダネットワークのアプリケーション展開サービスとの間の通信のためのカスタマイズされたセキュア通信チャネルをサポートする方法及び装置の種々の実施形態が説明される。インターネット及び／または他のネットワークを介してアクセス可能な１つまたは複数のサービス（種々のタイプの複数テナント及び／または単一テナントのクラウドベースのコンピューティングまたはストレージサービスなど）をクライアントまたは顧客の分散されたセットに提供する会社または公的部門組織などのエンティティによってセットアップされるネットワークは、本明細書ではプロバイダネットワークと呼ばれても良い。プロバイダネットワークはまた、「パブリッククラウド」環境と称されても良い。プロバイダネットワークのサービスのうちの少なくともいくつか（よって、アプリケーション開発及び展開のために使用されるリソースのうちのいくつか）は、いくつかの実施形態では、仮想化に依存することがあり、例えば、仮想マシンは、コンピューティングサービスのクライアントに割り当てられたコンピューティングの装置として使用されることがあり、仮想化された記憶装置は、ストレージサービスのクライアントに提供されることがある。プロバイダネットワークのいくつかのサービスは、他のサービスのコンポーネントを使用して構築されることがあり、例えば、データベースサービスは、仮想コンピューティングサービスの仮想マシンを下層処理エンジンとして使用することがあり、データベースコンテンツを１つまたは複数のストレージ関連サービスの記憶装置に記憶することがある。
【０００７】
少なくともいくつかの実施形態に従って、プロバイダネットワークは、或るタイプのアプリケーションのいくつかの異なるカテゴリの展開タスクを簡易化及び自動化することを意図されたアプリケーション展開サービス（ＡＤＳ）を含むことができる。ＡＤＳのクライアントは、例えば、指定されたルールに従って、所与のアプリケーションの実行可能なバージョンをアップロードすることができ、次いで、ＡＤＳは、クライアントが使用されているリソースの詳細を気にする必要なく、能力のプロビジョニング、負荷分散、スケーリング、及びアプリケーションのヘルスモニタリングなどの詳細に対処することができる。いくつかの実施形態では、ＡＤＳは、例えば、仮想コンピューティングサービス、１つまたは複数のストレージサービス、１つまたは複数のデータベースサービス、通知サービス、ヘルスモニタリングサービス、負荷分散サービス、自動スケーリングサービス、及び１つまたは複数のデータキャッシュサービスを含む、プロバイダネットワークのいくつかの他のサービスを使用することができる。少なくともいくつかの実施形態では、ＡＤＳは、ウェブベースのコンソールなどの１つまたは複数のプログラムインタフェースを、デフォルトの機構として実施またはサポートすることができ、当該デフォルトの機構によって、アプリケーション開発者またはマネージャは、展開のために事前にパッケージ化されたアプリケーション（例えば、Ｊａｖａ（商標）ベースのアプリケーションについての．ｊａｒファイルまたは．ｗａｒファイルの形式にある）をアップロードすることができる。
【０００８】
種々の実施形態では、ＡＤＳはまた、開発者またはアプリケーションアドミニストレータの選択されたグループが展開アーチファクトをＡＤＳに提出することを可能にする電子メールチャネルまたはメッセージングアプリケーションチャネルなどのカスタム（例えば、アプリケーション特有のまたは顧客特有の）セキュア通信チャネルの作成をサポートすることができる。所与のカスタムチャネルに対する要求された特性に応じて、チャネルは、個々のソースコードファイル、コンパイルされた実行可能ファイル、インタープリット可能なスクリプトファイル、アプリケーションのパッケージ化されたバージョン、または構成ファイルなど、１つまたは複数のカテゴリの展開アーチファクトを送信するために使用されても良い。少なくともいくつかの実施形態では、ＡＤＳは、クライアントがカスタマイズされた通信チャネルを作成するための要求を提出することを可能にするプログラムインタフェースを提供することができる。例えば、ソフトウェア開発チームのマネージャまたはアドミニストレータなどの認可されたパーティによって提出することができる要求は、要求される通信のタイプ（例えば、電子メール、ＦＴＰ（ファイル転送プロトコル）もしくは同様のデータ転送アプリケーションのうちの１つもしくは複数の変形、ＳＭＳ（ショートメッセージサービス）、または他のメッセージングアプリケーション）、チャネルを使用するために許可されることになるクライアント側エンティティまたはデバイスのセット、セキュリティの詳細、及び以下でさらに詳細に説明されるようなチャネルの種々の他の特性を示すことができる。
【０００９】
アプリケーションに対してカスタムチャネルをセットアップする要求を受信したことに応答して、ＡＤＳのコンポーネントは最初に、例えば、顧客データベースにおける要求者のレコードを検索することによって、要求が認可されたパーティからであること、及び遂行されるべきかを確認することができる。要求が受理可能である場合、ＡＤＳは、要求されたチャネルに対する通信エンドポイントのセットをセットアップするために、電子メールサービス、メッセージングサービスもしくはファイル転送サービスなどの１つもしくは複数の他のサービスとプロバイダネットワーク内で内部的に通信することができ、及び／または外部通信サービスと通信することができる。電子メール通信が要求される１つの実施形態では、例えば、電子メールアドレスのセットが、特にアプリケーションに対するエンドポイントとして確立されても良く、ＳＭＳが好ましい通信機構であるシナリオでは、ＳＭＳの宛先番号のセットが、エンドポイントとして作成されても良い。エンドポイントのリストは、例えば、エンドポイントを使用するために許可されることになるソフトウェア開発者または他のクライアントのグループの間での分散のために、カスタムチャネルの要求者に提供されても良い。いくつかの実施形態では、ＡＤＳまたは要求者のうちのいずれかは、エンドポイントのセットを、例えば、ソースコードファイルの提出のために使用されることになる１つのサブグループ、構成変更の提出のためのもう一方のサブグループ、及び実行可能ファイルの提出のための３つ目のサブグループを有するサブグループに分割することができる。少なくとも１つの実施態様では、異なるエンドポイントは、例えば、アーチファクトが認可された提出者によって送信されたことを保証するために、セットアップされた追加のセキュリティ確認要件のそれぞれのセットを有することができ、多段階及び／もしくは多者認証プロトコルが使用されても良く、または提出者の識別子のいくつかの他の証拠が要求されても良い。多段階認証プロトコルでは、ＡＤＳは、１つまたは複数の追加確認メッセージが受信されるまで（例えば、ＡＤＳからのチャレンジに応答して提出者から）、受信されたアーチファクトの特定のセットに基づいてアプリケーションの展開へのいかなる変更も実施しないことがある。多段階多者認証プロトコルでは、アーチファクトの送信者が少なくともカスタムチャネルを使用して受信されるタイプのメッセージを提出することを認可されることの確認は、例えば、ＡＤＳによって送信される確認クエリに応答して、ＡＤＳにおいていくつかの他の信頼できるパーティから取得される必要がある場合がある。いくつかの実施形態では、事前承認された送信者エンドポイント（及び／または受信者エンドポイント）のそれぞれの「ホワイトリスト」は、ＡＤＳによって維持されても良く、展開アーチファクトを含む所与のメッセージがホワイトリスト化された送信者エンドポイントのうちの１人から受信されることを確認することは、セキュリティの確認のために十分となることがある。１つの実施形態では、信頼できる第三者パーティのホワイトリストはさらに、またはその代わりに、多者認証の目的で、ＡＤＳにおいて維持されても良い（または、他に記憶され、ＡＤＳからアクセスされても良い）。
【００１０】
エンドポイント情報がＡＤＳの開発者及び／または他のクライアントに伝播された後、クライアントはそれらのアーチファクトを提出することを開始することができる。メッセージが所与のアプリケーションに対してセットアップされたカスタムチャネルエンドポイントのうちの１つにおいて受信されるとき、ＡＤＳのコンポーネントは、メッセージの内容を構文解析し、展開関連のペイロードを抽出することができる。ペイロードに含まれるアーチファクトの性質、及び／またはチャネルもしくはエンドポイントに対して前にセットアップされたセキュリティルールに応じて、ＡＤＳは最初に、１つまたは複数の追加のセキュリティ確認オペレーションを実行する必要がある場合がある。いずれかのそのような追加確認が要求され、対応するオペレーションの完了が成功する場合、ＡＤＳは、アーチファクトを使用して１つまたは複数の展開タスクを実施することができる。例えば、アーチファクトが実行可能なパッケージである場合、パッケージは、実行プラットフォームの適切なセットに送信され、使用されているプログラミング環境のルールに従って展開されても良く、例えば、アプリケーションサーバ処理またはウェブサーバ処理は、いくつかのケースで再開されても良い。アーチファクトがソースコードファイルまたはソースコードファイルのセットである場合、いくつかの実施形態では、ＡＤＳは、アプリケーションのソースコードの階層においてソースコードがどこに配置されるかを正確に決定し、受信されたソースコードを使用してアプリケーションの新たなバージョンをコンパイルし、アプリケーションの新たなバージョンを展開することができる。アーチファクトが構成変更を含む場合、いくつかの実施形態では、ＡＤＳは、例えば、１つの構成ファイルを別のものに置き換え、追加のリソースをアプリケーションの展開ターゲットのフリートの一部として獲得し、１つもしくは複数のリソースをフリートから除去し、またはいくつかの他の手段によって、変更がどのように適用されるかを決定し、次いで、要求された変更が実行可能であるとみなされる場合に変更を適用することができる。よってＡＤＳは、アクションの異なるセットを実行することによって、異なる提出に応答することができる。少なくともいくつかの実施形態では、ＡＤＳは、アプリケーションの状態を修正する前に、アプリケーションの完全に機能している状態のスナップショット（例えば、ソース及び／または実行可能ファイル）がリポジトリに記憶されることを保証することができる。保存された状態は、新たに提出される変更が成功しない場合にＡＤＳによって復元されても良い。
【００１１】
先に述べたように、ＡＤＳのクライアントの異なるセット（例えば、アプリケーションコードの種々の部分について作業するソフトウェア開発者、及びアプリケーション構成の専門家など）は、施行されているそれぞれのセキュリティ関連ルールで、いくつかの実施形態におけるカスタムチャネルエンドポイントのそれぞれのセットを使用する許可が付与されても良い。電子メールまたはＳＭＳなどの使用が容易な機構をセットアップすることによって、クライアントが変更をアプリケーションに提出することが、全てのクライアントがインタフェースのＡＤＳのデフォルトのセットを使用する必要がある場合よりもはるかに容易になることがある。結果として、少なくともいくつかのケースでは、ソフトウェア開発処理は、対応するアプリケーションに対して加速化されることがある。種々の実施形態では、カスタムチャネルは、或るクライアントに対する開発処理の或る段階の間に終了または閉鎖されることがあり、例えば、ＡＤＳは、必要に応じてカスタムチャネルまたはチャネルエンドポイントのサブセットを無効にするために使用することができるオプトアウトインタフェースをサポートすることができる。いくつかの実施形態では、作成された各エンドポイントは、関連する有効期間を有することがあり、その有効期間の後に、エンドポイントは更新されない限りもはや使用されないことがある。カスタム通信チャネルがアプリケーション展開サービスにおいてセットアップ及び使用することができる方式の種々の他の態様が、以下でさらに詳細に説明される。
【００１２】
実施例のシステム環境
図１は、少なくともいくつかの実施形態に従った、アプリケーション展開サービスのために、カスタマイズされた通信チャネルをオンデマンドで確立することができる実施例のシステム環境を示す。示されるように、システム１００は、アプリケーション展開サービス（ＡＤＳ）１１０が実施されるプロバイダネットワーク１０２を含む。ＡＤＳ１１０は、クライアントが種々のアプリケーションを展開及び管理する処理を簡易化することを可能にし得る。例えば、ＡＤＳ１１０によってサポートされるデフォルトの通信チャネルまたはカスタム通信チャネルのいずれかを使用して、クライアントは、アプリケーションコンテンツ及び構成設定を提供することができ、次いで、ＡＤＳは、アプリケーションに対して必要なリソースの状態を獲得、構成、及び管理する義務を引き継ぐことができる。記述される実施形態では、ＡＤＳ１１０の展開コントローラコンポーネント１２０が１つのアプリケーション（「Ａｐｐ１」をリソースの第１のセット１５２Ａに、第２のアプリケーション（「Ａｐｐ２」）をリソースの第２のセット１５２Ｂに展開している。各リソースセット１５２は、詳述される実施例では、コンピューティングプラットフォームのセット１５３（例えば、Ａｐｐ１及びＡｐｐ２それぞれに対するコンピューティングプラットフォーム１５３Ａ及び１５３Ｂ）、ならびにストレージプラットフォームのセット１５４（例えば、Ａｐｐ１及びＡｐｐ２それぞれに対する１５４Ａ及び１５４Ｂ）を含む。異なるアプリケーションに対して使用されるリソースセット１５２は、いくつかの実施形態では、プロバイダネットワークのサービスの複数テナントの性質に起因して、重なり合うことがある。
【００１３】
示されるように、ＡＤＳ１１０は、アプリケーション構成メタデータリポジトリ１１２及びアプリケーションソースリポジトリ１１４を含む。アプリケーション構成メタデータリポジトリ１１２は、アプリケーションに対して必要とされるリソースの種別を示す、管理対象アプリケーションごとの（Ａｐｐ１及びＡｐｐ２など）それぞれのレコード、リソースが相互接続されることになる方式、アプリケーションにおいてリソースによって行われるロール（例えば、「ウェブサーバ」対「アプリケーションサーバ」対「データベースサーバ」）、ならびにアプリケーションのリソースセットにリソースを追加し、またはそれらからリソースを削除するために使用されることになるルールなどを含むことができる。アプリケーションソースリポジトリ１１４は、記述される実施形態では、管理対象アプリケーションごとのソースコード（及び／または対応する実行可能コードモジュール）のうちの１つまたは複数の階層を含むことができる。少なくともいくつかの実施形態では、ソースコード及び／または構成メタデータは、プロバイダネットワークのうちの１つまたは複数のストレージサービスに物理的に記憶されても良く、ＡＤＳは、ソースコード及び構成メタデータが配置される位置へのポインタを含んでも良い。
【００１４】
ＡＤＳは、記述される実施形態では、認可されたクライアントが、ソースもしくは実行可能ファイル、全実行可能プログラム、及び／または種々のタイプの構成設定などの展開関連アーチファクトを提出するために使用されることになるカスタム通信チャネルをセットアップする要求を含む、種々のタイプの要求を提出することを可能にする、１つまたは複数の制御プレーンまたは管理プログラムインタフェース１２４を実施することができる。インタフェース１２４を介して受信されるカスタム通信チャネルをセットアップする要求に応答して、ＡＤＳは、ＥＰ１〜ＥＰｎなどの１つまたは複数のカスタム通信チャネルエンドポイント１２２の確立を開始することができる。例えば、ＥＰ１〜ＥＰｎは、それぞれの電子メールアドレス、ＳＭＳ／テキスティング宛先アドレス、ＦＴＰに類似した転送のために使用されることになるＩＰ（インターネットプロトコル）アドレス及びポート、またはそのような異なるタイプのエンドポイントの組み合わせを含むことができる。ＥＰの詳細は、アプリケーション開発者及び／または他のタイプのクライアントへのさらなる伝播のために、ＡＤＳによって要求パーティに提供されていることがある。記述される実施形態では、例えば、ＥＰ１がＡｐｐ１の開発者に対してセットアップされており、ＥＰｎがＡｐｐ２の開発者に対してセットアップされている（例えば、Ａｐｐ１及びＡｐｐ２のアドミニストレータまたは所有者から受信されるそれぞれのチャネルセットアップ要求に応答して）。いくつかの実施形態では、所与のアプリケーションは、それに対してセットアップされた様々な異なるカスタムチャネルエンドポイント、例えば、いくつかの数の電子メールアドレス、及びいくつかの数のテキスティング宛先などを含むことができる。カスタムチャネルエンドポイントは、電子メールサービスコンポーネント及びメッセージングサービスコンポーネントなど、いくつかの実施形態における１つまたは複数の他のエンティティによってＡＤＳの要求において作成されても良い。カスタムチャネルなしで、またはそれに加えて、ＡＤＳのクライアントは、種々のタイプの展開関連アーチファクトを提出するために、デフォルトの通信チャネルエンドポイント１２３（ウェブベースの管理コンソール、アプリケーションプログラミングインタフェース、カスタムＧＵＩインタフェース、及びコマンドラインツールなどに対するエンドポイントまたはアドレスなど）を使用することができる。少なくとも１つの実施形態では、カスタムチャネル作成要求はまた、デフォルトの通信チャネルエンドポイント１２３を介して提出されても良い。
【００１５】
Ａｐｐ１またはＡｐｐ２などの所与のアプリケーションに対して要求されるカスタムチャネルエンドポイントがセットアップされた後、アプリケーションに対する種々のタイプの展開アーチファクトを含むメッセージは、例えば、１７０Ａまたは１７０Ｂなどのアプリケーション開発者デバイス１７０からエンドポイントに提出されても良い。例えば、サーバと、デスクトップパーソナルコンピュータ、ラップトップ、タブレット、スマートフォンなどのワークステーションとを含む、様々なコンピューティングデバイスが、異なる実施形態におけるアプリケーション開発者デバイス１７０として使用されても良い。記述される実施形態では、各開発者デバイス１７０は、ＡＤＳのデフォルトの通信チャネルに対して使用可能なそれぞれの電子メールクライアント１５５（例えば、１５５Ａ及び１５５Ｂ）、それぞれのＳＭＳ／テキスティングアプリケーションクライアント１５６（例えば、１５６Ａ及び１５６Ｂ）、ならびにそれぞれのコンソールアプリケーション（例えば、ウェブブラウザ）１５７を含むものとして示される。デバイス１７０Ａの電子メールクライアント１５５Ａは、Ａｐｐ１の展開アーチファクトをＥＰ１に提出するために使用されても良く、ＳＭＳ／テキスティングアプリケーション１５６Ｂは、Ａｐｐ２の展開アーチファクトをＥＰｎに提出するために使用されても良い。いくつかの実施態様では、電子メールクライアント及びＳＭＳ／テキスティングアプリケーションなどのクライアント側コンポーネントのうちのいくつかまたは全ては、統合された開発環境（ＩＤＥ）及び／または他のソフトウェア開発ツールに対するプラグインまたはアドオンとして実施されても良い。
【００１６】
デバイス１７０からの特定のメッセージがエンドポイント１２２において受信されるとき、それは、含まれる展開アーチファクトを抽出するために構文解析されても良い（例えば、展開コントローラ１２０によって、またはその代わりに）。エンドポイントにおいて受信されるメッセージの内容は、本明細書では、「ペイロード」と称されることがある。メッセージに含まれる展開アーチファクトの種別は、いくつかの実施形態では、開始されることになる展開アクションまたはタスクを示し、または推定するように使用されても良い。例えば、Ｊａｖａ（商標）のバージョンへの互換性を有する．ｗａｒまたは．ｊａｒファイルがメッセージに含まれる場合、展開コントローラ１２０は、ファイルが展開のためのリソースセット１５０（例えば、Ａｐｐ１のリソースセット１５２ＡまたはＡｐｐ２のリソースセット１５２Ｂ）のうちの１つまたは複数の宛先リソースに複製されることになると推測することができ、構成ファイルがメッセージに含まれる場合、展開コントローラは構成設定をリポジトリ１１２に保存し、次いで、構成設定を適用することができる。いくつかのケースでは、Ａｐｐ１及び／またはＡｐｐ２に対する使用でのアプリケーション実行環境の種別に応じて、ＥＰ１またはＥＰｎを介した所与の提出が、コードリポジトリ１１４及び実行リソースセット１５２における変更をもたらすことがある。少なくともいくつかの実施形態では、アプリケーションのセキュリティ設定、使用される通信チャネルまたはエンドポイントなどの種々の要因に応じて、いずれかの変更がなされる前に追加のセキュリティ確認段階が展開コントローラ１２０によって実行または開始されても良い。確認段階は、例えば、多段階認証手順を含むことができ、その手順では、第２のメッセージが提出者に再度送信され、第２のメッセージへの時宜を得た応答が送信者の識別子を認証するために使用される。別のアプローチでは、多者確認機構が使用されても良く、その機構では、カスタムチャネルエンドポイントを介して受信される少なくともいくつかのタイプの提出について、提出された変更に対する承認要求が送信者とは異なるパーティ（例えば、「ピア」の開発者または信頼できる権限者）に送信されることがあり、要求された変更が承認されるまで受理されないことがある。そのような確認段階が失敗する場合、対応するアーチファクトを含むメッセージは、種々の実施形態では、例えば、静穏に、またはエラーの指示が送信者に提供された後のいずれかで破棄されても良い。
【００１７】
カスタムチャネルセットアップの概要
図２は、少なくともいくつかの実施形態に従った、クライアントとアプリケーション展開サービスの制御プレーンコンポーネントとの間の実施例の対話を示す。示されるように、特定の管理対象アプリケーション「Ａｐｐｋ」に対する信頼できるチャネル要求者２１０は、カスタム通信チャネルに対するセットアップ要求２３０をアプリケーション展開サービス（ＡＤＳ）の制御プレーンコンポーネント２２０に送信することができる。信頼できる要求者は、例えば、それに対してＡｐｐｋの展開に関する管理特権がＡＤＳによって付与されているユーザ識別子を有することができる。セットアップ要求は、カスタムチャネルを介してＡＤＳにおいて受信される通信に必要な別個のエンドポイントの数及び／または必要とされる追加のセキュリティ確認段階（ある場合）の数など、要求される通信チャネルの種別（例えば、電子メール対ＳＭＳ）及びチャネルの種々の所望の特性を示すことができる。ウェブベースコンソール、アプリケーションプログラミングインタフェース（ＡＰＩ）、コマンドラインツール、及びスタンドアロングラフィカルユーザインタフェースなど、いくつかの異なるプログラムインタフェースは、種々の実施形態におけるセットアップ要求２３０及び／またはＡＤＳと関連付けられた他のタイプの管理要求に対してサポートされることがある。
【００１８】
セットアップ要求を認証し、要求が認可されたパーティ及び信頼できるパーティからであることを確認した後、ＡＤＳコンポーネント２２０は、特性の指定されたセットを有するカスタムチャネルが要求者２１０の代わりに作成されることになることを示す内部要求２３２を、記述される実施形態におけるプロバイダネットワークの通信サービス２２５のコンポーネントに送信することができる。通信サービス２２５は、Ａｐｐｋに対するカスタム通信チャネルに対して使用されることになるエンドポイントのセット２７２（Ａｐｐｋ−ＥＰ１、Ａｐｐｋ−ＥＰ２、Ａｐｐｋ−ＥＰ３、Ａｐｐｋ−ＥＰ４など）を確立するために必要なオペレーションを実行することができ、例えば、電子メールアドレスまたはＳＭＳ宛先アドレスの新たなセットが作成されても良く、アドレスの事前に割り当てられたプールからのアドレスのセットがエンドポイントセット２７２に対して選択されても良く、新たなチャネルを介して予想されるメッセージを取り扱うためのコンピューティング及び／またはネットワーキングリソースが割り当てられても良い、などである。通信サービス２２５は、記述される実施形態では、エンドポイントセット２７２を示す応答２３４Ａを、ＡＤＳコンポーネント２２０に送信することができる。いくつかの実施形態では、ＡＤＳコンポーネントは、例えば、内部要求２３２をプロバイダネットワークの通信サービス２２５に送信する代わりに、またはそれに加えて、カスタムチャネルの構成に対する要求を、プロバイダネットワークの外部の第三者パーティ通信サービスなどのエンティティに送信する必要がある場合がある。例えば、１つの実施形態では、電気通信サービスプロバイダ及び／または外部ＤＮＳサーバは、カスタムチャネルの構成を支援するように連絡されても良い。
【００１９】
次いで、エンドポイントセット２７２に関する情報を示す応答２３４Ｂは、記述される実施形態では、信頼できるチャネル要求者２１０に渡されても良い。エンドポイント情報のそれぞれのサブセットは、例えば、クライアントデバイス２５２Ａ及び２５２Ｂのそれぞれに送信されるメッセージ２３５Ａ及び２３５Ｂを介して、Ａｐｐｋの伝播または検証に関与する種々の開発者または他のクライアントに提供されても良い。いくつかの実施形態では、例えば、エンドポイントのセット２７２は、対応するクライアントのロールに基づいて分割されても良く、いくつかの開発者は、エンドポイントの１つのサブセットへのアクセスが付与されても良く、他の開発者は、異なるサブセットへのアクセスが付与されても良い。種々の実施形態では、いくつかのエンドポイントは、ソースコードまたは実行可能コードに対して具体的に指定されても良く、その他は、構成変更要求に対して指定されても良い。記述される実施例では、クライアントデバイス２５２Ａに由来するソースコードまたは実行可能パッケージ２４０Ａは、Ａｐｐｋ−ＥＰ１に向けられても良く、クライアントデバイス２５２Ｂに由来するソースコードまたは実行可能パッケージ２４０Ｂは、Ａｐｐｋ−ＥＰ３に向けられても良い。Ａｐｐｋの展開のためのそれぞれの構成変更を示す構成ファイルセット２４１Ａ及び２４１Ｂは、Ａｐｐｋ−ＥＰ２に（クライアントデバイス２５２Ａから）及びＡｐｐｋ−ＥＰ４に（クライアントデバイス２５２Ｂから）送信されても良い。
【００２０】
各々のケースでは、メッセージがセットのエンドポイント２７２においてクライアントデバイスから受信された後、ＡＤＳは、メッセージに含まれる展開アーチファクトが対応するタスクまたはワークフローに適用または使用される前に、前に説明されたようなセキュリティ確認の追加段階が適用されることになるかを決定することができる。いくつかのケースでは、通信チャネルの要求される構成に応じて、追加のセキュリティチェックが要求されないことがある。少なくとも１つの実施形態では、カスタム通信チャネルをセットアップする要求は、別個の信頼できるチャネル要求者から送信される代わりに、クライアントデバイス２５２から送信されても良い。１つの実施形態では、カスタムチャネルに対する要求は、Ａｐｐｋの展開に関してＡＤＳに送信される初期構成メッセージに含まれても良く、そのケースでは、別個のセットアップ要求が後に要求されないことがある。いくつかの実施形態では、エンドポイントは、異なるアプリケーションの間で共有されても良く、例えば、ＡＤＳの所与の顧客が、ＡＤＳによって管理されている２つの別個のアプリケーションＡｐｐｋ及びＡｐｐｊを有する場合、単一の電子メールアドレスがＡｐｐｊ及びＡｐｐｋの両方に対してセットアップされても良い。
【００２１】
少なくともいくつかの実施形態では、信頼できるチャネル要求者などの認可されたパーティはまた、セットアップ要求２３０のために使用されるものと同様のプログラムインタフェースを使用して１つまたは複数のカスタムチャネルの無効化または削除を要求することがある。インタフェースはまた、カスタムチャネルを使用し、またはカスタムチャネルのエンドポイントの特定のセットを使用するために、１つまたは複数のクライアントエンティティの権利を取り消すために使用されても良い。例えば、特定のアプリケーションが製造環境に配置された後、前にセットアップされた１つまたは複数のカスタムチャネルを介して展開アーチファクトを提出する種々の開発者及びテスタの権利は抑制されても良い。クライアントの提出権利が取り消しされた後にメッセージがエンドポイントのうちの１つにおいて受信される場合、ＡＤＳは、いくつかの実施形態では、メッセージを破棄し、及び／またはエラーメッセージを生成することができる。もちろん、エンドポイントまたはチャネルが全体として無効にされた後、メッセージを提出する試みが成功しないことがある。
【００２２】
カスタムチャネルメタデータ
図３は、少なくともいくつかの実施形態に従った、アプリケーション展開サービスのカスタム通信チャネルに対して記憶することができる実施例のメタデータ要素を示す。示されるように、アプリケーション展開サービスの１つまたは複数の顧客の代わりにセットアップされたカスタム通信チャネルに対するメタデータレコード３１０は、他の要素の中で、種々の実施形態におけるチャネルタイプ要素３１２、管理対象アプリケーションセットインジケータ３１３、ホワイトリスト化提出者識別子要素３１４、多者認証のための信頼できるパーティのリスト３１５、提出者ロール要素３１６、受信者エンドポイントセット３１８、受信者ロール要素３２０、拡張セキュリティ確認ルールのセット３２２、タイミング制約のセット３２４、及び／またはデータ転送制約要素３２６を含むことができる。チャネルタイプ３１２は、電子メール、テキスティング／ＳＭＳ、及びＦＴＰなど、チャネルに対して使用されることになる特定の通信機構を示すことができる。管理対象アプリケーションセット３１３は、それに対してチャネルが使用されることになるアプリケーションのセットを示すことができる。先に述べたように、いくつかのケースでは、その展開がＡＤＳによって管理される複数のアプリケーションは共有カスタム通信チャネルを割り当てられても良く、他の実施形態では、１つの管理対象アプリケーションだけに対して所与のカスタム通信チャネルが使用されても良い。
【００２３】
承認された提出者識別子のホワイトリスト３１４（例えば、それから電子メールまたはファイル転送が受理可能な電子メールアドレス、ＩＰアドレス、またはテキスティングソースアドレスなど）は、いくつかの実施形態におけるカスタム通信チャネルに対して記憶されたメタデータに含まれても良い。そのようなホワイトリストは、いくつかの実施形態における少なくとも第１のセキュリティ検証を実行するために使用されても良く、例えば、ソースコードファイルがホワイトリストにないソースから受信される場合、そのソースコードファイルの提出は、ＡＤＳによって拒絶されることがある。いくつかの実施形態では、ホワイトリストに対応するそれぞれの提出者ロール３１５はまた、例えば、各々のホワイトリスト化された提出者から受理可能な提出の種別を示すチャネルメタデータレコード３１０に含まれても良い。いくつかの提出者は、例えば、管理対象アプリケーションの構成設定を変更することが受理されることがあり、その他はそうでないことがあり、ロール情報は、種々の提出者により許可可能な展開関連の提出の種別を制限することができる。１つの実施形態では、多者認証を目的に問い合わせされることになる信頼できるパーティのリスト３１６も含まれても良い。
【００２４】
種々の実施形態では、メタデータレコード３１０はまた、カスタムチャネルに対して確立される受信者エンドポイントのセット３１８、及びそれぞれの受信者エンドポイントと関連付けられた特定のロール（ある場合）３２０を含むことができる。例えば、１つの実施形態では、１つの電子メールアドレスは、ソースコードファイルを管理対象アプリケーション（複数可）の開発者から受信するためにエンドポイントとして確立されても良く、第２の電子メールアドレスは、構成変更を受信するために確立されても良い。それぞれのロールが受信者エンドポイントに割り当てられる実施形態では、ロールは、展開アーチファクトがそれらに指定されるそれらのエンドポイントにのみ提出されることを確認するために使用されても良く、例えば、構成変更ファイルに対して指定されるエンドポイントに送信されるソースコードファイルは拒絶されることがある。
【００２５】
いくつかの拡張されたセキュリティ確認ルール３２２のうちのいずれかは、カスタム通信チャネルに対して指定されても良い。いくつかのルールは、チャネルを介して受信される全てのメッセージに適用可能となることがあり、その他は、特定のタイプのメッセージ、提出者のサブセット、及び／またはエンドポイントのサブセットのみに適用可能となることがある。１つの実施形態では、少なくともいくつかのタイプの提出される展開アーチファクトについて、多段階認証プロトコルに従っても良い。そのようなシナリオでは、ＡＤＳは、ＡＤＳによって前に提供されたセキュリティトークンで、または送信者の識別子のいくつかの追加の証拠で、送信者が応答することを要求する提出に対し第１の応答を送信することができる。いくつかの実施形態では、ＡＤＳは、特定のメッセージの内容を構文解析及び分析した後に、追加セキュリティ確認段階が要求されるかを決定することができる。ルール３２２に従って、メッセージが些細な変更（例えば、ソースコードファイルへのコメントの追加）を示す場合、ＡＤＳは、提出されるアーチファクトを受理することができ、さらなる大きな変更のために追加のセキュリティ確認オペレーションが実行されても良い。いくつかの実施形態では、所与のカスタム通信チャネルは、それに関連付けられた１つまたは複数のタイミング制約３２４を有することができ、例えば、チャネルは、その後にそれがシャットダウンすることになり、またはチャネルが単に就業日の間の或る期間に使用できないことがある有効期間を有することができる。例えば、１つの組織では、開発者は、通常の業務時間の間に特定の通信チャネルを、通常の業務時間の後に異なる通信チャネルを使用することが予想されることがある。１つの実施形態では、例えば、展開アーチファクトの提出のために使用される帯域幅、または所与の時間期間の間に許可される提出の数を制限する、データ転送制約３２６は、カスタム通信チャネルに対して指定されても良い。所与のメッセージがデータ転送制約に違反し、またはその展開タスクがデータ転送制約の違反をもたらすアーチファクトを含む場合、少なくともいくつかの実施形態では、メッセージが拒絶されることがある。いくつかのケースでは、プロバイダネットワークにおいて実施されるアプリケーション展開サービスは、データ転送制約３２６、タイミング制約３２４、及び／またはセキュリティルール３２２を施行するために、プロバイダネットワークの他のサービス（例えば、図５に示されたものと同様のサービス）、またはプロバイダネットワークの外部のサービスを利用することができる。図３に示されたメタデータ要素の少なくともいくつかの内容は、チャネルに対するセットアップ要求から導出されても良く、例えば、確立される受信者エンドポイントの数、提出者のホワイトリスト、及び／またはセキュリティ確認ルールなどがセットアップ要求で示されても良い。種々の実施形態では、図３に示されたメタデータ要素の種別のうちの１つまたは複数が使用されても良く、他の実施形態では、図３に示されていない追加の要素が、図３に示されたものの代わりに、またはそれに加えて記憶されても良い。
【００２６】
カスタムチャネルを使用して実行される展開タスクの実施例
図４ａ〜図４ｅは、少なくともいくつかの実施形態に従った、アプリケーション展開サービス（ＡＤＳ）のカスタム通信チャネルエンドポイントを介して提出することができる要求の実施例を総合的に示す。いくつかの実施形態に従って、特定の管理対象アプリケーションがＡＤＳを使用して展開される前に、構成及び環境情報のセットがＡＤＳに提供される必要がある場合がある。図４aに示されるように、いくつかの実施形態において、アプリケーションのために作成されるカスタムチャネルは、プリケーションＡｐｐｋの第１の展開の必要条件として、必要とされる構成情報を提出するために使用することができる。Ａｐｐｋ構成ファイル４３５は、クライアントデバイス４５２ＡからカスタムチャネルのエンドポイントＡｐｐｋ−ＥＰに送信されても良い。ＡＤＳコンポーネント４２０（任意選択のセキュリティ確認者コンポーネント４４４を含むことができる）は、構成ファイル４３５を受信し、要求されるいずれかのセキュリティチェックを実行し、セキュリティチェックが成功した場合、構成ファイル４３５をＡｐｐｋに対するエントリ４３７として記述される実施形態におけるアプリケーション構成メタデータリポジトリ１１２に記憶することができる。エントリ４３７は、記述される実施形態では、Ａｐｐｋが実際に展開される場合、及び展開されるときに使用されても良く、すなわち、Ａｐｐｋに対するリソースは、まさに構成ファイル４３５が提出されているので、割り当てられる必要がないことがある。（図４ａに示される実施形態では、カスタムチャネルは、Ａｐｐｋ−ＥＰの使用を要求しないプログラムインタフェースを介して受信される別個の要求に応答してセットアップされていることがある。）
【００２７】
図４ｂでは、初期Ａｐｐｋ展開パッケージ４４７は、異なるクライアントデバイス４５２ＢからＡｐｐｋ−ＥＰに提出されても良い。Ａｐｐｋのプログラミング言語及び実行環境に応じて、展開パッケージ４４７は、単一の実行可能ファイル、実行可能ファイルの集合、またはソースファイル及び実行可能ファイルのいくつかの組み合わせのみを含むことができる。いくつかのケースでは、ソースファイルは、コンパイルされる必要があることがあり、他のケースでは、ファイルは、コンパイルではなくインタープリットされることがある。展開パッケージ４４７を受信したことに応答して、図４ｂの実施例のシナリオでは、ＡＤＳコンポーネント４２０は、Ａｐｐｋ構成エントリ４３７をリポジトリ１１２から取り出し、Ａｐｐｋのサブコンポーネントが展開されることになるリソースのセットを獲得することができる。Ａｐｐｋに対する初期展開リソースセット４６６は、例えば、ＬＢ４３４などの１つまたは複数の負荷分散装置、ＷＳ  ４３６Ａ、ＷＳ  ４３６Ｂ、及びＷＳ  ４３６Ｃなどの複数のウェブサーバ、ならびにＡＳ  ４３８Ａ及び  ＡＳ  ４３８Ｂなどの複数のアプリケーションサーバを含むことができる。いくつかの実施形態では、それらのリソースのうちのいくつかまたは全ては、プロバイダネットワークのコンピューティングサービスの仮想マシンを含むことができる。他のプロバイダネットワークサービスはさらに、またはその代わりに、図５に関して以下でさらに詳細に議論されるように、種々の実施形態では、ＡＤＳによって管理対象アプリケーションの展開及び構成のために使用されても良い。いくつかの実施形態では、初期展開パッケージ４４７は、例えば、カスタムチャネルエンドポイントＡｐｐｋ−ＥＰに提出される単一のメッセージ内で、構成ファイル４３５とともに提出されても良く、すなわち、図４ａ及び４ｂに示されるタイプのアーチファクトは、必ずしもＡＤＳコンポーネント４２０に別個に送信される必要がない。
【００２８】
図４ｃは、Ａｐｐｋ−ＥＰを介してクライアントデバイス４５２ＣからＡＤＳへのウェブサーバレイヤに対するファイルセット４４１（例えば、１つまたは複数のＨＴＭＬまたはＪａｖａｓｃｒｉｐｔファイルを含む）の提出を示す。このシナリオでは、ＡＤＳコンポーネント４２０は、ファイルセット４４１を含むメッセージの内容を構文解析し、ファイルセットがＡｐｐｋ展開リソースセット４６６のウェブサーバのうちの１つまたは複数に複製されることになると決定することができる（要求されるいずれかの追加のセキュリティまたは正確性チェックが実行された後）。したがって、ファイルセット４４１の複製は、ＷＳ  ４３６Ａ、４３６Ｂ及び４３６Ｃに送信されても良い。Ａｐｐｋリソースセット４６６の他のリソースは、記述される実施形態では、ファイルセット４４１の提出によっては影響を受けないことがある。
【００２９】
図４ｄでは、クライアントは、Ａｐｐｋのアプリケーションサーバレイヤに向けて、ソースファイルのセット４４２をクライアントデバイス４５２ＤからＡｐｐｋ−ＥＰに提出することができる。ＡＤＳコンポーネント４２０は、クライアントデバイス４５２Ｄから受信されるメッセージの内容を検査し、コンパイルされる必要があるソースファイルをメッセージが含むと決定し、ファイルの実行可能なバージョンを取得するためにコンパイラ４４８を利用することができる。次いで、実行可能なバージョンは、アプリケーションサーバＡＳ  ４３８Ａ及び４３８Ｂに展開されても良い。少なくともいくつかの実施形態では、ＡＤＳコンポーネントは、最初に、エラーなしにアプリケーションをコンパイルするためにファイルが配置されることになるソースコードの階層内の位置を決定する必要がある場合がある（例えば、ソースファイルの名前を検査し、またはソースファイルの内容を構文解析することによって）。いくつかのそのようなシナリオでは、ＡＤＳコンポーネントは、正確な位置を識別し、ファイルのより古いバージョンを保存し（そのようなより古いバージョンが存在する場合）、新たに提出されたファイルを当該位置に記憶し、次いで、実行可能なアプリケーションの新たなバージョンを取得するためにコンパイラまたは同様のツールを呼び出すことができる。次いで、実行可能アプリケーションの新たなバージョンは、１つまたは複数のプラットフォームで実行されても良い。他のシナリオでは、ＡＤＳは単純に、ソースコードの階層内で、新たに提出されるファイルをそれに対して決定された位置に配置し、明確なコンパイルが要求されないことがある（例えば、ソースファイルがコンパイルではなくインタープリットされることになるスクリプトコードである場合）。
【００３０】
図４ｅでは、Ａｐｐｋに対する構成変更要求４４９は、Ａｐｐｋ−ＥＰを介してクライアントデバイス４５２ＥからＡＤＳコンポーネント４２０に提出されても良い。ＡＤＳコンポーネント４２０は、そのような変更に必要とされるいずれかの追加のセキュリティ確認手順を実行し、アプリケーション構成メタデータリポジトリ１１２に記憶されたエントリ４３７を修正することができる。構成変更要求の性質に応じて、Ａｐｐｋの展開のために割り当てられたリソースのうちのいくつかも修正されても良い。例えば、示されるように、追加のアプリケーションサーバリソース（ＡＳ  ４３８Ｃ）は、構成変更要求を遂行するために採用されても良い。ＡＤＳコンポーネント４２０は、クライアントとのいずれの追加の対話を必要とすることなく、構成変更のために必要なアクション（例えば、ＡＳ  ４３８Ｃに対するコンピューティングプラットフォームの獲得、ＡＳ  ４３８Ｃへの必要なファイルの複製、及びウェブサーバレイヤにおいて必要とされる構成変更など）を開始することができる。いくつかの異なるカテゴリの構成関連展開サービスタスクは、種々の実施形態では、カスタムチャネルを使用して受信されるメッセージに応答して実行されても良い。いくつかの構成タスクは、アプリケーションに対して展開されるリソースへの変更を含むことができ、その他は、アプリケーションのリソースフットプリントへの変更を要求しないことがある。例えば、アプリケーションのスレッドプールにおける最大数のスレッドなどのパラメータに対する設定は、カスタムチャネルを介してメッセージで提出されても良く、または新たなソフトウェアモジュールもしくは拡張を展開する要求が提出されても良い。そのようなシナリオでは、メッセージに応答して実行されるタスクは、アプリケーションに対して使用されるリソースのセットへの変更をもたらさないことがある。図４ａ〜４ｅに示されるように、様々な異なるタイプの展開関連アーチファクトは、１つまたは複数の管理対象アプリケーションに対してＡＤＳにおいてセットアップされたカスタムチャネルセットを使用して提出されても良く、ＡＤＳは、提出されるアーチファクトのタイプに基づいて、アクションの異なるセットをとることができる。種々の実施形態では、他のタイプの展開タスク（種々のリソースのヘルスステータスが監視される方式への変更など）はまた、カスタムチャネルを使用して要求されることがある。ＡＤＳに提出される要求が、図４ａ〜４ｅでは異なるクライアントデバイス４５２Ａ〜４５２Ｅに由来し、同一のＡＤＳコンポーネント４２０によって取り扱われるとして示されるが、カスタム通信チャネルの使用を含む要求は概して、種々の実施形態では、いずれかの適切なクライアントデバイスに由来することがあり、いくつかのＡＤＳコンポーネントのうちのいずれかによって取り扱われることがある。
【００３１】
他のプロバイダネットワークサービスを使用したアプリケーションの展開
いくつかの実施形態では、先に述べたように、カスタム通信チャネルのエンドポイントを介して受信された要求に応答してＡＤＳにおいて実行される展開タスクは、プロバイダネットワークの１つまたは複数の他のサービスの使用を含むことができる。図５は、少なくともいくつかの実施形態に従った、アプリケーション展開ワークフローを実施するために使用することができるプロバイダネットワークサービスの実施例を示す。記述される実施形態では、プロバイダネットワークのサービスポートフォリオ５００は、コンピュテーションサービス５０４、ストレージサービス５０６、データベースサービス５１０、ネットワーキングサービス５５０、及び汎用ユーティリティサービス５４０のグループを含むことができる。（アプリケーション展開サービス５４０Ｆは、汎用ユーティリティサービスのグループに含まれる。）コンピュテーションサービス５０４は、例えば、仮想コンピューティングサービス５０４Ａ（例えば、ＡＤＳ  ５４０Ｆによって管理される種々のアプリケーションを展開するために、それから種々のタイプの汎用仮想マシンへのアクセスを取得することができるサービス）、分散／並列コンピューティングサービス５０４Ｂ（高度の並列度を有するアプリケーションに対して設計される特殊ハードウェア／ソフトウェアコンポーネントを有する）、展開されるアプリケーションに対して割り当てられるリソースを適切にスケールアップまたはスケールダウンするために使用することができる自動負荷ベースのプロビジョニングサービス５０４Ｃ、及び種々の展開されるアプリケーションに対して使用されるコンピュテーションリソースのグループの中で負荷を分散するための負荷分散サービス５０４Ｄを含むことができる。例えば、図４ｂ〜図４ｅでは、負荷分散装置ＬＢ  ４３４は、負荷分散サービス５０４Ｄを使用して実施されても良く、ＷＳ及びＡＳリソースは、仮想コンピューティングサービス５０４Ａを使用して実施されても良い。
【００３２】
組織化されていないストレージオブジェクトへのウェブサービスベースのアクセスを提供するオブジェクトストレージサービス５０６Ａ、またはストレージボリュームへのブロックデバイスレベルのアクセスを提供するボリュームサービス５０６Ｂなど、いくつかの異なるタイプのストレージ関連サービスがいくつかのプロバイダネットワークにおいて実施されても良い。いくつかの実施形態では、関係データベースサービス５１０Ａ、非関係（例えば、「非ＳＱＬ」）データベースサービス５１０Ｂ、またはデータベースキャッシュサービス５１０Ｃなど、いくつかの異なるデータベース関連サービスが実施されても良い。
【００３３】
記述される実施形態では、分離された仮想ネットワーク（ＩＶＮ）サービス５５０Ａなどの種々のネットワーキング関連サービスがプロバイダネットワークにおいてサポートされても良い。ＩＶＮサービス及び仮想コンピューティングサービス４０４Ａの組み合わせを使用して、多数の仮想マシン及び／または他のデバイスは、顧客に必要な（ｕｐ  ｆｏｒ）分離された仮想ネットワークの一部として構成されても良く、顧客は、ＩＶＮに対する十分なネットワーキング構成の柔軟性を付与されても良い。例えば、顧客は、そのネットワーク構成設定が顧客所有の設備において選択される方法と非常に類似した方式で、分離された仮想ネットワーク、セットアップされたサブネット及びルートなどの中でそれらの選択のＩＰアドレスを割り当てることができる。ＩＶＮは、いくつかの実施形態では、「仮想プライベートクラウド」とも称されることがある。直接接続サービス５５０Ｂ（顧客が専用物理リンクもしくは「直接接続」リンクを介して外部ネットワークをプロバイダネットワークに接続することを可能にする）、または仮想ネットワークインタフェースサービス５５０Ｃ（論理ネットワークインタフェースが、物理ネットワークインタフェースカードの再構成を必要とすることなく、仮想マシンにプログラムでアタッチされることを可能にする）である。
【００３４】
ＡＤＳに加えて、汎用ユーティリティサービスカテゴリは、例えば、他のサービスのコンポーネントの間の対話を含むワークフローを実施するために使用することができるワークフローサービス５４０Ａ、ユーザ／グループ認証のための識別子管理サービス５４０Ｂ、永続的なメッセージングアプリケーションに対する待ち行列メッセージサービス５４０Ｃ、電子メール／ＳＭＳ管理サービス５４０Ｄ、及び種々のタイプのイベント通知をスケジューリングするための通知サービス５４０Ｅを含むことができる。いくつかの実施形態では、展開されるアプリケーションに対するヘルスモニタリングサービスも実施されても良く、種々の実施形態では、ＡＤＳによって管理される１つまたは複数のアプリケーションを監視するそのようなサービスのエージェントの構成を変更する要求も、カスタムチャネルを介して提出されても良い。異なる実施形態では、他のサービスがプロバイダネットワークにおいて実施されても良く、図５に示されたタイプのサービスのうちのいくつかが実施されなくても良い。
【００３５】
図５に示されたサービスの種々の組み合わせは、異なる実施形態では、ＡＤＳの展開関連タスクのために使用されても良い。カスタム通信チャネルが電子メールまたはＳＭＳを使用する実施形態では、サービス５４０Ｄは、チャネルを確立及び管理するために使用されても良い。いくつかの実施形態では、データベースまたはストレージサービスは、それに対して、仮想コンピューティングサービス５０４Ａの仮想マシンにおいてローカルに利用可能なストレージが不十分である管理対象アプリケーションに対して採用されても良い。１つの実施形態では、アプリケーションは、サービス５５０Ａを使用して確立されるＩＶＮ内で展開されても良い。他の実施形態では、ＡＤＳの開発者またはクライアントは、ＩＶＮを利用することができ、すなわち、展開アーチファクトがＩＶＮ内のデバイスからＡＤＳに提出されても良い。少なくとも１つの実施形態では、カスタム通信チャネルは、指定されたＩＶＮ内から由来する提出のみが受理されることになるセキュリティ要件を有することがある。通知及びメッセージングサービスは、種々の実施形態では、アプリケーション間通信のため、及び特定の展開タスクがＡＤＳによって完了されるときを顧客に通知するために使用されても良い。図５に示されたサービスの各々は、複数のサービスによって共有されているリソースのうちのいくつかを有する、ハードウェア及び／またはソフトウェアリソースのいくつかのセットを使用して実施されても良い。
【００３６】
アプリケーションの展開のためにカスタム通信チャネルを使用する方法
図６は、少なくともいくつかの実施形態に従った、展開関連アーチファクトを送信するためのカスタムセキュア通信チャネルを構成及び使用するように実行することができるオペレーションの態様を示すフローチャートである。要素６０１で示されるように、１つまたは複数の管理対象アプリケーションの展開関連アーチファクトを送信するために使用されることになるセキュアなカスタマイズされた通信チャネルをセットアップする要求は、プロバイダネットワークの展開サービスの制御プレーンコンポーネントにおいて受信されても良い。セットアップ要求は、使用されることになる通信機構のタイプ、セットアップされることになるエンドポイントの数、及びエンドポイントを介して受信されるメッセージに応答して実行されることになる外部セキュリティ確認段階（ある場合）など、チャネルの種々の特性を示すことができる。
【００３７】
ＡＤＳ制御プレーンコンポーネントは、記述される実施形態では、受信されるセットアップ要求に関して１つまたは複数の認証及び／または認可チェックを実行することができ、また、受理されることになる要求に対して十分なリソースが利用可能であることを確認することができる。要求が実施に対して受理される場合、ＡＤＳコンポーネントは、電子メールサービスまたはＳＭＳ／テキスティングサービスなどのプロバイダネットワーク内で、及び／またはその外部で、１つまたは複数の他のサービスまたはプロバイダとの要求されたチャネルの確立を調整することができる（要素６０４）。図３に示されたものと同様の内容を有するメタデータレコードは、種々の実施形態では、ＡＤＳによって、またはその代わりに作成及び記憶されても良い。例えば、承認された提出者のホワイトリストを表すエントリ、種々のエンドポイントに対するセキュリティルール、提出者及び受信者のロールなどは、ＡＤＳ及び／またはチャネルをセットアップもしくは管理することに関与する他のエンティティのメタデータリポジトリに記憶されても良い。
【００３８】
１つまたは複数のエンドポイントのセット（例えば、ファイル転送のために使用されることになる電子メールアドレス、ＩＰアドレス及びポートの組み合わせ、またはＳＭＳ／テキスティング宛先など）は、チャネルの要求者に提供されても良い（要素６０７）。いくつかの実施形態では、エンドポイントのセットは、分割されても良く、例えば、エンドポイントの１つのグループは、ホワイトリスト化された提出者の１つのグループに対して指定されても良く、エンドポイントの異なるグループは、ホワイトリスト化された提出者の別のグループに対して指定されても良い。エンドポイントはさらに、または代わりに、いくつかの実施形態では、それらの意図された使用または機能に基づいて、例えば、エンドポイントを介して受信されるメッセージに応答して実行される必要がある場合がある展開タスクのカテゴリに基づいて分割されても良い。例えば、いくつかのエンドポイントは、ソースコードの提出に対して唯一指定されても良く、その他は、構成関連アーチファクトの提出に対して指定されても良い。ソースコードの提出について（アプリケーションのプログラミング言語及び／またはランタイム環境に応じて）、いくつかの実施形態では、展開タスクは、提出されるファイルのバージョンをリポジトリに複製／記憶すること、ファイルをコンパイルすること、及び／または提出されるファイルの実行可能なバージョンを実行プラットフォームのセットに複製することを含むことができる。構成関連の提出について、展開タスクは、構成ファイルまたはアプリケーションメタデータレコードを更新すること、１つまたは複数の処理を再開すること、及びリソースを割り当て、または廃止（ｄｅ−ｃｏｍｍｉｓｓｉｏｎｉｎｇ）することなどを含むことができる。
【００３９】
カスタム通信チャネルのセットアップ段階が完了した後、クライアントは、チャネルのエンドポイントを介して展開関連アーチファクトを提出していることがある。１つまたは複数のアーチファクトを含む特定のメッセージは、エンドポイントにおいて受信されても良い（要素６１０）。アーチファクトの種別は、管理対象アプリケーションの言語及びランタイムの特徴に基づいて異なることがある。例えば、いくつかのアプリケーションについて、アプリケーションを全体として表す実行可能ファイル（例えば、．ｊａｒファイルもしくは．ｗａｒファイルの形式にある）、アプリケーションの一部を形成する１つもしくは複数の実行可能モジュール、展開の前にコンパイルされる必要がある場合がある１つもしくは複数のソースコードファイル、コンパイルが必要でない１つもしくは複数のソースファイル、アプリケーションの調節可能なパラメータを統制する構成ファイル、及び／またはアプリケーションに対するリソースの割り当てを制御する構成ファイルは全て、正当な種別のアーチファクトであると考えられても良い。他のアプリケーションについて、それらのタイプの展開関連アーチファクトのサブセットのみが、カスタムチャネルを介して送信可能であっても良く、例えば、アプリケーションの開発者がチャネルを介していくつかのタイプのソースコードの変更を提出することを許可されても良く、大規模な構成変更が許可されなくても良い。
【００４０】
メッセージを受信するＡＤＳコンポーネントは、その内容を構文解析し、展開関連アーチファクトを抽出及び分析し、どの展開タスクがメッセージにおけるアーチファクトの種別に基づいて実行されることになるかを決定することができる。いくつかの実施形態では、メッセージは、提出されるアーチファクトを使用して実行されることになる展開ワークフローまたはタスクを示すＡＤＳへの明確な指示を含むことができる。ＡＤＳコンポーネントは任意選択で、アーチファクト（または、メッセージに対応するタスク）がチャネルまたはエンドポイントと関連付けられることがあるいかなるデータ転送制約にも違反しないことを保証することができる（要素６１３）。記述される実施形態では、ＡＤＳコンポーネントはまた、任意選択で、メッセージの内容に基づいて、展開タスクが開始される前に任意の追加のセキュリティ確認オペレーション（多者または多段階認証など）が実行されることになるかを決定することができる（要素６１３でも示されるように）。多段階認証技術では、ＡＤＳは、１つまたは複数の追加の確認メッセージが受信されるまで（例えば、ＡＤＳからのチャレンジに応答して提出者から）、メッセージの内容に基づいてアプリケーション展開へのいかなる変更も実施しないことがある。多段階多者認証プロトコルでは、メッセージの送信者が信頼できることになる（少なくとも、受信されるメッセージで示されるアーチファクトまたはアーチファクト（複数）に関して）確認は、例えば、ＡＤＳによって送信される確認の問い合わせに応答して、いくつかの他の信頼できるパーティからＡＤＳにおいて取得される必要がある場合がある。いくつかの実施形態では、実行されるセキュリティオペレーションは、アーチファクトの内容またはタイプに基づいて異なることがあり、例えば、重要な構成変更を示すいくつかのアーチファクトは、ファイルにコメントを追加し、またはファイルへの僅かな変更を行うにすぎないことがある他のアーチファクトよりもさらに厳格なセキュリティチェックを要求することがある。提出されるメッセージが指定された基準を満たすとＡＤＳコンポーネントが決定する場合、提出されるメッセージと関連付けられた展開タスクは、種々の実施形態では、追加のセキュリティチェックなしに開始されても良い。いくつかの実施形態では、実行されることになるセキュリティチェックは、提出者の識別子に少なくとも部分的に基づいて決定されても良く、例えば、特定の開発者のソースコードへの変更は、追加のセキュリティ確認なしに受理されても良い。
【００４１】
いずれかの要求される追加のセキュリティ段階が完了した後（または、そのようなオペレーションが必要とされない場合）、要求されるワークフローが開始されても良い（要素６１６）。上述したように、ワークフローの一部として実行される展開タスクは、例えば、アーチファクトのバージョンをリポジトリに保存すること、１つまたは複数のファイルに対するコードの階層内の適切な位置を決定し、決定された位置にファイルを記憶すること、１つまたは複数のファイルをコンパイルすること、１つまたは複数の処理を再開すること、展開されるアプリケーションに対する追加のリソースを割り当て及び構成すること、ならびに展開されるアプリケーションに対する１つまたは複数の前に割り当てられたリソースを廃止することなどを含むことができる。要素６１０、６１３及び６１６に対応するオペレーションは、カスタムチャネルのエンドポイントを介して受信されるメッセージごとに繰り返されても良い。
【００４２】
種々の実施形態では、図６に示された種別のオペレーションのうちのいくつかは、示されたものとは異なる順序で実施されても良く、または順番にではなく並列に実行されても良い（例えば、連続して）ことに留意されたい。例えば、カスタムチャネルのエンドポイントを介して提出されるいくつかの異なるメッセージを処理することが並列して実行されても良い。いくつかの実施形態では、図６に示されたオペレーションのうちのいくつかは、実施されなくても良く、または示されない追加のオペレーションが実行されても良い。
【００４３】
ユースケース
アーチファクトをアプリケーション展開サービスに提出するためのカスタマイズされた通信チャネルを確立する上記説明された技術は、様々なシナリオで有用となることがある。大規模なソフトウェア開発及び品質保証チームは、複合的なソフトウェアプログラムを記述し、その検証を開始するために多くの異なるタイプのコンピューティングデバイスを使用して、世界中に分散された従業員を含むことが多々ある。そのようなチームは、拡張可能なインフラストラクチャを活用し、リソース割り当て及びリソースのヘルス管理の責任を移譲するためにプロバイダネットワークのアプリケーション展開サービスの機能を利用することが多々ある。管理コンソールなどのデフォルトのチャネルの使用を含む硬直的な提出プロトコルに従う全ての提出を必要とする代わりに、展開サービスがソースコード及び／または構成変更の提出のための様々なカスタマイズ可能なチャネルの確立をサポートする場合、これは、開発及び品質保証チームの生産性を高めることができる。
【００４４】
例示的なコンピュータシステム
少なくともいくつかの実施形態では、展開サービス（展開サービスの種々の制御プレーン及び／もしくはデータプレーンコンポーネントならびに／または管理対象アプリケーションを展開及び実行するために使用されるリソースを含む）へのアーチファクトの提出のためのカスタム通信チャネルの確立及び使用をサポートする上記説明された技術のうちの１つまたは複数を実施するサーバは、１つまたは複数のコンピュータアクセス可能媒体を含み、またはそれにアクセスするように構成された汎用コンピュータシステムを含むことができる。図７は、そのような汎用コンピューティングデバイス９０００を示す。示される実施形態では、コンピューティングデバイス９０００は、入力／出力（Ｉ／Ｏ）インタフェース９０３０を介してシステムメモリ９０２０（不揮発性メモリモジュール及び揮発性メモリモジュールの両方を含むことができる）に結合された１つまたは複数のプロセッサ９０１０を含む。コンピューティングデバイス９０００はさらに、Ｉ／Ｏインタフェース９０３０に結合されたネットワークインタフェース９０４０を含む。
【００４５】
種々の実施形態では、コンピューティングデバイス９０００は、１つのプロセッサ９０１０を含むユニプロセッサシステム、またはいくつかのプロセッサ９０１０（例えば、２つ、４つ、８つ、もしくは別の適切な数）を含むマルチプロセッサシステムであっても良い。プロセッサ９０１０は、命令を実行することが可能ないずれかの適切なプロセッサであっても良い。例えば、種々の実施形態では、プロセッサ９０１０は、様々な命令セットアーキテクチャ（ＩＳＡ）、例えば、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、またはいずれかの他の適切なＩＳＡなどのうちのいずれかを実施する汎用または組み込みプロセッサであっても良い。マルチプロセッサシステムでは、プロセッサ９０１０の各々は、通常、同一のＩＳＡを実施するが必ずしもそうではない。いくつかの実施態様では、従来のプロセッサの代わりに、またはそれに加えてグラフィックプロセシングユニット（ＧＰＵ）が使用されても良い。
【００４６】
システムメモリ９０２０は、プロセッサ（複数可）９０１０によってアクセス可能な命令及びデータを記憶するように構成されても良い。少なくともいくつかの実施形態では、システムメモリ９０２０は、揮発性及び不揮発性の部分の両方を含むことができ、他の実施形態では、揮発性メモリのみが使用されても良い。種々の実施形態では、システムメモリ９０２０の揮発性の部分は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、シンクロナスダイナミックＲＡＭ、またはいずれかの他のタイプのメモリなどのいずれかの適切なメモリ技術を使用して実施されても良い。システムメモリの不揮発性の部分（例えば、１つまたは複数のＮＶＤＩＭＭを含むことができる）について、いくつかの実施形態では、ＮＡＮＤフラッシュデバイスを含むフラッシュベースのメモリデバイスが使用されても良い。少なくともいくつかの実施形態では、システムメモリの不揮発性の部分は、超コンデンサまたは他の電力貯蔵デバイス（例えば、バッテリ）などの電源を含むことができる。種々の実施形態では、メモリスタベースの抵抗変化型メモリ（ＲｅＲＡＭ）、３次元ＮＡＮＤ技術、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、または種々のタイプの相変化メモリ（ＰＣＭ）のうちのいずれかが、少なくともシステムメモリの不揮発性の部分に対して使用されても良い。示される実施形態では、上記説明されたそれらの方法、技術、及びデータなどの１つまたは複数の所望の機能を実施するプログラム命令及びデータは、コード９０２５及びデータ９０２６としてシステムメモリ９０２０内に記憶されるように示される。
【００４７】
１つの実施形態では、Ｉ／Ｏインタフェース９０３０は、プロセッサ９０１０、システムメモリ９０２０、ネットワークインタフェース９０４０、または種々のタイプの永続的及び揮発性記憶装置などの他の周辺インタフェースの間のＩ／Ｏトラフィックを調整するように構成されても良い。いくつかの実施形態では、Ｉ／Ｏインタフェース９０３０は、データ信号を１つのコンポーネント（例えば、システムメモリ９０２０）から別のコンポーネント（例えば、プロセッサ９０１０）による使用に適切な形式に変換するためのいずれかの必要なプロトコル、タイミング、または他のデータ変換を実行することができる。いくつかの実施形態では、Ｉ／Ｏインタフェース９０３０は、例えば、Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ（ＬＰＣ）バス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス標準またはユニバーサルシリアルバス（ＵＳＢ）標準の変形型などの種々のタイプの周辺バスを通じて取り付けられたデバイスに対するサポートを含むことができる。いくつかの実施形態では、Ｉ／Ｏインタフェース９０３０の機能は、例えば、ノースブリッジ及びサウスブリッジなどの２つ以上の別個のコンポーネントに分離されても良い。さらに、いくつかの実施形態では、システムメモリ９０２０へのインタフェースなどのＩ／Ｏインタフェース９０３０の機能のうちのいくつかまたは全ては、プロセッサ９０１０に直接組み込まれても良い。
【００４８】
ネットワークインタフェース９０４０は、コンピューティングデバイス９０００と、例えば、図１乃至図６に示されたような他のコンピュータシステムまたはデバイスなど、ネットワークまたはネットワーク（複数）９０５０に接続された他のデバイス９０６０との間でデータが交換されることを可能にするように構成されても良い。種々の実施形態では、ネットワークインタフェース９０４０は、例えば、イーサネット（登録商標）ネットワークのタイプなどのいずれかの適切な有線または無線汎用データネットワークを介した通信をサポートすることができる。加えて、ネットワークインタフェース９０４０は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの電気通信／電話ネットワークを介して、ファイバチャネルＳＡＮなどのストレージエリアネットワークを介して、またはいずれかの他の適切なタイプのネットワーク及び／もしくはプロトコルを介した通信をサポートすることができる。
【００４９】
いくつかの実施形態では、システムメモリ９０２０は、対応する方法及び装置の実施形態を実施するための図１乃至図６について上記説明されたようなプログラム命令及びデータを記憶するように構成されたコンピュータアクセス可能媒体の１つの実施形態とすることができる。しかしながら、他の実施形態では、プログラム命令及び／またはデータは、異なるタイプのコンピュータアクセス可能媒体上で受信、送信、または記憶されても良い。一般的に言うと、コンピュータアクセス可能媒体は、Ｉ／Ｏインタフェース９０３０を介してコンピューティングデバイス９０００に結合された磁気または光学媒体、例えば、ディスクまたはＤＶＤ／ＣＤなどの非一時的記憶媒体またはメモリ媒体を含むことができる。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ９０２０または別のタイプのメモリとしてコンピューティングデバイス９０００のいくつかの実施形態に含めることができる、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどのいずれかの揮発性または不揮発性媒体を含むことができる。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース９０４０を介して実施することができるネットワーク及び／または無線リンクなどの通信媒体を介して搬送される、電気、電磁気、またはデジタル信号などの伝送媒体または信号を含むことができる。図７に示されたような複数のコンピューティングデバイスのうちの一部または全ては、種々の実施形態における説明された機能を実施するために使用されても良く、例えば、様々な異なるデバイス及びサーバ上で稼働するソフトウェアコンポーネントは、機能を提供するために協働することができる。いくつかの実施形態では、説明された機能の一部は、汎用コンピュータシステムを使用して実施されることに加えて、またはその代わりに、記憶装置、ネットワークデバイス、または特殊目的コンピュータシステムを使用して実施されても良い。本明細書で使用されるように、用語「コンピューティングデバイス」は、少なくとも全てのそれらのタイプのデバイスを指し、それらのタイプのデバイスに限定されない。
【００５０】
結論
種々の実施形態はさらに、上述の説明に従って実施される命令及び／またはデータをコンピュータアクセス可能媒体上で受信すること、送信すること、及び／または記憶することを含むことができる。一般的に言うと、コンピュータアクセス可能媒体は、磁気または光学媒体、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭ、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどの揮発性または不揮発性媒体とともに、ネットワーク及び／または無線リンクなどの通信媒体を介して搬送される、電気、電磁気、またはデジタル信号などの伝送媒体または信号を含むことができる。
【００５１】
上述したことは、以下の条項を考慮してより良く理解することができる。
１．プロバイダネットワークの複数のコンピューティングデバイスにおいて実施されるアプリケーション展開サービスの１つまたは複数のコンポーネントを備え、
前記１つまたは複数のコンポーネントは、
前記プロバイダネットワークの１つまたは複数の実行プラットフォームにおいて実行されることになる特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信し、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信し、前記特定のエンドポイントは、前記特定のアプリケーションと関連付けられた複数の展開タスクカテゴリのうちの少なくとも第１の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになり、
前記１つまたは複数のクライアントの特定のクライアントによって前記特定のエンドポイントに向けられたメッセージからペイロードを抽出し、
前記ペイロードの検査に少なくとも部分的に基づいて、１つまたは複数のセキュリティ確認オペレーションが前記第１の展開タスクカテゴリの展開タスクの実施の前に実行されることになると決定し、
前記１つまたは複数のセキュリティ確認オペレーションが成功したと決定したことに応答して、前記展開タスクを実施し、前記展開タスクは、前記ペイロードで示される展開アーチファクトのバージョンをリポジトリに記憶することを含む、
ように構成される、システム。
【００５２】
２．前記１つまたは複数のコンポーネントは、
前記特定のエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第１のセットの表示、及び前記通信チャネルに対して確立される異なるエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第２のセットの表示を記憶するように構成される、条項１に記載のシステム。
【００５３】
３．前記１つまたは複数のコンポーネントは、
前記通信チャネルの第２のエンドポイントの確立を開始するように構成され、前記第２のエンドポイントは、前記複数の展開タスクカテゴリのうちの少なくとも第２の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになる、条項１に記載のシステム。
【００５４】
４．前記１つまたは複数のセキュリティ確認オペレーションは、
（ａ）多段階認証プロトコルまたは（ｂ）多者認証プロトコルのうちの１つまたは複数の使用を含む、条項１に記載のシステム。
【００５５】
５．前記複数の展開タスクカテゴリは、
（ａ）ソースコードを更新すること、（ｂ）実行可能パッケージを展開すること、（ｃ）アプリケーション構成設定を修正すること、または（ｄ）アプリケーションを実行するために使用されるリソースセットを修正すること、のうちの１つまたは複数を含む、条項１に記載のシステム。
【００５６】
６．プロバイダネットワークの１つまたは複数のコンピューティングデバイスにおいて実施されるアプリケーション展開サービスにおいて、
特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信することと、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信することと、
前記特定のエンドポイントを介して受信される第１のメッセージに応答して、前記メッセージ及び前記特定のアプリケーションに対応する第１の展開タスクの実施の前に、１つまたは複数のセキュリティ確認オペレーションが実行されることになると決定することと、
前記１つまたは複数のセキュリティ確認オペレーションを完了したことに応答して、前記第１のメッセージで示される少なくとも第１のアーチファクトを使用して前記第１の展開タスクを実施することと、
を実行すること、を備える、方法。
【００５７】
７．前記特定のエンドポイントの前記指示は、
（ａ）電子メールアドレス、（ｂ）ショートメッセージサービス（ＳＭＳ）宛先アドレス、または（ｃ）ファイル転送宛先アドレスのうちの１つを含む、条項６に記載の方法。
【００５８】
８．前記アプリケーション展開サービスによって、
前記特定のエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第１のセットの表示、及び前記通信チャネルに対して確立される異なるエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第２のセットの表示を記憶すること、を実行することをさらに備える、条項６に記載の方法。
【００５９】
９．前記第１の展開は、前記特定のアプリケーションの複数の展開タスクカテゴリの第１の展開タスクカテゴリに属し、前記アプリケーション展開サービスによって、
前記通信チャネルの第２のエンドポイントの確立を開始すること、を実行することをさらに備え、前記第２のエンドポイントは、前記複数の展開タスクカテゴリの少なくとも第２の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになる、条項６に記載の方法。
【００６０】
１０．前記複数の展開タスクカテゴリは、
（ａ）ソースコードを更新すること、（ｂ）実行可能パッケージを展開すること、（ｃ）アプリケーション構成設定を修正すること、または（ｄ）アプリケーションを実行するために使用されるリソースセットを修正すること、のうちの１つまたは複数を含む、条項９に記載の方法。
【００６１】
１１．前記１つまたは複数のセキュリティ確認オペレーションは、
（ａ）多段階認証プロトコル、または（ｂ）多者認証プロトコル、のうちの１つまたは複数の使用を含む、条項６に記載の方法。
【００６２】
１２．前記第１の展開タスクを前記実施することは、
前記第１のメッセージに含まれる特定のソースコードファイルが記憶されることになるソースコードの階層内の特定の位置を決定することと、
前記特定のソースコードファイルを前記特定の位置に記憶することと、
前記特定のソースコードファイルを使用して、前記特定のアプリケーションの実行可能バージョンを生成することと、
前記実行可能バージョンを使用して、１つまたは複数の実行プラットフォームにおいて前記特定のアプリケーションの実行をインスタンス化することと、を含む、条項６に記載の方法。
【００６３】
１３．前記アプリケーション展開サービスによって、
前記特定のエンドポイントにおいて第２のメッセージを受信することに応答して、前記第２のメッセージで示される第２の展開タスクを実施する前に、スケジュールされることになる追加のセキュリティ確認オペレーションがないと決定すること、を実行することをさらに備える、条項６に記載の方法。
【００６４】
１４．前記アプリケーション展開サービスによって、
プログラムインタフェースを介して、前記特定のアプリケーションと関連付けられた認可されたエンティティが、前記通信チャネルを介して展開アーチファクトを提出する前記１つまたは複数のクライアントの権利を取り消したことの指示を受信することと、
前記特定のエンドポイントにおいて前記指示に続く第２のメッセージを受信したことに応答して、前記第２のメッセージを破棄することと、を実行することをさらに備える、条項６に記載の方法。
【００６５】
１５．前記アプリケーション展開サービスによって、
前記第２のメッセージが、前記特定のエンドポイントと関連付けられた１つまたは複数のデータ転送制約に違反すると決定したことに少なくとも部分的に基づいて、前記特定のエンドポイントに向けられた第２のメッセージを拒否すること、を実行することをさらに備える、条項６に記載の方法。
【００６６】
１６．１つまたは複数のプロセッサ上で実行されるときに、アプリケーション展開サービスの１つまたは複数のコンポーネントを実施するプログラム命令を記憶する、非一時的コンピュータアクセス可能記憶媒体であって、
特定のアプリケーションの１つまたは複数の展開アーチファクトを送信するために１つまたは複数のクライアントによって使用されることになる通信チャネルに対する第１の要求を受信し、
前記１つまたは複数のクライアントと関連付けられた少なくとも１つの宛先に、通信チャネルの特定のエンドポイントの指示を送信し、
前記特定のエンドポイントを介して受信される第１のメッセージに応答して、前記メッセージ及び前記特定のアプリケーションに対応する第１の展開タスクの実施の前に、１つまたは複数のセキュリティ確認オペレーションが実行されることになると決定し、
前記１つまたは複数のセキュリティ確認オペレーションが完了したことに応答して、前記第１のメッセージで示される少なくとも第１のアーチファクトを使用して前記第１の展開タスクを実施する、
前記非一時的コンピュータアクセス可能記憶媒体。
【００６７】
１７．前記特定のエンドポイントの前記指示は、
（ａ）電子メールアドレス、（ｂ）ショートメッセージサービス（ＳＭＳ）宛先アドレス、または（ｃ）ファイル転送宛先アドレスのうちの１つを含む、条項１６に記載の非一時的コンピュータアクセス可能記憶媒体。
【００６８】
１８．前記アプリケーション展開サービスの前記１つまたは複数のコンポーネントは、
前記特定のエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第１のセットの表示、及び前記通信チャネルに対して確立される異なるエンドポイントにメッセージを提出することが認可される１つまたは複数の提出者のうちの第２のセットの表示、を記憶するようにさらに構成される、条項１６に記載の非一時的コンピュータアクセス可能記憶媒体。
【００６９】
１９．前記第１の展開タスクは、前記特定のアプリケーションの複数の展開タスクカテゴリの第１の展開タスクカテゴリに属し、前記アプリケーション展開サービスの前記１つまたは複数のコンポーネントは、
前記通信チャネルの第２のエンドポイントの確立を開始するようにさらに構成され、前記第２のエンドポイントは、前記複数の展開タスクカテゴリの少なくとも第２の展開タスクカテゴリと関連付けられた展開アーチファクトを送信するために使用されることになる、条項１６に記載の非一時的コンピュータアクセス可能記憶媒体。
【００７０】
２０．前記複数の展開タスクカテゴリは、
（ａ）ソースコードを更新すること、（ｂ）実行可能パッケージを展開すること、（ｃ）アプリケーション構成設定を修正すること、または（ｄ）アプリケーションを実行するために使用されるリソースセットを修正することのうちの１つまたは複数を含む、条項１９に記載の非一時的コンピュータアクセス可能記憶媒体。
【００７１】
図面で示され、本明細書で説明された種々の方法は、方法の例示的な実施形態を表している。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実施されても良い。方法の順序は変更されても良く、種々の要素が追加、再順序付け、結合、省略、修正などがされても良い。
【００７２】
この開示の利点を有することが当業者に明白であるので、種々の修正及び変更がなされても良い。全てのそのような修正及び変更を含むことを意図しており、したがって、上記説明が限定的な意味ではなく、例示的であると考えられることになる。
【図１】
0006411698.tif 000002
【図２】
0006411698.tif 000003
【図３】
0006411698.tif 000004
【図４ａ】
0006411698.tif 000005
【図４ｂ】
0006411698.tif 000006
【図４ｃ】
0006411698.tif 000007
【図４ｄ】
0006411698.tif 000008
【図４ｅ】
0006411698.tif 000009
【図５】
0006411698.tif 000010
【図６】
0006411698.tif 000011
【図７】
0006411698.tif 000012