JP6463494B2 - プログラムコードの低レイテンシ実行のためのセキュリティプロトコル - Google Patents

プログラムコードの低レイテンシ実行のためのセキュリティプロトコル Download PDF

Info

Publication number
JP6463494B2
JP6463494B2 JP2017540997A JP2017540997A JP6463494B2 JP 6463494 B2 JP6463494 B2 JP 6463494B2 JP 2017540997 A JP2017540997 A JP 2017540997A JP 2017540997 A JP2017540997 A JP 2017540997A JP 6463494 B2 JP6463494 B2 JP 6463494B2
Authority
JP
Japan
Prior art keywords
container
program code
user
virtual machine
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017540997A
Other languages
English (en)
Other versions
JP2018512087A (ja
Inventor
ティモシー アレン ワグナー
ティモシー アレン ワグナー
ディラン チャンドラー トーマス
ディラン チャンドラー トーマス
アジェイ ネア
アジェイ ネア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2018512087A publication Critical patent/JP2018512087A/ja
Application granted granted Critical
Publication of JP6463494B2 publication Critical patent/JP6463494B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Description

<他出願の相互参照>
本出願の出願人は、2015年2月4日に以下の米国特許出願を先に出願済みである。
出願番号 14/613,735
発明の名称 SECURITY PROTOCOLS FOR LOW LATENCY EXECUTION OF PROGRAM CODE
出願番号 14/613,723
発明の名称 SECURITY PROTOCOLS FOR LOW LATENCY EXECUTION OF PROGRAM CODE
本出願の出願人は、2014年9月30日に以下の米国特許出願を先に出願済みである。
出願番号 14/502,589
発明の名称 発明の名称 MESSAGE−BASED COMPUTATION REQUEST SCHEDULING
出願番号 14/502,810
発明の名称 LOW LATENCY COMPUTATIONAL CAPACITY PROVISIONING
出願番号 14/502,714
発明の名称 AUTOMATIC MANAGEMENT OF LOW LATENCY COMPUTATIONAL CAPACITY
出願番号 14/502,992
発明の名称 THREADING AS A SERVICE
出願番号 14/502,648
発明の名称 PROGRAMMATIC EVENT DETECTION AND MESSAGE GENERATION FOR REQUESTS TO EXECUTE PROGRAM CODE
出願番号 14/502,741
発明の名称 PROCESSING EVENT MESSAGES FOR USER REQUESTS TO EXECUTE PROGRAM CODE
出願番号 14/502,620
発明の名称 DYNAMIC CODE DEPLOYMENT AND VERSIONING
上記に参照される出願の開示は、その全体において参照により本明細書に組み込まれる。
一般的に説明すると、コンピューティングデバイスは、通信ネットワーク、または一連の通信ネットワークを利用して、データを交換する。企業及び組織は、いくつかのコンピューティングデバイスを相互接続するコンピュータネットワークを運用して、サードパーティに対する運用を支援する、またはサービスを提供する。コンピューティングシステムは、単一の地理的な場所に配置されることも、または複数の別個の地理的な場所に配置される(たとえば、プライベートもしくは公共の通信ネットワークを介して相互接続される)こともある。具体的には、データセンタ、または本明細書においては概して「データセンタ(data center)」と呼ばれるデータ処理センタは、データセンタのユーザにコンピューティングリソースを提供するために、いくつかの相互接続されたコンピューティングシステムを含み得る。データセンタは、組織の代わりに運用されるプライベートデータセンタ、または一般公共の代わりにもしくは利益のために運用される公共データセンタであってよい。
データセンタリソースの利用上昇を促進するために、仮想化技術は、単一の物理コンピューティングデバイスが、データセンタのユーザに独立したコンピューティングデバイスとして現れ、動作する仮想マシンの1つまたは複数のインスタンスをホストすることを可能にし得る。仮想化により、単一の物理コンピューティングデバイスは、動的な形で仮想マシンを作成する、維持する、削除する、またはそうでければ管理することができる。ひいては、ユーザは、単一のコンピューティングデバイス、またはネットワーク化されたコンピューティングデバイスの構成を含んだ、データセンタからのコンピュータリソースを要求することができ、様々な数の仮想マシンリソースを提供することができる。
いくつかのシナリオにおいては、仮想マシンインスタンスは、特有の機能性を提供するように、いくつかの仮想マシンインスタンスタイプに従って構成され得る。たとえば、様々なコンピューティングデバイスは、コンピューティングデバイスが、相異なる所望の機能性を提供できるようにするために、または同様の機能性をより効率的に提供できるようにするために、オペレーティングシステムまたはオペレーティングシステム構成され得て、仮想化されたハードウェアリソース及びソフトウェアアプリケーションの相異なる組合せに関連付けられ得る。これらの仮想マシンインスタンスタイプ構成は、仮想マシンが、一旦、起動されると実行することになるソフトウェアを含んでいる静的データ(たとえば、それらの構成及びデータファイルなどと一緒にOSならびにアプリケーション)を含むデバイスイメージ内に含まれていることが多い。デバイスイメージは、通常、インスタンスを作成する、または初期化するのに使用されるディスクにおいて記憶される。したがって、コンピューティングデバイスは、デバイスイメージを処理して、所望のソフトウェア構成を実装することができる。
本開示の前述の態様、及び付随する利点の多くは、これが、添付の図面と併せて解釈されるとき、以下の詳細な説明を参照することによってより良く理解されるようになるにつれて、より容易に理解されることになるであろう。
例示的な態様による、低レイテンシの計算能力を提供するための例示的な環境を示すブロック略図である。 図1の仮想計算システムなど、仮想計算システムによって実装される、低レイテンシの計算能力を提供するための環境におけるセキュリティを管理するためのセキュリティマネージャを提供するコンピューティングデバイスの全体的なアーキテクチャを示す。 図1の仮想計算システムなど、仮想計算システムによって実装される、ユーザ指定のセキュリティポリシに関与するセキュリティルーチンを示すフロー図である。 図1の仮想計算システムなど、仮想計算システムによって実装される、補助サービスとのインターフェースに関与するセキュリティルーチンを示すフロー図である。 図1の仮想計算システムなど、仮想計算システムによって実装される、相異なる信頼レベルに関連付けられる部分でのプログラムコードの実行に関与するセキュリティルーチンを示すフロー図である。 図1の仮想計算システムなど、仮想計算システムによって実装される、補助サービスとのインターフェースに関与するセキュリティルーチンのための例示的な環境を示すブロック略図である。 図1の仮想計算システムなど、仮想計算システムによって実装される、相異なる信頼レベルに関連付けられる部分でのプログラムコードの実行に関与するセキュリティルーチンのための例示的な環境を示すブロック略図である。
企業及び組織はもはや、コンピューティング動作を行う(たとえば、スレッド、プログラム、関数、ソフトウェア、ルーチン、サブルーチン、処理などを含むコードを実行する)ために、自らのデータセンタを取得し、管理する必要はない。クラウドコンピューティングの出現により、従来はハードウェアコンピューティングデバイスによって提供されていたストレージ空間及び計算パワーは、今や、インターネット(Internet)を介して数分で獲得され、構成され得る。したがって、開発者は、物理マシンの取得について悩む必要なく、所望の量のコンピューティングリソースをすぐに購入することができる。そのようなコンピューティングリソースは、通常、仮想コンピューティングリソース、または仮想マシンインスタンスの形態で購入される。仮想マシンのこれらのインスタンスは、物理マシン(たとえば、コンピュータ)のソフトウェアの実装であり、それは、物理コンピューティングデバイスにおいてホストされ、それ自体のオペレーティングシステム及び従来から物理マシンにおいて提供されている他のアプリケーションを含んでよい。これらの仮想マシンインスタンスには、仮想マシンインスタンスにおいて動作するアプリケーションが、要求することができ、物理コンピュータと同じ形で利用することができるコンピューティングリソース(たとえば、メモリ、CPU、ディスク、ネットワークなど)の組が構成されている。
しかしながら、仮想コンピューティングリソースが(たとえば、仮想マシンインスタンスの形態で)購入される場合であっても、開発者は依然として、どのくらいの数またはどのタイプの仮想マシンインスタンスを購入するか、及びそれらをどのくらいの間、保持するかを決めなくてはならない。たとえば、仮想マシンインスタンスを使用する費用は、タイプ、及びそれらが貸し出される時間数に応じて変わり得る。加えて、仮想マシンが貸し出し可能な最小時間は、通常、数時間のオーダーである。さらには、開発者は、ハードウェア及びソフトウェアのリソース(たとえば、オペレーティングシステム及び言語ランタイムのタイプなど)を指定して、仮想マシンにインストールしなくてはならない。開発者が有する可能性がある他の懸念事項には、過剰利用(たとえば、取得するコンピューティングリソースが少な過ぎること、及びパフォーマンス問題を抱えていること)、利用不足(たとえば、コードを実行するのに必要よりも多いコンピューティングリソースを取得すること、したがって過剰に支払うこと)、トラフィックの変化の予測(たとえば、それにより、開発者は、いつ拡大すべきか、または縮小すべきかを知る)、ならびにユーザが数秒の、または数ミリ秒ものオーダーのコンピューティング能力を望んでいる場合があったとしても、3〜10分以上かかる可能性があるインスタンス及び言語ランタイムの立上げ遅延が含まれる。したがって、ユーザが、サービスプロバイダによって提供される仮想マシンインスタンスを活用できるようにする改善された方法が望ましい。
本開示の態様によれば、ユーザ要求が受信されるやいなや、使用の準備ができる事前初期化された仮想マシンインスタンスのプールを維持することによって、ユーザコードの実行(たとえば、インスタンス及び言語ランタイムの立上げ時間)に関連付けられる遅延(時として、レイテンシと呼ばれる)は、有意に低減し得る。
概して説明すると、本開示の態様は、仮想マシンインスタンス、及びその中に作成されるコンテナの管理に関する。具体的には、仮想計算システムにおける仮想マシンインスタンスの管理を容易にするシステム及び方法が開示される。仮想計算システムは、1つまたは複数のソフトウェアコンポーネント(たとえば、オペレーティングシステム、言語ランタイム、ライブラリなど)がその上にロードされた仮想マシンインスタンスのプールを維持する。仮想マシンインスタンスのプールを維持することは、新規インスタンスを作成すること、外部インスタンスプロビジョニングサービスから新規インスタンスを取得すること、インスタンスを破壊すること、インスタンスをユーザに割り当てること/再割当てすること、インスタンス(たとえば、その中のコンテナまたはリソース)を修正することなどを含み得る。プールの中の仮想マシンインスタンスは、プログラムコードを実行するためのユーザ要求をサービスするように指定され得る。本開示においては、「プログラムコード(program code)」、「ユーザコード(user code)」、及び「クラウド関数(cloud function)」という語句は、時として、互換的に用いられ得る。プログラムコードは、仮想マシンインスタンスにおいて作成される孤立コンテナにおいて実行され得る。プールの中の仮想マシンインスタンスは、要求が受信される時点までに、既に、起動されており、特定のオペレーティングシステム及び言語ランタイムがロードされているので、要求を(たとえば、仮想マシンインスタンスにおいて作成される1つまたは複数のコンテナにおいてユーザコードを実行することによって)扱うことができる計算能力を見つけることに関連付けられる遅延は、有意に低減する。
別の態様においては、仮想計算システムは、ユーザコードを実行するために割り当てられるリソースの量に関する情報についてモニタリングし、ログを取ってもよい。そうすることによって、仮想計算システムは、割り当てられたリソースの量を調整することによって、ユーザコード実行についてのパフォーマンスを改善するための機会を識別することができ得る。過剰利用の場合には、割り当てられたリソースの量を増加させることによって、エラー率が低減し得、利用不足の場合には、割り当てられたリソースの量を減少させることによって、ユーザコードの実行に関連付けられる費用が低減し得る。
次に、本開示の具体的な実施形態及び例示的な適用例について、図面を参照して説明する。これらの実施形態及び例示的な適用例は、本開示を例示するように意図するものであり、限定するように意図するものではない。
図1を参照して、仮想環境100の実施形態を示すブロック略図について説明する。図1に示されている例は、ユーザコンピューティングデバイス102のユーザ(たとえば、開発者など)が、仮想計算システム110によって提供される仮想コンピューティングリソースを使用して様々なプログラムコードを実行してよい仮想環境100を含む。
例として、仮想計算システム110と通信し、デスクトップコンピュータ、ラップトップ、及びモバイルフォンを含む様々な例示的ユーザコンピューティングデバイス102が、示されている。概して、ユーザコンピューティングデバイス102は、デスクトップ、ラップトップ、モバイルフォン(またはスマートフォン)、タブレット、キオスク、ワイヤレスデバイス、及び他の電子デバイスなどの任意のコンピューティングデバイスとすることができる。加えて、ユーザコンピューティングデバイス102は、同じまたは相異なるデータセンタにおいて動作するウェブサービスを含んでよく、ここで、たとえば、相異なるウェブサービスは、本明細書に説明されている1つまたは複数の技法を行うために互いにプログラムに従って通信してよい。さらには、ユーザコンピューティングデバイス102は、インターネット・アプライアンス及び接続されたデバイスなど、モノのインターネット(IoT:Internet of Things)デバイスを含んでよい。仮想計算システム110は、ユーザコンピューティングデバイス102に、1つまたは複数のユーザインターフェース、コマンドラインインターフェース(CLI:command−line interface)、アプリケーションプログラミングインターフェース(API:application programing interface)、及び/または他のプログラマチックインターフェースを提供して、ユーザコードを生成しアップロードすること、ユーザコードを呼び出す(たとえば、仮想計算システム110においてユーザコードを実行するための要求を提出する)こと、イベントベースのジョブもしくはタイムドジョブをスケジューリングすること、ユーザコードをトラッキングすること、ならびに/またはユーザの要求及び/もしくはユーザコードに関する他のロギングまたはモニタリング情報を視聴してよい。1つまたは複数の実施形態は、ユーザインターフェースを使用するように本明細書には説明され得るが、加えてまたは代替として、そのような実施形態が、任意のCLI、API、または他のプログラマチックインターフェースを使用し得ることを認識されたい。
ユーザコンピューティングデバイス102は、ネットワーク104を介して仮想計算システム110にアクセスする。ネットワーク104は、任意のワイヤードネットワーク、ワイヤレスネットワーク、またはそれらの組合せであってよい。加えて、ネットワーク104は、パーソナルエリアネットワーク、ローカルエリアネットワーク、広域ネットワーク、(たとえば、ラジオもしくはテレビの)無線放送ネットワーク、ケーブルネットワーク、衛星ネットワーク、セルラ電話ネットワーク、またはそれらの組合せであってよい。たとえば、ネットワーク104は、可能性としてインターネットなどの様々な別個のパーティによって動作される、リンクされたネットワークの公的にアクセス可能なネットワークであってよい。いくつかの実施形態においては、ネットワーク104は、会社または大学のイントラネットなど、プライベートまたはセミプライベートのネットワークであってもよい。ネットワーク104は、グローバルシステムフォーモバイルコミュニケーションズ(GSM:Global System for Mobile Communications)ネットワーク、符号分割多元接続(CDMA:Code Division Multiple Access)ネットワーク、ロングタームエボリューション(LTE:Long Term Evolution)ネットワーク、もしくは任意の他のタイプのワイヤレスネットワークなど、1つまたは複数のワイヤレスネットワークを含むことができる。ネットワーク104は、インターネットまたは他の前述のタイプのネットワークのうちのいずれかを介して通信するのにプロトコル及びコンポーネントを使用することができる。たとえば、ネットワーク104によって使用されるプロトコルには、ハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)、HTTPセキュア(HTTPS:HTTP Secure)、メッセージキューテレメトリトランスポート(MQTT:Message Queue Telemetry Transport)、及び制約付きアプリケーションプロトコル(CoAP:Constrained Application Protocol)などを挙げることができる。インターネットまたは他の前述のタイプの通信ネットワークのうちのいずれかを介して通信するためのプロトコルならびにコンポーネントは、当業者にはよく知られており、したがって、本明細書においてより詳細には説明しない。
仮想計算システム110は、1つまたは複数のコンピュータネットワークを使用して相互接続されているいくつかのコンピュータシステムを含む分散型コンピューティング環境において動作しているように図1には示されている。仮想計算システム110はまた、図1に例示されているよりも少ない数または多い数のデバイスを有するコンピューティング環境内で動作することも可能であり得る。したがって、図1における仮想計算システム110の描写は、例示として解釈すべきであり、本開示に対する限定として解釈すべきではない。たとえば、仮想計算システム110またはその様々な構成要素は、本明細書に説明されている方法の少なくとも一部分を実装するために、様々なWebサービスコンポーネント、ホスト型もしくは「クラウド(cloud)」コンピューティング環境、及び/またはピアツーピアネットワーク構成を実装することが可能であり得る。
さらには、仮想計算システム110は、ハードウェア及び/またはソフトウェアにおいて実装され得、例として、本明細書に説明されることになる様々な特徴を行うためのコンピュータ実行可能命令を実行するように構成された物理コンピュータハードウェアにおいて実装される1つまたは複数の物理もしくは仮想サーバを含んでよい。1つまたは複数のサーバは、例として、1つまたは複数のデータセンタにおいて、地理的に分散されても、または地理的に同じ場所に配置されてもよい。
図1に示されている環境においては、仮想環境100は、フロントエンド120と、ウォーミングプールマネージャ130と、ワーカマネージャ140と、セキュリティマネージャ150とを含む仮想計算システム110を含む。示されている例においては、仮想マシンインスタンス(「インスタンス」)152、154は、ウォーミングプールマネージャ130によって管理されるウォーミングプール130Aの中に示され、インスタンス156、157、158、159は、ワーカマネージャ140によって管理されるアクティブプール140Aの中に示されている。仮想計算システム110内の様々なコンポーネントの図は、本質的に論理的であり、コンポーネントのうちの1つまたは複数は、単一のコンピューティングデバイスまたは複数のコンピューティングデバイスによって実装され得る。たとえば、インスタンス152、154、156、157、158、159は、相異なる様々な地理的な領域の中の1つまたは複数の物理コンピューティングデバイスにおいて実装され得る。同様に、フロントエンド120、ウォーミングプールマネージャ130、ワーカマネージャ140、及びセキュリティマネージャ150はそれぞれ、複数の物理コンピューティングデバイスにわたって実装され得る。代替として、フロントエンド120、ウォーミングプールマネージャ130、ワーカマネージャ140、及びセキュリティマネージャ150のうちの1つまたは複数は、単一の物理コンピューティングデバイスにおいて実装され得る。いくつかの実施形態においては、仮想計算システム110は、複数のフロントエンド、複数のウォーミングプールマネージャ、複数のワーカマネージャ、及び/または複数の能力マネージャを備えてよい。6つの仮想マシンインスタンスが、図1の例には示されているが、本明細書に説明されている実施形態は、そのように限定されず、当業者は、仮想計算システム110が、任意の数の物理コンピューティングデバイスを使用して実装される任意の数の仮想マシンインスタンスを備え得ることを認識するであろう。同様に、単一のウォーミングプール及び単一のアクティブプールが、図1の例には示されているが、本明細書に説明されている実施形態は、そのように限定されず、当業者は、仮想計算システム110が、任意の数のウォーミングプール及びアクティブプールを備え得ることを認識するであろう。
図1の例においては、仮想計算システム110は、ネットワーク104に接続されているように示されている。いくつかの実施形態においては、仮想計算システム110内のコンポーネントのうちのいずれも、ネットワーク104を介して仮想環境100の他のコンポーネント(たとえば、ユーザコンピューティングデバイス102、ならびにモニタリング/ロギング/課金サービス107、ストレージサービス108、インスタンスプロビジョニングサービス109、及び/または仮想計算システム110と通信することができる他のサービスを含むことができる補助サービス106)と通信することができる。他の実施形態においては、仮想計算システム110のコンポーネントがすべて、仮想環境100の他のコンポーネントと通信できるとは限らない。1つの例においては、フロントエンド120のみが、ネットワーク104に接続され得、仮想計算システム110の他のコンポーネントは、フロントエンド120を介して仮想環境100の他のコンポーネントと通信し得る。
ユーザは、仮想計算システム110を使用して、その上のユーザコードを実行してよい。たとえば、ユーザは、自分が開発したウェブまたはモバイルアプリケーションに関係してコード片を実行したいと望む場合がある。コードを実行する1つのやり方は、サービスとしてインフラストラクチャを提供するサービスプロバイダから仮想マシンインスタンスを取得すること、ユーザのニーズに合うように仮想マシンインスタンスを構成すること、及び構成された仮想マシンインスタンスを使用してコードを実行することになる。代替として、ユーザは、コード実行要求を仮想計算システム110に送信してよい。仮想計算システム110は、コード実行要求に基づいて、計算能力(たとえば、より詳細に後述されるコンテナ、インスタンスなど)の取得及び構成設定を扱い、その計算能力を使用してコードを実行することができる。仮想計算システム110は、ボリュームに基づいて、自動的に拡大及び縮小することができ、それによって、ユーザは、過剰利用(たとえば、取得するコンピューティングリソースが少な過ぎること、及びパフォーマンス問題を抱えていること)、または利用不足(たとえば、コードを実行するのに必要よりも多いコンピューティングリソースを取得すること、したがって過剰に支払うこと)について気にかけなくてはならない負担から開放され得る。
フロントエンド120は、仮想計算システム110においてユーザコードを実行するための要求をすべて処理する。1つの実施形態においては、フロントエンド120は、仮想計算システム110によって提供される他のサービスすべてに対して、フロントドアとして機能する。フロントエンド120は、要求を処理し、確実に要求が適正に承認されるようにする。たとえば、フロントエンド120は、要求に関連付けられるユーザが、要求において指定されるユーザコードにアクセスすることを承認されるかどうかを判定してよい。
本明細書に用いられているユーザコードは、特有のプログラム言語で記述された任意のプログラムコード(たとえば、プログラム、ルーチン、サブルーチン、スレッドなど)を示し得る。本開示においては、「コード(code)」、「ユーザコード(user code)」、及び「プログラムコード(program code)」という用語は、互換的に用いられ得る。そのようなユーザコードは、たとえば、ユーザによって開発される特定のウェブアプリケーションまたはモバイルアプリケーションに関係して、特有のタスクを達成するために実行され得る。たとえば、ユーザコードは、JavaScript(node.js)、Java、Python、及び/またはRubyで記述され得る。要求は、ユーザコード(またはその場所)と、ユーザコードを実行するのに使用されることになる1つまたは複数の引数とを含み得る。たとえば、ユーザは、ユーザコードを実行するための要求と一緒にユーザコードを提供してよい。別の例においては、要求は、先にアップロードされたプログラムコードを(たとえば、コードをアップロードするためのAPIを使用して)、その名称またはその固有IDによって識別し得る。さらなる別の例においては、コードは、要求が仮想計算システム110によって受信されるよりも前に、要求に含められるだけでなく、別個の場所(たとえば、ストレージサービス108、または仮想計算システム110の内部のストレージサービス)にアップロードされ得る。仮想計算システム110は、要求が処理される時点においてコードが利用可能であるところに基づいて、そのコード実行戦略を変更してよい。
フロントエンド120は、ユーザからのハイパーテキスト転送プロトコルセキュア(HTTPS)要求に応答して、そのようなユーザコードを実行するための要求を受信してもよい。また、HTTPS要求に含まれている任意の情報(たとえば、ヘッダ及びパラメータ)も、ユーザコードを実行するときに処理され、利用され得る。上に論じたように、たとえば、HTTP、MQTT、及びCoAPを含む任意の他のプロトコルを使用して、コード実行要求を含んでいるメッセージをフロントエンド120に転送してよい。フロントエンド120はまた、ユーザが自動要求生成をトリガするために登録したイベントなどのイベントが検出されるとき、そのようなユーザコードを実行するための要求を受信し得る。たとえば、ユーザは、補助サービス106にユーザコードを登録し、特定のイベントが行われた(たとえば、新規ファイルがアップロードされた)ときはいつでも、ユーザコードを実行するための要求がフロントエンド120に送信されることを指定していてもよい。代替として、ユーザは、タイムドジョブ(timed job)を登録していても(たとえば、ユーザコードを24時間ごとに実行しても)よい。そのような例においては、スケジューリングされた時間がタイムドジョブに達すると、ユーザコードを実行するための要求は、フロントエンド120に送信され得る。さらなる別の例においては、フロントエンド120は、着信コード実行要求のキューを有してよく、ユーザのバッチジョブが仮想計算システムの作業キューから除去されたとき、フロントエンド120は、ユーザ要求を処理してよい。さらなる別の例においては、要求は、仮想計算システム110内の別のコンポーネント、または図1には示されていない他のサーバもしくはサービスを起源としてよい。
ユーザ要求は、ユーザコード一緒に使用されることになる1つまたは複数のサードバーティライブラリ(ネイティブライブラリを含む)を指定してよい。1つの実施形態においては、ユーザ要求は、ユーザコードならびに任意のライブラリ(及び/またはそのストレージ場所の識別情報)を含んでいるZIPファイルである。いくつかの実施形態においては、ユーザ要求は、実行されることになるプログラムコード、プログラムコードが記述される言語、要求に関連付けられるユーザ、及び/またはプログラムコードを実行するために確保されることになるコンピューティングリソース(たとえば、メモリ、CPU、ストレージ、ネットワークパケットなど)を示すメタデータ含む。たとえば、プログラムコードには、ユーザによって先にアップロードされ、仮想計算システム110(たとえば、標準ルーチン)によって提供され、及び/またはサードパーティによって提供される要求が与えられ得る。いくつかの実施形態においては、リソースレベルの制約(たとえば、どれくらいのメモリが特定のユーザコードを実行するために割り当てられることになるか)は、特定のユーザコードについて指定され、ユーザコードの各実行にわたって変化しなくてよい。そのような場合においては、仮想計算システム110は、各個々の要求が受信される前に、そのようなリソースレベルの制約にアクセスしてよく、個々の要求は、そのようなリソースレベルの制約を指定しなくてよい。いくつかの実施形態においては、リソースレベルの制約は、時間とともに調整され、単一のプログラムコードの相異なる実行にわたって変化し得る。たとえば、同じプログラムコードを使用して、2つの相異なるデータセットを処理してよく、ここで、一方のデータセットには、他方よりも多くのリソースが必要である。そのような場合においては、ユーザは、2つの相異なる実行について相異なるリソース制約を指定してよく、または仮想計算システム110は、ユーザ及び/もしくはプログラムコードの空間的な(たとえば、仮想計算システム110の他の部分における)、または履歴上の(たとえば、経時的)傾向に基づいて、プログラムコードの各実行に対して割り当てられるリソースの量を自動的に調整し得る。いくつかの実施形態においては、ユーザ要求は、要求がユーザコードを実行しなくてはならない許可の種類を示す許可データなどの他の制約を指定してよい。そのような許可データは、(たとえば、プライベートネットワーク上の)プライベートリソースにアクセスするために仮想計算システム110によって使用され得る。
いくつかの実施形態においては、ユーザ要求は、ユーザ要求を扱うために採用すべき挙動を指定してよい。そのような実施形態においては、ユーザ要求は、ユーザ要求に関連付けられるユーザコードが実行すべきである1つまたは複数の実行モードを可能にするためのインジケータを含み得る。たとえば、要求は、ユーザコードの実行に関係して生成され得るデバッギング及び/またはロギング出力が、ユーザに(たとえば、コンソールユーザインターフェースを介して)戻すように供給されるデバッグモードで、ユーザコードが実行すべきであるかどうかを示すためのフラグまたはヘッダを含んでよい。そのような例においては、仮想計算システム110は、要求を調べ、フラグまたはヘッダを探してよく、それが存在する場合、仮想計算システム110は、ユーザコードが実行されるコンテナの挙動(たとえば、ロギング機能)を修正して、出力データをユーザに戻すように供給させてよい。いくつかの実施形態においては、挙動/モードインジケータは、仮想計算システム110によってユーザに提供されるユーザインターフェースによって、要求に加えられる。ソースコードプロファイリング、リモートデバッギングなどの他の特徴もまた、要求において提供される指示に基づいてイネーブル、またはディスエーブルされ得る。
いくつかの実施形態においては、仮想計算システム110は、複数のフロントエンド120を含み得る。そのような実施形態においては、ロードバランサが、たとえば、ラウンドロビン方式で、着信要求を複数のフロントエンド120に配信するために設けられ得る。いくつかの実施形態においては、ロードバランサが、着信要求を複数のフロントエンド120に配信する方式は、ウォーミングプール130A及び/またはアクティブプール140Aの状態に基づいてよい。たとえば、ウォーミングプール130Aにおける能力が十分であると考えられる場合、要求は、フロントエンド120の個々の能力に基づいて(たとえば、1つまたは複数のロードバランシング制限に基づいて)、複数のフロントエンド120に配信され得る。一方、ウォーミングプール130Aにおける能力が閾値量未満である場合、そのようなロードバランシング制限のうちの1つまたは複数は、除去され得、それにより、要求は、ウォーミングプール130Aから取られる仮想マシンインスタンスの数を低減させる、または最小限に抑える形で、複数のフロントエンド120に配信され得る。たとえば、ロードバランシング制限に従って、要求がフロントエンドAにルート設定すべき場合であっても、フロントエンドAは、要求をサービスするためにウォーミングプール130Aからインスタンスを取り出す必要があるが、フロントエンドBが、同じ要求をサービスするためにそのアクティブプールの中のインスタンスのうちの1つを使用することができる場合、要求は、フロントエンドBにルート設定され得る。
ウォーミングプールマネージャ130は、仮想計算システム110が仮想計算システム110においてユーザコードを実行するための要求を受信したとき、仮想マシンインスタンスが確実にワーカマネージャ140によって使用されるように準備できているようにする。図1に示されている例においては、ウォーミングプールマネージャ130は、ウォーミングプール130Aを管理し、このウォーミングプール130Aは、着信ユーザコード実行要求をサービスするのに使用され得る事前初期化され、事前構成された仮想マシンインスタンスの(時として、プールと呼ばれる)グループである。いくつかの実施形態においては、ウォーミングプールマネージャ130は、仮想マシンインスタンスを、仮想計算システム110内の1つまたは複数の物理コンピューティングマシンにおいて起動させ、ウォーミングプール130Aに追加させる。他の実施形態においては、ウォーミングプールマネージャ130は、補助仮想マシンインスタンスサービス(たとえば、図1のインスタンスプロビジョニングサービス109)と通信して、新規インスタンスを作成し、ウォーミングプール130Aに追加する。いくつかの実施形態においては、ウォーミングプールマネージャ130は、仮想計算システム110内の物理コンピューティングデバイスと1つまたは複数の仮想マシンインスタンスサービスの両方を利用して、フロントエンド120によって受信されるコード実行要求をサービスするのに使用され得る計算能力を取得し、維持してよい。いくつかの実施形態においては、仮想計算システム110は、ウォーミングプール130Aにおける利用可能な能力を制御する(たとえば、増加させる、もしくは減少させる)ための1つまたは複数の論理ノブもしくはスイッチを含んでよい。たとえば、システム管理者は、そのようなノブまたはスイッチを使用して、ピーク時間中にウォーミングプール130Aにおいて利用可能な能力(たとえば、事前起動されたインスタンスの数)を増加させてよい。いくつかの実施形態においては、ウォーミングプール130Aの中の仮想マシンインスタンスは、ユーザのコードを実行するための特有のユーザ要求とは無関係に、所定の構成セットに基づいて構成され得る。所定の構成セットは、ユーザコードを実行するための様々なタイプの仮想マシンインスタンスに対応することができる。ウォーミングプールマネージャ130は、現在または以前のユーザコード実行に関する1つまたは複数のメトリックに基づいて、ウォーミングプール130Aの中の仮想マシンインスタンスのタイプ及び数を最適化することができる。
図1に示されているように、インスタンスは、オペレーティングシステム(OS)及び/または言語ランタイムがその上にロードされていてよい。たとえば、ウォーミングプールマネージャ130によって管理されるウォーミングプール130Aは、インスタンス152、154を含む。インスタンス152は、OS152A、及びランタイム152Bを含む。インスタンス154は、OS154Aを含む。いくつかの実施形態においては、ウォーミングプール130Aの中のインスタンスはまた、コンテナを含むことができ(さらには、オペレーティングシステム、ランタイム、ユーザコードなどのコピーも含み得る)、それについては、より詳細に後述する。インスタンス152は、単一のランタイムを含んでいるように図1には示されているが、他の実施形態においては、図1に示されているインスタンスは、2つ以上のランタイムを含むことができ、それらはそれぞれ、異なるユーザコードを実行するのに使用され得る。いくつかの実施形態においては、ウォーミングプールマネージャ130は、ウォーミングプール130Aの中のインスタンスのリストを維持することができる。インスタンスのリストは、さらには、インスタンスの構成(たとえば、OS、ランタイム、コンテナなど)を指定することができる。
いくつかの実施形態においては、ウォーミングプール130Aの中の仮想マシンインスタンスは、任意のユーザの要求を出すのに使用され得る。1つの実施形態においては、ウォーミングプール130Aの中の仮想マシンインスタンスはすべて、同じまたは実質的に同様の形で構成されている。別の実施形態においては、ウォーミングプール130Aの中の仮想マシンインスタンスは、異なるユーザのニーズに合うように別様に構成され得る。たとえば、仮想マシンインスタンスは、相異なるオペレーティングシステム、相異なる言語ランタイム、及び/または相異なるライブラリがその上にロードされていてよい。さらなる別の実施形態においては、ウォーミングプール130Aの中の仮想マシンインスタンスは、同じまたは実質的に同様の形で(たとえば、同じOS、言語ランタイム、及び/またはライブラリにより)構成され得るが、それらのインスタンスのうちの一部は、相異なるコンテナ構成を有してもよい。たとえば、2つのインスタンスは、PythonとRubyの両方についてのランタイムを有することができるが、一方のインスタンスは、コンテナがPythonコードを実行するように構成されていてよく、他方のインスタンスは、コンテナがRubyコードを実行するように構成されていてよい。いくつかの実施形態においては、同一に構成された仮想マシンインスタンスをそれぞれが有する、複数のウォーミングプール130Aが提供される。
ウォーミングプールマネージャ130は、ウォーミングプール130Aの中の仮想マシンインスタンスを事前構成してよく、それにより、各仮想マシンインスタンスが、仮想計算システム110においてプログラムコードを実行するためのユーザ要求によって要求され、または指定され得る動作条件のうちの少なくとも1つを満たすように構成されている。1つの実施形態においては、動作条件は、潜在的なユーザコードが記述され得るプログラム言語を含んでよい。たとえば、そのような言語には、Java、JavaScript、Python、及びRubyなどを挙げることができる。いくつかの実施形態においては、ユーザコートが記述され得る言語セットは、ユーザコードを実行するための要求を満たすことができる仮想マシンインスタンスの事前初期化を容易にするために、所定のセット(たとえば、4つの言語のセット、ただし、いくつかの実施形態においては、4つよりも多いまたは少ない言語のセットが提供される)に限定され得る。たとえば、ユーザが、仮想計算システム110によって提供されるユーザインターフェースを介して要求を構成しているとき、ユーザインターフェースは、ユーザコードを実行するための所定の動作条件のうちの1つを指定するように、ユーザにプロンプト指示してよい。別の例においては、仮想計算システム110によって提供されるサービスを利用するためのサービスレベル合意(SLA:service−level agreement)は、ユーザ要求が満たすべき条件のセット(たとえば、プログラミング言語、コンピューティングリソースなど)を指定してよく、仮想計算システム110は、要求が、要求を扱う際の条件セットを満たすと仮定してよい。別の例においては、要求において指定される動作条件は、要求を処理するのに使用されることになる計算パワーの量、要求のタイプ(たとえば、HTTP対トリガされたイベント)、要求のタイムアウト(たとえば、要求が終了し得た後の閾値時間)、及びセキュリティポリシ(たとえば、ウォーミングプール130Aの中のどのインスタンスが、どのユーザによって使用可能であるかを制御し得る)などを含み得る。
ワーカマネージャ140は、着信コード実行要求をサービスするのに使用されるインスタンスを管理する。図1に示されている例においては、ワーカマネージャ140は、現在、1人または複数人のユーザに割り当てられている仮想マシンインスタンスの(時として、プールと呼ばれる)グループであるアクティブプール140Aを管理する。仮想マシンインスタンスは、ここでは、特定のユーザに割り当てられていると説明されているが、いくつかの実施形態においては、インスタンスは、ユーザのグループに割り当てられ得、それにより、インスタンスは、ユーザのグループに結び付けられ、グループのいずれのメンバも、インスタンス上のリソースを利用することができる。たとえば、同じグループの中のユーザは、(たとえば、彼らのセキュリティ認証情報に基づいて)同じセキュリティグループに属してよく、それにより、別のメンバのコードが同じインスタンス上の別のコンテナにおいて実行された後に特定のインスタンス上のコンテナにおける1人のメンバのコードを実行すると、セキュリティリスクを引き起こすことがない。同様に、ワーカマネージャ140は、どの要求がどのコンテナにおいて実行され得るか、及びどのインスタンスがどのユーザに割り当てられ得るかを示す1つまたは複数のポリシに従って、インスタンス及びコンテナを割り当てることができる。例示的なポリシは、インスタンスが、同じアカウント(たとえば、仮想計算システム110によって提供されるサービスにアクセスするためのアカウント)を共有するユーザの集合に割り当てられることを指定してよい。いくつかの実施形態においては、同じユーザグループに関連付けられる要求は(たとえば、それに関連付けられるユーザコードが同一である場合)、同じコンテナを共有してよい。いくつかの実施形態においては、要求は、グループの相異なるユーザを区別することはなく、単に要求に関連付けられるユーザが属しているグループを示すにすぎない。
図1に示されている例においては、ユーザコードは、コンテナと呼ばれる分離された計算システムにおいて実行される。コンテナは、仮想マシンインスタンス内で、そのインスタンスにおいて利用可能なリソースを使用して作成される論理装置である。たとえば、ワーカマネージャ140は、ユーザコードを実行するための要求において指定される情報に基づいて、新規コンテナを作成する、またはアクティブプール140Aの中のインスタンスのうちの1つに既存のコンテナを配置し、コンテナを要求に関連付けられるユーザコードの実行を扱うための要求に割り当ててよい。1つの実施形態においては、そのようなコンテナは、Linuxコンテナとして実装される。アクティブプール140Aの中の仮想マシンインスタンスは、1つまたは複数のコンテナがその上に作成されていてよく、ユーザに関連付けられる1つまたは複数のプログラムコードがその上に(たとえば、コンテナのうちの1つか、またはインスタンスのローカルキャッシュかのいずれかに)ロードされていてよい
図1に示されているように、インスタンスは、オペレーティングシステム(OS)、言語ランタイム、及びコンテナを有し得る。コンテナは、OS及び言語ランタイム、ならびにユーザコードの個々のコピーがその上にロードされていてよい。図1の例においては、ワーカマネージャ140によって管理されるアクティブプール140Aは、インスタンス156、157、158、159を含む。インスタンス156は、コンテナ156A、156Bを有する。コンテナ156Aは、OS156A−1、ランタイム156A−2、及びコード156A−3がその上にロードされている。示されている例においては、コンテナ156Aは、それ自体のOS、ランタイム、及びコードがその上にロードされている。1つの実施形態においては、OS156A−1(たとえば、そのカーネル)、ランタイム156A−2、及び/またはコード156A−3は、コンテナ156A、156B(及び図1に示されていない任意の他のコンテナ)間で共有される。別の例においては、OS156A−1(たとえば、カーネルの外で動作する任意のコード)、ランタイム156A−2、及び/またはコード156A−3は、コンテナ156Aについて作成され、インスタンス156上の他のコンテナと共有されない独立したコピーである。さらなる別の実施形態においては、OS156A―1、ランタイム156A−2、及び/またはコード156A−3のうちのいくつかの部分は、インスタンス156上のコンテナ間で共有され、そのうちの他の部分は、コンテナ156Aに特有の独立したコピーである。インスタンス157は、コンテナ157A、157B、157Cを含み、インスタンス158は、コンテナ158Aを含み、インスタンス159は、コンテナ159Aを含む。
図1の例においては、図1に描かれているコンテナのサイズは、コンテナの実際のサイズに比例し得る。たとえば、インスタンス156上において、コンテナ156Aは、コンテナ156Bよりも多くの空間を占める。同様にコンテナ157A、157B、157C、159Aは、等しくサイズ決めされてよく、コンテナ158Aは、コンテナ157A、157B、157C、159Aよりも大きくて(たとえば、より多くのコンピューティングリソースがそれらに割り当てられていて)よい。インスタンス159の中に示されている「C」とラベル付けられたドット付きのボックスは、新規インスタンスを作成するのに使用され得る、インスタンス上の残りの空間を示している。いくつかの実施形態においては、コンテナのサイズは、64MB、またはその任意の倍数とし得る。他の実施形態においては、コンテナのサイズは、コンテナが作成されるインスタンスのサイズ以下のいずれか任意のサイズとしてよい。いくつかの実施形態においては、コンテナのサイズは、コンテナが作成されるインスタンスのサイズ以下、またはそれよりも大きいいずれか任意のサイズとし得る。コンテナのサイズが、インスタンスのサイズをどのくらい超え得るかについては、インスタンスによって提供される能力を超えて、それらのコンテナが利用され得る可能性がどのくらいあるかということに基づいて決定され得る。たとえば、1GBのメモリサイズ(合計で5GB)を有する5つのコンテナは、4GBのメモリサイズを有するインスタンスにおいて作成され得る。コンテナがそれぞれ、1GBの全能力に達しない場合、コンテナは、申込み超過であるにもかかわらず適切に機能し得る。
コンテナ156B、157A、157B、157C、158A、159Aの内部のコンポーネントは、図1の例においては示されていないが、それらのコンテナはそれぞれ、様々なオペレーティングシステム、言語ランタイム、ライブラリ、及び/またはユーザコードを有し得る。いくつかの実施形態においては、インスタンスは、ユーザコードがその上に(たとえば、インスタンスレベルキャッシュに)ロードされていてよく、それらのインスタンス内のコンテナはまた、ユーザコードがその上にロードされていてもよい。いくつかの実施形態においては、ワーカマネージャ140は、アクティブプール140Aにおいてインスタンスのリストを維持してよい。インスタンスのリストは、インスタンスの構成(たとえば、OS、ランタイム、コンテナなど)をさらに指定してよい。いくつかの実施形態においては、ワーカマネージャ140は、ウォーミングプール130Aの中のインスタンスのリスト(たとえば、インスタンスの数及びタイプを含む)にアクセスし得る。他の実施形態においては、ワーカマネージャ140は、ウォーミングプール130Aの中の仮想マシンインスタンスの知識を有することなく、ウォーミングプールマネージャ130に計算能力を要求する。
要求がフロントエンド120によって正常に処理された後、ワーカマネージャ140は、仮想計算システム110においてユーザコードを実行するための要求をサービスする能力を見つける。たとえば、同じユーザコードをその中にロードしたコンテナ(たとえば、コンテナ156Aの中に示されているコード156A−3)を有する特定の仮想マシンインスタンスがアクティブプール140Aに存在する場合、ワーカマネージャ140は、コンテナを要求に割り当て、コンテナにおいてユーザコードを実行させ得る。代替としては、ユーザコードが仮想マシンインスタンスのうちの1つのローカルキャッシュにおいて利用可能である(たとえば、インスタンス158において記憶されているが、いずれの個々のコンテナにも属していない)場合、ワーカマネージャ140は、そのようなインスタンスにおいて新規コンテナを作成し、コンテナを要求に割り当て、コンテナにおいてユーザコードをロードさせ、実行させ得る。
ワーカマネージャ140が、要求に関連付けられるユーザコードがアクティブプール140Aの中の(たとえば、コンテナの中か、またはインスタンスのローカルキャッシュの中のいずれかの)インスタンスのいずれにおいても見つからないと決定する場合、ワーカマネージャ140は、アクティブプール140Aの中のインスタンスのいずれかが、現在、要求に関連付けられるユーザに割り当てられ、現在の要求を扱う計算能力を有しているかどうかを決定してよい。そのようなインスタンスが存在する場合、ワーカマネージャ140は、インスタンスにおいて新規コンテナを作成し、コンテナを要求に割り当ててよい。代替としては、ワーカマネージャ140は、ユーザに割り当てられるインスタンスにおいて既存のコンテナをさらに構成し、コンテナを要求に割り当ててよい。たとえば、ワーカマネージャ140は、現在のユーザ要求によって求められる特定のライブラリがその上にロードされている場合、既存のコンテナがユーザコードを実行するのに使用され得ることを決定してよい。そのような場合においては、ワーカマネージャ140は、コンテナ上に特定のライブラリ及びユーザコードをロードし、そのコンテナを使用してユーザコードを実行することができる。
アクティブプール140Aが、ユーザに現在、割り当てられているいずれのインスタンスも含んでいない場合、ワーカマネージャ140は、ウォーミングプール130Aから新規仮想マシンインスタンスをプルし、インスタンスを要求に関連付けられるユーザに割り当て、インスタンスにおいて新規コンテナを作成し、コンテナを要求に割り当て、コンテナにユーザコードをダウンロードさせ実行させる。
いくつかの実施形態においては、仮想計算システム110は、ユーザコードの実行を、(たとえば、フロントエンド120によって)それが受信されてから間もなく始めるようになされている。時間期間は、(たとえば、ユーザに関連付けられる仮想マシンインスタンス上のコンテナにおける)ユーザコードの実行の開始と、(たとえば、フロントエンドによって受信される)ユーザコードを実行するための要求の受信との間の時間差として決定され得る。仮想計算システム110は、所定の持続時間未満である時間期間内で、ユーザコードの実行を始めるようになされている。1つの実施形態においては、所定の持続時間は、500msである。別の実施形態においては、所定の持続時間は、300msである。別の実施形態においては、所定の持続時間は、100msである。別の実施形態においては、所定の持続時間は、50msである。別の実施形態においては、所定の持続時間は、10msである。別の実施形態においては、所定の持続時間は、10msから500msまでの範囲から選択される任意の値としてよい。いくつかの実施形態においては、仮想計算システム110は、1つまたは複数の条件が満たされる場合、所定の持続時間未満である時間期間内で、ユーザコードの実行を始めるようになされている。たとえば、1つまたは複数の条件は、(1)要求が受信された時点に、ユーザコードがアクティブプール140Aの中のコンテナにおいてロードされること、(2)要求が受信された時点に、ユーザコードがアクティブプール140Aの中のインスタンスのコードキャッシュに記憶されること、(3)要求が受信された時点に、アクティブプール140Aが、要求に関連付けられるユーザに割り当てられるインスタンスを含むこと、または(4)要求が受信された時点に、ウォーミングプール130Aが、要求を扱う能力を有することのうちのいずれか1つを含み得る。
ユーザコードは、図1のストレージサービス108などの補助サービス106からダウンロードされ得る。図1に示されているデータ108Aは、1人または複数人のユーザによってアップロードされるユーザコード、そのようなユーザコードに関連付けられるメタデータ、あるいは本明細書に説明されている1つまたは複数の技法を行うために仮想計算システム110によって利用される任意の他のデータを含み得る。ストレージサービス108のみが図1の例には示されているが、仮想環境100は、ユーザコードがダウンロードされ得る他のレベルのストレージシステムを含み得る。たとえば、各インスタンスは、コンテナが作成されるインスタンスに物理的に(たとえば、インスタンスが動作中の物理コンピューティングシステムに常駐するローカルストレージ)か、または論理的に(たとえば、インスタンスと通信し、仮想計算システム110内または外で提供されるネットワークの中のネットワーク接続型ストレージシステム)かのいずれかで関連付けられる1つまたは複数のストレージシステムを有し得る。代替としては、コードは、ストレージサービス108によって提供されるウェブベースのデータストアからダウンロードされ得る。
一旦、ワーカマネージャ140が、ユーザコード実行要求を出すのに使用され得る仮想マシンインスタンスのうちの1つをウォーミングプール130Aに配置すると、ウォーミングプールマネージャ130またはワーカマネージャ140は、ウォーミングプール130Aからインスタンスを取り出し、それを要求に関連付けられるユーザに割り当てる。割り当てられた仮想マシンインスタンスは、ウォーミングプール130Aから取り出され、アクティブプール140Aに置かれる。いくつかの実施形態においては、一旦、仮想マシンインスタンスが特定のユーザに割り当てられると、同じ仮想マシンインスタンスは、いずれの他のユーザの要求をサービスするのに使用することができない。これは、ユーザリソースが相互に混ざり合う可能性を防止することによって、ユーザにセキュリティ上の利点を提供する。代替としては、いくつかの実施形態においては、相異なるユーザに属する(または相異なるユーザに関連付けられる要求に割り当てられる)複数のコンテナは、単一の仮想マシンインスタンスにおいて共存し得る。そのような手法は、利用可能な計算能力の利用を改善し得る。いくつかの実施形態においては、仮想計算システム110は、仮想マシンインスタンスのローカルキャッシュと、(たとえば、ネットワーク104を介してアクセスできる)ウェブベースのネットワークストレージとの間の中間レベルのキャッシングシステムとして機能するために、ユーザコードが記憶されている個別のキャッシュを維持し得る。
ユーザコードが実行された後、ワーカマネージャ140は、ユーザコードを実行するのに使用されるコンテナを解体し、それが占有していたリソースを確保してインスタンスの中の他のコンテナに使用されるようにし得る。代替としては、ワーカマネージャ140は、コンテナが動作している状態のまま、それを使用して、同じユーザからの追加の要求をサービスしてよい。たとえば、同じユーザコードに関連付けられる別の要求が、既に、コンテナにロードされている場合、要求は、同じコンテナに割り当てられ得、それによって、新規コンテナの作成及びユーザコードのコンテナへのロードに関連付けられる遅延をなくすことができる。いくつかの実施形態においては、ワーカマネージャ140は、ユーザコードを実行するのに使用されるコンテナが作成されたインスタンスを解体し得る。代替としては、ワーカマネージャ140は、インスタンスが動作している状態のまま、それを使用して、同じユーザからの追加の要求をサービスすることができる。ユーザコードの実行が行われた後、コンテナ及び/またはインスタンスを動作している状態のままにすべきであるかどうかについての決定は、閾値時間、ユーザのタイプ、ユーザの平均要求量、及び/または他の動作条件に基づいてよい。たとえば、閾値時間が、いずれの活動(たとえば、コードの実行)なしに経過した後(たとえば、5分、30分、1時間、24時間、30日など)、コンテナ及び/または仮想マシンインスタンスは、シャットダウン(たとえば、削除、終了など)され、それに割り当てられるリソースは、解放される。いくつかの実施形態においては、コンテナが解体される前に経過した閾値時間は、インスタンスが解体される前に経過した閾値時間よりも短い。
いくつかの実施形態においては、仮想計算システム110は、それが着信コード実行要求をサービスするとき、補助サービス106のうちの1つまたは複数にデータを提供し得る。たとえば、仮想計算システム110は、モニタリング/ロギング/課金サービス107と通信し得る。モニタリング/ロギング/課金サービス107は、仮想計算システム110上のコンテナ及びインスタンスのステータスなど、仮想計算システム110から受信されるモニタリング情報を管理するためのモニタリングサービスと、仮想計算システム110上のコンテナ及びインスタンスによって行われる活動など、仮想計算システム110から受信されるロギング情報を管理するためのロギングサービスと、(たとえば、モニタリングサービス及びロギングサービスによって管理されるモニタリング情報ならびに/またはロギング情報に基づいて)仮想計算システム110上のユーザコードの実行に関連付けられる課金情報を生成するための課金サービスと、を含み得る。上に説明した(たとえば、仮想計算システム110の代わりに)モニタリング/ロギング/課金サービス107によって行われ得るシステムレベル活動に加えて、モニタリング/ロギング/課金サービス107は、仮想計算システム110において実行されるユーザコードの代わりに、アプリケーションレベルサービスを提供し得る。たとえば、モニタリング/ロギング/課金サービス107は、仮想計算システム110において実行されるユーザコードの代わりに、様々な入力、出力、または他のデータ及びパラメータをモニタリングし、かつ/またはロギングすることができる。モニタリング、ロギング、及び課金サービス107は、単一のブロックとして示されているが、個別のサービスとして提供され得る。モニタリング/ロギング/課金サービス107は、セキュリティマネージャ150と通信して、セキュリティマネージャ150が、仮想計算システム110において様々なプログラムコードを実行するのに使用されることになる適切なセキュリティ機構及びポリシを決定することを可能にし得る。
いくつかの実施形態においては、ワーカマネージャ140は、ワーカマネージャ140によって管理されるインスタンス及びコンテナ(たとえば、アクティブプール140Aの中のもの)におけるヘルスチェックを行い得る。たとえば、ワーカマネージャ140によって行われるヘルスチェックは、ワーカマネージャ140によって管理されるインスタンス及びコンテナが、(1)不適切に構成されたネットワーキング及び/もしくは立上げ構成、(2)消耗したメモリ、(3)破損したファイルシステム、(4)互換性のないカーネル、のいずれかの問題、ならびに/またはインスタンス及びコンテナのパフォーマンスを損なう可能性があるいずれかの他の課題を有するかどうかの決定を含み得る。1つの実施形態においては、ワーカマネージャ140は、ヘルスチェックを定期的に(たとえば、5分ごと、30分ごと、1時間ごと、24時間ごとなど)行う。いくつかの実施形態においては、ヘルスチェックの頻度は、ヘルスチェックの結果に基づいて、自動的に調整され得る。他の実施形態においては、ヘルスチェックの頻度は、ユーザ要求に基づいて、調整され得る。いくつかの実施形態においては、ワーカマネージャ140は、ウォーミングプール130Aの中のインスタンス及び/またはコンテナに関して同様のヘルスチェックを行いえる。ウォーミングプール130Aの中のインスタンス及び/またはコンテナは、アクティブプール140Aの中のそれらのインスタンス及びコンテナと一緒にか、または別々にかのいずれかで管理され得る。いくつかの実施形態においては、ウォーミングプール130Aの中のインスタンス及び/またはコンテナのヘルスが、アクティブプール140Aとは別個に管理される場合においては、ワーカマネージャ140ではなく、ウォーミングプールマネージャ130が、ウォーミングプール130Aの中のインスタンス及び/またはコンテナにおいて上述のヘルスチェックを行い得る。
セキュリティマネージャ150は、仮想計算システム110においてユーザコードを実行するための着信要求について実行されるプログラムコードのセキュリティを管理する。たとえば、セキュリティマネージャ150は、フロントエンド120、ウォーミングプールマネージャ130、ワーカマネージャ140、及び/または補助サービス106と通信して、仮想計算システム110において実行される様々なプログラムコードについて使用されるセキュリティ設定を構成し、モニタリングし、管理し得る。セキュリティマネージャ150は仮想計算システム110内で別個のコンポーネントとして示されているが、セキュリティマネージャ150の機能のうちの一部または全ては、フロントエンド120、ウォーミングプールマネージャ130、ワーカマネージャ140、及び/または補助サービス106によって行われ得る。たとえば、セキュリティマネージャ150は、仮想計算システム110の他のコンポーネントのうちの1つの中に完全に、または仮想計算システム110の他のコンポーネントにわたって分散された形で実装され得る。図1の例においては、セキュリティマネージャ150は、セキュリティ管理データ150Aを含む。セキュリティ管理データ150Aは、仮想計算システム110におけるプログラムコードのセキュリティを管理するための、ユーザによって指定される、またはセキュリティマネージャ150によって決定される任意のセキュリティポリシを含んだデータを含んでよく、これらについては、より詳細に後述する。
上に論じられたように、要求自体は、要求に関連付けられるプログラムコードを実行するのに使用されることになるセキュリティ設定及びパラメータを含んだセキュリティポリシを指定し得る。たとえば、仮想計算システム110の特定のユーザは、信頼され得、したがって、仮想計算システム110は、そのようなユーザに、それらのプログラムコードにおける関数に関連付けられるセキュリティ設定をカスタマイズするための性能を提供して、それほど厳密でないセキュリティ要件の下でプログラムコードを実行することによって提示される柔軟性を可能にし得る。要求はまた、プログラムコードが、仮想計算システム110による実行中の補助サービスと通信することを可能にするのに利用できる構成データを指定してよい。たとえば、仮想計算システム110の特定のユーザは、ユーザの仮想プライベートクラウドまたは他のネットワークベースのサービスと安全保護された形で通信する能力を依然として有する仮想計算システム110における特定のプログラムコードを実行したいと望むことがある。要求はまた、プログラムコード、またはその一部分との関連で使用されることになる1つまたは複数の信頼されている認証情報を指定してよい。たとえば、特定のプログラムコードは、実行中に、信頼されている認証情報(たとえば、ユーザに関連付けられる安全保護されたログイン)の使用を必要とする「信頼されている(trusted)」部分を含み得、それは、そのような信頼されている部分が危殆化されることがあった場合、増大したセキュリティリスクの可能性を示し得る。プログラムコードはまた、信頼されている認証情報の使用を必要としない場合がある異なる信頼レベルを含む他の部分を含み得る(たとえば、コードは、呼び出されることになる任意の特定の認証情報を必要としない場合がある標準ファイル変換処理を含み得る)。したがって、プログラムコードを第1の信頼レベルを有する第1の部分と、第2の信頼レベルを有する第2の部分とに、それぞれに関連付けられる様々なセキュリティレベルを含む複数のコンテナを使用して分割することが可能であり得る。そのような要求が処理され、仮想マシンインスタンスが要求に関連付けられるユーザに割り当てられた後、セキュリティマネージャ150は、セキュリティポリシ、構成データ、及び/または信頼されている認証情報に従って、仮想マシンインスタンスを構成して、安全な、または信頼されている形で、プログラムコードを仮想マシンインスタンスにおいて実行できるようにし得る。いくつかの実施形態においては、信頼されている認証情報は、仮想計算システム110またはそのサブシステムのうちの1つによって管理され、及び/または維持され得るが、他の実施形態においては、信頼されている認証情報は、ファーストパーティまたはサードパーティ認証情報管理システムによって管理され、及び/または維持され得、ケースバイケースで、仮想計算システム110に提供され得る。
いくつかの実施形態においては、セキュリティマネージャ150は、新規コンテナを作成する、及び指定された量のリソースをコンテナに割り当てるのではなく、指定されたセキュリティ設定を有する既存のコンテナを配置し、プログラムコードを既存のコンテナにおいて実行させ得る。
コンテナが作成された、または配置された後、要求に関連付けられるプログラムコードは、コンテナにおいて実行される。コンテナに割り当てられる(たとえば、ユーザによって要求される)リソースの量、及び/またはプログラムコードによって実際に利用されるリソースの量は、さらなる解析に向けて(たとえば、モニタリング/ロギング/課金サービス107、及び/またはセキュリティマネージャ150によって)ロギングされ得る。たとえば、ロギングされた情報は、コンテナにおけるプログラムコードの1つまたは複数の実行中にプログラムによって実際に使用されるメモリの量、CPUサイクルの量、ネットワークパケットの量、及びストレージの量を含み得る。加えて、ロギングされた情報は、プログラムコードの実行中に行われる任意のセキュリティ関連の活動(たとえば、行われたインバウンドまたはアウトバウンドのネットワーク接続、連絡を取った補助サービス、利用された信頼されている認証情報など)、リソース利用、エラー率、レイテンシ、及びプログラムコードの実行中に直面する任意のエラーまたは例外を含み得る。いくつかの実施形態においては、疑わしく見える(たとえば、行われた未承認のネットワーク接続、補助サービスとの未承認の相互作用、及び信頼されている認証情報の潜在的な危殆化など)任意のセキュリティデータは、特別なマーキングがタグ付けされ、セキュリティマネージャ150によってさらに解析される。
いくつかの実施形態においては、セキュリティマネージャ150は、複数のユーザクラスを作成する、または複数のユーザクラスにアクセスしてよく、相異なるユーザクラスに相異なるルールを適用してよい。たとえば、より洗練されたユーザには、より多くの制御権(たとえば、個々のセキュリティパラメータにわたる制御権)が与えられ得、一方、他のユーザには、単一の代表的なパラメータしか制御することが許可され得ず、他のパラメータは、代表的なパラメータに基づいて調整され得る。
いくつかの実施形態においては、セキュリティマネージャ150は、モニタリング/ロギング/課金サービス107、及び/またはセキュリティマネージャ150によってロギングされる情報に基づいて、プログラムコードのセキュリティを向上させるため、または仮想計算システム110におけるプログラムコードの実行に関連付けられるリスクを低減させるために、ユーザが行う可能性があることに関して、ユーザに何らかの指針を提供し得る。たとえば、セキュリティマネージャ150は、潜在的な、または見かけ上のセキュリティ違反の繰り返される発生に気付いた後、ユーザが、特定のユーザコードを実行するには高すぎるセキュリティパラメータを一貫して設定しているように見えるという指示をユーザに提供することができる。たとえば、セキュリティパラメータは、いくつかの要因に基づいて、より高いセキュリティリスクに寄与し得る。概して、指示は、様々なセキュリティパラメータについての相異なる設定、構成、またはカテゴリ化を示唆し得る。いくつかの実施形態においては、そのような指示は、セキュリティ問題、エラー、例外、または他の明確な条件(たとえば、増加したレイテンシ、未承認のアクセスなど)の閾値数がセキュリティマネージャ150によって処理された後、ユーザに提供される。セキュリティマネージャ150は、電子メール、シンプル通知サービス(「SNS:Simple Notification Service」)、ショートメッセージサービス(「SMS:Short Message Service」)などを含む任意の通知機構を介して指示を提供し得る。
いくつかの実施形態においては、セキュリティマネージャ150は、コード特有の特性を利用して、個々のプログラムコードを実行するためのセキュリティパラメータを改善し得る。たとえば、画像処理を扱うプログラムコードには、信頼されている認証情報が必要でない場合があり得るのに対して、データベースを扱うプログラムコードには、データベースにアクセスする、またはデータベースを更新するための許可を付与するために、信頼されている認証情報が必要になり得る。そのようなコード特有の特性は、セキュリティマネージャ150によって維持され得、個々のプログラムコードのセキュリティポリシは、それに応じて調整され得る。
本明細書に説明されているセキュリティ機構は、任意の組合せで使用され得る。たとえば、1つの実施形態においては、ユーザは、プログラムコードについての構成データを指定して、補助サービスと通信し得る。そのような通信は、(たとえば、ユーザに関連付けられる補助サービスにおけるアカウントにログインするために)信頼されている認証情報の使用を必要とし得る。したがって、ユーザは、さらには、プログラムコードが、2つ以上のコンテナ(たとえば、信頼されている認証情報を使用して補助サービスとの通信を必要とする任意のプログラムコードを実行する第1の信頼レベルを有する少なくとも1つのコンテナ、及び補助サービスとの通信を必要とせず他のプログラムコードを実行する第2の信頼レベルを有する別のコンテナ)によって実行されることを望む場合がある。別の実施形態においては、ユーザは、やはり補助サービスとの通信を必要とするプログラムコードとの関連でセキュリティポリシを提供してよい。ユーザは、いかにプログラムコードが実行し、補助サービスと相互作用するかについて関連付けられるセキュリティパラメータを指定したいと望む場合がある。別の実施形態においては、ユーザは、やはり多数のコンテナ(たとえば、相異なる信頼レベルを有するコンテナ)を使用してプログラムコードの実行を必要とするプログラムコードとの関連でセキュリティポリシを提供してよい。したがって、ユーザは、複数のコンテナが、実行中に互いに通信でき、セキュリティポリシ及びパラメータを介する方法を指定することを望む場合がある。
図2は、仮想計算システム110の中の仮想マシンインスタンスを管理するコンピューティングシステム(セキュリティマネージャ150と呼ばれる)の全体的なアーキテクチャを示している。図2に示されているセキュリティマネージャ150の全体的なアーキテクチャは、本開示の態様を実装するのに使用され得るコンピュータハードウェア及びソフトウェアのモジュールの構成を含む。セキュリティマネージャ150は、図2に示されている要素よりも多くの(または少ない)要素を含んでいてよい。しかしながら、実現可能な開示を提供するために、必ずしもこれらの一般的に従来の要素がすべて示されているとは限らない。例示されているように、セキュリティマネージャ150は、処理装置190、ネットワークインターフェース192、コンピュータ可読媒体ドライブ194、入力/出力デバイスインターフェース196を含み、それらはすべて、通信バスを経由して互いに通信し得る。ネットワークインターフェース192は、1つまたは複数のネットワークもしくはコンピューティングシステムに対する接続性を提供し得る。したがって、処理装置190は、ネットワーク104を介して、他のコンピューティングシステムもしくはサービスから情報及び命令を受信し得る。処理装置190はまた、メモリ180との間で通信し、さらには、入力/出力デバイスインターフェース196を介して、オプションのディスプレイ(図示せず)に出力情報を提供し得る。入力/出力デバイスインターフェース196はまた、オプションの入力デバイス(図示せず)からの入力を受け入れてよい。
メモリ180は、本開示の1つまたは複数の態様を実装するために処理装置190が実行するコンピュータプログラム命令(いくつかの実施形態においては、モジュールとしてグループ分けされる)を含んでよい。メモリ180は、概して、RAM、ROM、及び/または他の持続的、補助的または非一時的なコンピュータ可読媒体を含む。メモリ180は、セキュリティマネージャ150の全体的な管理及び動作において処理装置190による使用に向けて、コンピュータプログラム命令を提供するオペレーティングシステム184を記憶し得る。メモリ180は、本開示の態様を実装するためのコンピュータプログラム命令及び他の情報をさらに含み得る。たとえば、1つの実施形態においては、メモリ180は、たとえば、コンピューティングデバイスにインストールされるブラウザもしくはアプリケーションなどのナビゲーション及び/またはブラウジングインターフェースを介して、コンピューティングデバイス上に表示するためのユーザインターフェース(及び/またはそのための命令)を生成するユーザインターフェース装置182を含む。加えて、メモリ180は、たとえば、ユーザプログラムコード及び/もしくはライブラリにアクセスするために、1つまたは複数のデータレポジトリ(図示せず)を含んでよく、ならびに/またはそれらと通信してよい。
ユーザインターフェース装置182に加えて、及び/またはそれとの組合せで、メモリ180は、処理装置190によって実行され得るプログラムコードセキュリティポリシ装置186及び補助サービス/インスタンス間インターフェース装置188を含み得る。1つの実施形態においては、ユーザインターフェース装置182、プログラムコードセキュリティポリシ装置186、及び補助サービス/インスタンス間インターフェース装置188は、個々に、または集合的に、本開示の様々な態様、たとえば、さらに後述される仮想計算システム110におけるプログラムコードの実行をモニタリングし、ロギングすること、特定のインスタンス、コンテナ、及び/または要求についてのセキュリティ設定を調整する必要性を決定することなどを実装する。
プログラムコードセキュリティポリシ装置186は、仮想計算システム110におけるユーザコードの実行をモニタリングし、ユーザコードを実行するためのセキュリティポリシ及びセキュリティ機構に従ってコンテナを提供する。本明細書に説明されているように、セキュリティポリシは、要求が仮想計算システム110によって受信された時点において、またはユーザが仮想計算システム110による実行に向けてプログラムコードを登録するときなど、プログラムコードの実行より前の時点において、ユーザ指定され、提供され得る。セキュリティポリシ情報は、たとえば、特定のセキュリティポリシを適用する必要がある要求のより高速なアクセス及び処理を容易にするために、セキュリティ管理データ150Aにおいて記憶され得る。セキュリティポリシ情報はまた、ストレージサービス108など、プログラムコードとともに記憶され得、プログラムコードがアクセスされて、コンテナ上にロードされる時点においてアクセスされ得る。
補助サービス/インスタンス間インターフェース装置188は、コンテナが、1つまたは複数の補助サービスと(たとえば、仮想プライベートクラウド(「VPC:virtual private cloud」)トンネリングもしくは同様のネットワーク通信を介して)、または互いに(たとえば、プロセス間通信(「IPC:inter−process communication」)トンネリングもしくは類似のネットワーク通信を介して)、相互作用することを安全に可能にすることに関する性能を提供し管理する。そのような通信は、セキュリティ違反を示し得る疑わしいネットワーク活動を識別するために、密にモニタリングされ、活動ロギングされることが必要な場合がある。コンテナについての疑わしい活動が識別された場合、補助サービス/インスタンス間インターフェース装置188は、メッセージをワーカマネージャ140に送信して、いずれのさらなるセキュリティ違反活動を最小限に抑えるようにコンテナをシャットダウンしてよい。補助サービス/インスタンス間インターフェース装置188はまた、特定のプログラムコードが、疑わしい活動に関与していた可能性があるという通知をユーザに送信し、さらなるセキュリティ違反を回避するために、ユーザは、プログラムコードに関連付けられるセキュリティポリシ、構成データ、及び/または信頼されている認証情報を変更する必要があり得ることを示唆し得る。いくつかの例においては、補助サービス/インスタンス間インターフェース装置188は、(実際のまたは疑われる)セキュリティ違反が繰り返された後、ユーザが問題に対処するまでは、プログラムコードが、コンテナにおいてロードされないように、または実行されないようにしてよい。
プログラムコードセキュリティポリシ装置186、及び補助サービス/インスタンス間インターフェース装置188は、セキュリティマネージャ150の一部として、図2には示されているが、他の実施形態においては、プログラムコードセキュリティポリシ装置186、及び補助サービス/インスタンス間インターフェース装置188のすべて、または一部分は、仮想計算システム110及び/または別のコンピューティングデバイスの他のコンポーネントによって実装され得る。たとえば、本開示の特定の実施形態においては、仮想計算システム110と通信する別のコンピューティングデバイスは、セキュリティマネージャ150の一部として示されているモジュール及びコンポーネントと同様に動作するいくつかのモジュールまたはコンポーネントを含み得る。
次に、図3を参照して、仮想計算システム110の1つまたは複数コンポーネント(たとえば、セキュリティマネージャ150)によって実装されるルーチン300について説明する。ルーチン300は、セキュリティマネージャ150による実装に関して説明されているが、当業者は、代替のコンポーネントが、ルーチン300を実装することができ、またはブロックのうちの1つまたは複数が、異なるコンポーネントによって、もしくは分散される形で実装され得ることを認識するであろう。
例示的なルーチン300のブロック302においては、セキュリティマネージャ150は、プログラムコードを実行するための要求を受信する。代替としては、セキュリティマネージャ150は、フロントエンド120によって受信され、処理される着信要求に関連付けられるプログラムコードを実行するための適切なセキュリティ設定を決定するための要求を図1のワーカマネージャ140から受信する。たとえば、フロントエンド120は、ユーザコンピューティングデバイス102または補助サービス106から受信される要求を処理し、ユーザを認証し、ユーザが指定されたユーザコードへのアクセスを承認されることを決定した後、ワーカマネージャ140に要求を転送し得る。次いで、ワーカマネージャ140は、要求をセキュリティマネージャ150に転送し得る。上に論じられたように、要求は、実行されることになるプログラムコードを示すデータもしくはメタデータ、プログラムコードが記述される言語、要求に関連付けられるユーザ、及び/またはプログラムコードを実行するために確保されることになるコンピューティングリソース(たとえば、メモリなど)を含み得る。要求はまた、ユーザ指定のセキュリティポリシを示すデータまたはメタデータを含み得る。ユーザ指定のセキュリティポリシは、1つまたは複数のセキュリティパラメータを示してよく、それによって、プログラムコードは、実行されることになる。たとえば、セキュリティパラメータは、処理持続時間限度、CPU利用限度、ディスク空間もしくは他のメモリ限度、伝送制御プロトコル(「TCP:transmission control protocol」)ソケット接続を可能にするパラメータ、コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、コンテナが(仮想プライベートクラウドなどの)補助サービスと通信できるようにするパラメータ、コンテナが選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及びコンテナがプログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含み得る。
次に、ブロック304においては、セキュリティマネージャ150は、プログラムコードを実行するための要求に基づいて、ユーザ指定のセキュリティポリシを決定する。たとえば、セキュリティマネージャ150は、上に説明された要求とともにセキュリティポリシを受信し得る。別のシナリオにおいては、セキュリティマネージャ150は、たとえば、セキュリティ管理データ150Aからの、またはストレージサービス108からロードされるセキュリティポリシにアクセスしてよい。セキュリティポリシは、プログラムコードの実行と併せて、セキュリティマネージャ150によって課せられる1つまたは複数の制限を緩和する、または修正し得る。たとえば、セキュリティポリシは、コンテナにロードされ、かつコンテナによって実行されるプログラムコードが、インバウンドもしくはアウトバウンドのネットワーク接続を確立して、コンテナを含んでいる仮想マシンインスタンスにおける別のコンテナ上のプログラムコード、異なる仮想マシンインスタンスにおける別のコンテナ上のプログラムコード、または補助サービス上のプログラムコードなど、他のプログラムコードの実行を容易にするように許可され得ることを指定してよい。セキュリティポリシは、ネイティブコードライブラリ及び他のコードの使用がプログラムコードの実行と併せて許可されるかどうかをさらに指定してよい。
ブロック306においては、ワーカマネージャ140は、ユーザ指定のセキュリティポリシに少なくとも一部基づいて、要求に示されている情報に基づいた計算能力を取得する。たとえば、セキュリティポリシは、プログラムコードの実行のためのユーザ選好の持続時間を指定してよく、計算能力は、その持続時間の間、取得され得る。別の例においては、セキュリティポリシは、プログラムコードが、アウトバウンドTCPソケット接続を行うように許可され、計算能力が、アウトバウンドTCPソケット接続を可能にするために取得され得ることを指定してよい。いくつかの実施形態においては、計算能力は、コード実行要求をサービスするように構成されているコンテナを含む。本明細書に論じられているように、コンテナは、アクティブプール140Aまたはウォーミングプール130Aから取得され得る。計算能力が取得され得る1つのやり方は、上記にその全体が参照されることによって既に組み込まれた、2014年9月30日に出願された「LOW LATENCY COMPUTATIONAL CAPACITY PROVISIONING」と題された米国特許出願第14/502,810号明細書の図4に関してより詳細に説明される。コンテナは、セキュリティポリシに基づいて取得され得、それにより、ワーカマネージャ140は、アクティブプール140Aまたはウォーミングプール130Aの中のコンテナが利用可能であるかどうか、及び要求について実行されることになるプログラムコードに関連付けられる同じセキュリティポリシにより構成されているかどうか決定することができる。同様に構成されたコンテナが利用可能である、または少なくとも1つがセキュリティポリシに照応するやり方で構成されている場合、そのコンテナは、要求をサービスするために取得され得る。
ブロック308においては、セキュリティマネージャ150またはワーカマネージャ140により、ユーザコードは、計算能力を使用して、及びユーザ指定のセキュリティポリシに従って、実行されることになる。たとえば、ワーカマネージャ140は、フロントエンド120に、要求に割り当てられるコンテナのアドレスを送信することができ、それにより、フロントエンド120は、そのアドレスにコード実行要求をプロキシすることができる。いくつかの実施形態においては、アドレスは、ワーカマネージャ140によって一時的に確保され得、アドレス及び/またはコンテナは、指定された時間期間が経過した後、自動的に解放され得る。いくつかの実施形態においては、アドレス及び/またはコンテナは、ユーザコードが、コンテナにおける実行を終了した後、自動的に解放され得る。
図3のルーチン300は、ブロック302〜ブロック308を参照して、上に説明されているが、本明細書に説明されている実施形態は、そのように限定されず、1つまたは複数のブロックが、本開示の趣旨から逸脱することなく、削除されても、修正されても、または交換されてもよい。
次に、図4を参照して、仮想計算システム110の1つまたは複数コンポーネント(たとえば、セキュリティマネージャ150)によって実装されるルーチン400について説明する。ルーチン400は、セキュリティマネージャ150による実装に関して説明されているが、当業者は、代替のコンポーネントが、ルーチン400を実装することができ、またはブロックのうちの1つまたは複数が、異なるコンポーネントによって、もしくは分散される形で実装され得ることを認識するであろう。
例示的なルーチン400のブロック402においては、仮想計算システム110は、補助サービスとインターフェースするためのプログラムコード及び構成データを受信する。たとえば、プログラムコードの開発者などのユーザは、いかにプログラムコードが接続を開始し、またはそうでなければ、プログラムコードの実行中に補助サービスと通信し得るかを指定する関連の構成データを提供し得る。構成データは、たとえば、補助サービス上のアカウントに関連付けられるネットワークアドレス及びログイン認証情報を含んでよく、ここで、アカウントは、プログラムコードを仮想計算システムに登録するユーザに関連付けられる。したがって、プログラムコードが仮想計算システムによって実行されるとき、ネットワークアドレス及びログイン認証情報は、補助サービスに接続する、または「トンネルする(tunnel)」のに使用され得る。一例として、ユーザは、通知、ログデータ、及びステータスレポートなどのデータを提供するために、仮想プライベートクラウドなどの補助サービスにトンネルするようにプログラムコードを構成したいと望み得る。別の実施形態においては、構成データは、認証情報、及びファイルシステムマウントポイントを含んでよい。ファイルシステムマウントポイントは、たとえば、仮想計算システム110によってアクセスされる複数のプログラムコードを記憶するファイルシステムにいかにアクセスするかを示す、または指定してよい。
次に、ブロック404においては、ワーカマネージャ140は、ブロック402において説明されたように、仮想計算システム110によって、先に受信されたプログラムコードなどのプログラムコードを実行するための要求を受信する。たとえば、ブロック404は、図3のブロック302と同様であってよい。要求は、プログラムコードが補助サービスとインターフェースできるようにするための構成データを含む、または指定してよく、あるいはワーカマネージャ140及び/またはセキュリティマネージャ150は、(たとえば、セキュリティマネージャデータ150Aもしくはデータ108Aにアクセスして、プログラムコードに関連付けられる何らかの構成データが存在するかどうかを決定することによって)プログラムコードが構成データに関連付けられていることを決定してよい。
ブロック406においては、ワーカマネージャ150は、アクティブプール130Aの中に、要求に関連付けられるユーザに、現在、割り当てられているインスタンス、及び補助サービスとのインターフェースを可能にし、サポートし、または許可するように構成されているインスタンスが存在するかどうかを決定する。たとえば、インスタンスのうちの1つは、その上に作成されるコンテナの中のプログラムコードを先に実行していてよく、コンテナは終了していてよいが、プログラムコードは、依然として、インスタンス上に(たとえば、インスタンスコードキャッシュの中に)残っていてよい。ワーカマネージャ140が、そのようなインスタンスがあることを決定した場合、ルーチン400は、後述されるブロック412に進む。一方、ワーカマネージャ140が、そのようなインスタンスがないことを決定した場合、ルーチン400は、ブロック408に進む。
ブロック408においては、ワーカマネージャ140は、ウォーミングプール130Aから、またはウォーミングプールマネージャ130から、新規インスタンスを得る。ブロック410においては、ワーカマネージャ140は、補助サービスとインターフェースするように、得られたインスタンスを構成する。
一旦、得られたインスタンスが、ブロック410において構成されている、またはブロック406においてアクティブプール140Aから取得されると、ルーチン400は、ブロック412に進み、ここでは、ワーカマネージャ140により、要求は、新規コンテナか、または事前構成されたコンテナかのいずれかを使用して処理されることになる。新規コンテナが作成される前に、ワーカマネージャ140は、インスタンスが、要求を扱うのに十分なリソースを有するかどうかを決定してよい。
図4のルーチン400は、ブロック402〜ブロック412を参照して、上に説明されているが、本明細書に説明されている実施形態は、そのように限定されず、1つまたは複数のブロックが、本開示の趣旨から逸脱することなく、削除されても、修正されても、または交換されてもよい。
次に、図5を参照して、仮想計算システム110の1つまたは複数コンポーネント(たとえば、セキュリティマネージャ150)によって実装されるルーチン500について説明する。ルーチン500は、セキュリティマネージャ150による実装に関して説明されているが、当業者は、代替のコンポーネントが、ルーチン500を実装することができ、またはブロックのうちの1つまたは複数が、異なるコンポーネントによって、もしくは分散される形で実装され得ることを認識するであろう。
例示的なルーチン500のブロック502においては、ワーカマネージャ140は、プログラムコードを実行するための要求を受信する。たとえば、ブロック502は、図3のブロック302と同様であってよい。要求は、実行中にプログラムコードのうちの少なくとも一部によって使用されることになる信頼されている認証情報を含む、または示し得る。1つの実施形態においては、信頼されている認証情報は、ユーザによってプログラムコードに先に登録され、たとえば、セキュリティ管理データ150Aまたはデータ108からアクセスされて、プログラムコードを実行するための要求が、信頼されている認証情報の使用を必要とするかどうかを決定してよい。プログラムコードに関連付けられる構成データはまた、セキュリティマネージャ150によってアクセスされ、使用されて、プログラムコードのどの部分が、信頼されている認証情報を使用して実行すべきであるかを決定してよい。
ブロック504においては、ワーカマネージャ140は、アクティブプール130Aの中に、要求に関連付けられるユーザに、現在、割り当てられ、プログラムコードがロードされているインスタンスが存在するかどうかを決定する。たとえば、インスタンスのうちの1つは、その上に作成されるコンテナの中のプログラムコードを先に実行していてよく、コンテナは終了していてよいが、プログラムコードは、依然として、インスタンス上に(たとえば、インスタンスコードキャッシュの中に)残っていてよい。ワーカマネージャ140が、そのようなインスタンスがあることを決定した場合、ルーチン500は、後述されるブロック508に進む。一方、ワーカマネージャ140が、そのようなインスタンスがないことを決定した場合、ルーチン500は、ブロック506に進む。
ブロック506においては、ワーカマネージャ140は、ウォーミングプール130Aから、またはウォーミングプールマネージャ130から、新規インスタンスを得る。
ブロック508においては、ワーカマネージャ140、またはセキュリティマネージャ150は、得られたインスタンスにおいて第1のコンテナを作成する。第1のコンテナは、プログラムコードを実行するための要求に関連付けられる信頼されている認証情報を使用して、プログラムコードの第1の部分を実行するように作成され、構成され得る。
ブロック510においては、ワーカマネージャ140、またはセキュリティマネージャ150は、得られたインスタンスにおいて第2のコンテナを作成する。第2のコンテナは、プログラムコードを実行するための要求に関連付けられる信頼されている認証情報を使用せず、または必要とせず、プログラムコードの第2の部分を実行するように作成され、構成され得る。第2のコンテナは、たとえば、プロセス間通信(「IPC:inter−process communication」)プロトコルを介して、第1のコンテナと通信するように構成され得る。IPCプロトコルは、たとえば、ソケットペア、パイプ、名前付きパイプ、仮想マシンインスタンス上の共有メモリ、またはメッセージキューのうちの1つを含み得る。たとえば、第1のコンテナは、プロセス間通信を第2のコンテナに送信して、オンデマンドで、プログラムコードの第2の部分の処理を要求するように構成され得る。ルーチン500を参照して説明されている例は、プログラムコードの2つの部分を必要とするが、任意の数の部分が決定され得、対応する数のそれぞれのコンテナは、相異なる信頼レベルを有するそれぞれの認証情報を使用して、それぞれの部分を実行するように作成され得る。いくつかの場合においては、第1及び第2のコンテナは、マスター/スレーブ関係で構成され得、それにより、ほとんど信頼されていないプログラムコードの第2の部分を含んでいる第2のコンテナが、第1のコンテナから受信された要求に応答してのみ実行され得る。いくつかの場合においては、第1及び第2のコンテナは、きょうだい関係で構成され得、それぞれは、ほとんど信頼されていないコードを必要とするプロセスから、信頼されている認証情報を必要とするプロセスを分離するようにする以外は、他とは無関係にそのそれぞれのプログラムコードを実行する。
ブロック512においては、ワーカマネージャ140により、要求は、第1及び第2のコンテナを使用して処理されることになる。いくつかの場合においては、プログラムコードの第1及び第2の部分は、同時に、かつ並行して実行され得る。いくつかの場合においては、プログラムコードの第2の部分は、第1のコンテナからの、第2のコンテナによって受信される要求に応答してのみ実行され得る。
図5のルーチン500は、ブロック502〜ブロック512を参照して、上に説明されているが、本明細書に説明されている実施形態は、そのように限定されず、1つまたは複数のブロックが、本開示の趣旨から逸脱することなく、削除されても、修正されても、または交換されてもよい。
図6を参照すると、図1の実施形態などの例示的な実施形態に従って、補助サービスとインターフェースする仮想マシンインスタンスを含むセキュリティ機構が示されている。図6の例においては、インスタンス157は、特定のプログラムコードに関連付けられる着信コード実行要求を処理するように構成されている。インスタンス157は、ネットワーク104を介して、1つまたは複数の補助サービス106、及びインスタンスプロビジョニングサービス109と通信するように示されている。たとえば、インスタンス157は、プロビジョニング及び構成状態中に、インスタンスプロビジョニングサービス109と最初に通信し、その後、補助サービス106と直接、通信してよい。セキュリティマネージャ150は、不正なサードパーティからの干渉を防止するために、この接続を管理し、安全保護するように構成され得る。
図7を参照すると、図1の実施形態など、例示的な実施形態に従って、相異なる信頼レベルに関連する部分でプログラムコード実行することを含むセキュリティ機構が示されている。図7においては、インスタンス156は、特定のプログラムコードに関連付けられる着信コード実行要求を処理するように構成されている。インスタンス156は、第1の信頼レベルを有するプログラムコードの第1の部分がロードされたコンテナ156Aと、第2の信頼レベルを有するプログラムコードの第2の部分がロードされたコンテナ156Bとを含む。コンテナ156Aは、コンテナ156Bと、直接、通信しているように示されている。たとえば、コンテナ156Aは、コンテナ156Bに、何らかの信頼されている、または安全な認証情報を渡す必要なしに、コードの第2の部分を実行するための要求をコンテナ156Bに送信することができる。コンテナ156Bは、コンテナ156Aから受信された要求を処理し、任意選択で、その完了時に、応答を提供することができる。
本開示に説明されている機能のすべてが、開示されたコンポーネント及びモバイル通信デバイスの1つまたは複数の物理プロセッサによって実行されるソフトウェアにおいて具現化され得ることは、当業者によって認識されるであろう。ソフトウェアは、任意のタイプの不揮発性ストレージに持続的に記憶され得る。
別段、具体的に記述されない限り、または別の形で、使用される文脈の中で理解されない限り、とりわけ、「can」、「could」、「might」、または「may」などの条件付き言語は、概して、特定の実施形態は、特定の特徴、要素、及び/またはステップを含むが、他の実施形態は、含まないことを伝えるように意図されている。したがって、そのような条件付き言語は、概して、特徴、要素、及び/またはステップが、1つまたは複数の実施形態に何らかの形で必要であること、あるいは1つまたは複数の実施形態が、ユーザ入力もしくはプロンプト指示あり、またはなしで、これらの特徴、要素、及び/またはステップが、任意の特定の実施形態において含まれている、または行われるべきであるかどうかを決めるための論理機構を必ず含んでいると意味することを意図するものではない。
本明細書に説明されている、及び/または添付の図面に示されているフロー図における任意のプロセス記述、要素、またはブロックは、プロセスの中の特有の論理関数またはステップを実装するための1つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの部分を潜在的に表していると理解すべきである。代替の実施態様は、本明細書に説明されている実施形態の範囲内に含まれ、ここでは、当業者によって理解されるように、要素または関数が、必要な機能に応じて、実質的に同時にまたは逆の順序であることを含んで、削除され、示されまたは論じられているものとは順序が違って実行され得る。上の説明したデータ及び/またはコンポーネントが、CD−ROM、DVD−ROM、またはネットワークインターフェースなどのコンピュータ実行可能コンポーネントを記憶するコンピュータ可読ストレージ媒体に関連付けられるドライブ機構を使用して、コンピュータ可読媒体において記憶され、コンピューティングデバイスのメモリにロードされ得ることがさらに認識されるであろう。さらには、コンポーネント及び/またはデータは、単一のデバイスに含められても、または何らかの形で分散されてもよい。したがって、汎用のコンピューティングデバイスは、上に説明した様々なデータ及び/またはコンポーネントの処理及び/または実行により、本開示のプロセス、アルゴリズム、方法論を実装するように構成され得る。
多くの変形及び修正が、上述の実施形態に対して行われ得、それらの要素は、他の許容可能な例の中にあると理解すべきであることを強調すべきである。すべてのそのような修正形態及び変形形態は、本開示の範囲内で本明細書に含まれ、以下の請求項によって保護されるように意図されている。
本開示の実施形態は、以下の条項を考慮して説明され得る。
1. 仮想計算フリートから低レイテンシの計算的能力を提供するためのシステムであって、
ユーザの少なくとも1つのプログラムコードを記憶するように構成された電子データストアと、
特有のコンピュータ実行可能命令を実行する1つまたは複数のハードウェアコンピューティングデバイスを含む仮想計算システムとを備え、前記仮想計算システムは、前記電子データストアと通信し、少なくとも、
1つまたは複数の物理コンピューティングデバイスにおいて複数の仮想マシンインスタンスを維持することであって、前記複数の仮想マシンインスタンスは、1つまたは複数のソフトウェアコンポーネントがロードされ、かつユーザに割り当てられるのを待機している、仮想マシンインスタンスを含むウォーミングプール、及び1人または複数人のユーザに、現在、割り当てられている仮想マシンインスタンスを含むアクティブプールを備える、前記維持することと、
前記仮想計算システムにおいて特定のユーザに関連付けられるプログラムコードを実行するための要求を受信することであって、前記要求が、前記プログラムコード及び前記プログラムコードに関連付けられる前記特定のユーザを示す情報を含む、前記受信することと、
前記受信された要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することと、
前記ウォーミングプールまたは前記アクティブプールから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
前記ユーザ指定のセキュリティポリシに基づいて、前記選択された仮想マシンインスタンスにコンテナを作成することと、
前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に前記電子データストアからロードさせ、前記セキュリティポリシに従って前記コンテナにおいて実行させることと、
を行うように構成される、
前記システム。
2. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが仮想プライベートクラウドと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、条項1に記載のシステム。
3. 前記ユーザ指定のセキュリティポリシが、前記特定のユーザに関連付けられるセキュリティポリシに一部、基づいている、条項1に記載のシステム。
4. 特有のコンピュータ実行可能命令を実行する1つまたは複数のハードウェアコンピューティングデバイスを含む仮想計算システム、
を備えるシステムであって、前記仮想計算システムが、少なくとも、
前記仮想計算システムにおいてプログラムコードを実行するための要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することであって、前記プログラムコードが、特定のユーザに関連付けられる、前記決定することと、
1つまたは複数の物理コンピューティングデバイスにおいて維持される複数の仮想マシンインスタンスから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
前記1つまたは複数のセキュリティパラメータに基づいて、前記選択された仮想マシンインスタンスにコンテナを取得することと、
前記特定のユーザに関連付けられる前記プログラムコードを、前記ユーザ指定のセキュリティポリシに少なくとも一部基づいて、前記コンテナにおいて実行させることと、
を行うように構成される、
前記システム。
5. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが補助サービスと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、条項4に記載のシステム。
6. 前記セキュリティポリシが、前記仮想計算システムにおいて前記プログラムコードを実行するのに割り当てられることになるコンピューティングリソースの量をさらに指定し、前記仮想マシンインスタンスにおいて前記コンテナを作成することが、少なくとも、前記仮想マシンインスタンスにおいて利用可能なコンピューティングリソースから、コンピューティングリソースの示された量を割り当てることを含む、条項4に記載のシステム。
7. 前記セキュリティポリシが、少なくとも、信頼されている認証情報を使用して実行されることになる前記プログラムコードの第1の部分、及び前記信頼されている認証情報を使用せずに実行されることになる前記プログラムコードの第2の部分を示す構成データをさらに含む、条項4に記載のシステム。
8. 前記ユーザ指定のセキュリティポリシが、前記特定のユーザに関連付けられるセキュリティポリシに一部基づいている、条項4に記載のシステム。
9. 前記仮想計算システムが、
1人または複数人のユーザに、現在、割り当てられている仮想マシンインスタンスのアクティブプールを維持することであって、前記アクティブプールの中の各仮想マシンインスタンスは、1つまたは複数のソフトウェアコンポーネントがロードされている、前記維持することと、
前記アクティブプールから前記仮想マシンインスタンスを選択することであって、前記仮想マシンインスタンスが、前記ユーザ指定のセキュリティポリシに従って構成される、前記選択することと、
を行うようにさらに構成されている、条項4に記載のシステム。
10. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得するために、前記仮想計算システムは、
前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されている、構成されたコンテナを、前記仮想マシンインスタンスが含んでいることを決定することと、
前記プログラムコードを実行するための使用に向けて、前記構成されたコンテナを選択することと、
を行うようにさらに構成される、条項4に記載のシステム。
11. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得するために、前記仮想計算システムは、
前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されている、構成されたコンテナを、前記仮想マシンインスタンスが含んでいないことを決定することと、
前記1つまたは複数のセキュリティパラメータに従って前記コンテナを作成し、前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に電子データストアからロードさせることと、
を行うようにさらに構成されている、条項4に記載のシステム。
12. コンピュータ実装方法であって、
特有の実行可能命令により構成された1つまたは複数のコンピューティングデバイスによって実装されるとき、
仮想計算システムにおいてプログラムコードを実行するための要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することであって、前記プログラムコードが、特定のユーザに関連付けられる、前記決定することと、
1つまたは複数の物理コンピューティングデバイスにおいて維持される複数の仮想マシンインスタンスから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを作成することと、
前記特定のユーザに関連付けられる前記プログラムコードを、前記ユーザ指定のセキュリティポリシに少なくとも一部基づいて、前記コンテナにおいて実行させることと、
を含む、前記コンピュータ実装方法。
13. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが補助サービスと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、条項12に記載のコンピュータ実装方法。
14. 前記セキュリティポリシが、前記仮想計算システムにおいて前記プログラムコードを実行するのに割り当てられることになるコンピューティングリソースの量をさらに指定し、前記仮想マシンインスタンスにおいて前記コンテナを作成することが、少なくとも、前記仮想マシンインスタンスにおいて利用可能なコンピューティングリソースから、コンピューティングリソースの示された量を割り当てることを含む、条項12に記載のコンピュータ実装方法。
15. 前記セキュリティポリシが、少なくとも、信頼される認証情報を使用して実行されることになる前記プログラムコードの第1の部分、及び前記信頼される認証情報を使用せずに実行されることになる前記プログラムコードの第2の部分を示す構成データをさらに含む、条項12に記載のコンピュータ実装方法。
16. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得することは、
前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されているコンテナを、前記仮想マシンインスタンスが含んでいることを決定することと、
前記プログラムコードを実行するための使用に向けて、前記コンテナを選択するステップと、
をさらに含む、条項12に記載のコンピュータ実装方法。
17. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得することは、
前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されているコンテナを、前記仮想マシンインスタンスが含んでいないことを決定することと、
前記1つまたは複数のセキュリティパラメータに従ってコンテナを作成し、前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に電子データストアからロードさせることと、
をさらに含む、条項12に記載のコンピュータ実装方法。
18. コンピュータ実行可能命令を記憶したコンピュータ可読、非一時的ストレージ媒体であって、前記コンピュータ実行可能命令は、1つまたは複数のコンピューティングデバイスによって実行されるとき、
仮想計算システムにおいてプログラムコードを実行するための要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することであって、前記プログラムコードが、特定のユーザに関連付けられる、前記決定することと、
1つまたは複数の物理コンピューティングデバイスにおいて維持される複数の仮想マシンインスタンスから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを作成することと、
前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に電子データストアからロードさせ、前記ユーザ指定のセキュリティポリシに少なくとも一部基づいて、前記コンテナにおいて実行させることと、
を含む動作を実行するように前記1つまたは複数のコンピューティングデバイスを構成する、
前記コンピュータ可読、非一時的ストレージ媒体。
19. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが補助サービスと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、条項18に記載のコンピュータ可読、非一時的ストレージ媒体。
20. 前記セキュリティポリシが、少なくとも、信頼される認証情報を使用して実行されることになる前記プログラムコードの第1の部分、及び前記信頼される認証情報を使用せずに実行されることになる前記プログラムコードの第2の部分を示す構成データをさらに含む、条項18に記載のコンピュータ可読、非一時的ストレージ媒体。
21. 前記セキュリティポリシが、少なくとも、信頼される認証情報を使用して実行されることになる前記プログラムコードの第1の部分、及び前記信頼される認証情報を使用せずに実行されることになる前記プログラムコードの第2の部分を示す構成データをさらに含む、条項18に記載のコンピュータ可読、非一時的ストレージ媒体。
22. 前記動作が、
1人または複数人のユーザに、現在、割り当てられている仮想マシンインスタンスのアクティブプールを維持することであって、前記アクティブプールの中の各仮想マシンインスタンスは、1つまたは複数のソフトウェアコンポーネントがロードされている、前記維持することと、
前記アクティブプールから前記仮想マシンインスタンスを選択することであって、前記仮想マシンインスタンスが、前記ユーザ指定のセキュリティポリシに従って構成されている、前記選択することと、
をさらに含む、条項21に記載のコンピュータ可読、非一時的ストレージ媒体。

Claims (15)

  1. 低レイテンシの計算的能力を提供するためのシステムであって、
    ユーザの少なくとも1つのプログラムコードを記憶するように構成された電子データストアと、
    特有のコンピュータ実行可能命令を実行する1つまたは複数のハードウェアコンピューティングデバイスを含む仮想計算システムとを備え、前記仮想計算システムは、前記電子データストアと通信し、少なくとも、
    1つまたは複数の物理コンピューティングデバイスにおいて複数の仮想マシンインスタンスを維持することであって、前記複数の仮想マシンインスタンスは、1つまたは複数のソフトウェアコンポーネントがロードされ、かつユーザに割り当てられるのを待機している、仮想マシンインスタンスを含むウォーミングプール、及び1人または複数人のユーザに、現在、割り当てられている仮想マシンインスタンスを含むアクティブプールを備える、前記維持することと、
    前記仮想計算システムにおいて特定のユーザに関連付けられるプログラムコードを実行するための要求を受信することであって、前記要求が、前記プログラムコード及び前記プログラムコードに関連付けられる前記特定のユーザを示す情報を含む、前記受信することと、
    前記受信された要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することと、
    前記ウォーミングプールまたは前記アクティブプールから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
    前記ユーザ指定のセキュリティポリシに基づいて、前記選択された仮想マシンインスタンスにコンテナを作成することと、
    前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に前記電子データストアからロードさせ、前記セキュリティポリシに従って前記コンテナにおいて実行させることと
    を行うように構成される、
    前記システム。
  2. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが仮想プライベートクラウドと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、請求項1に記載のシステム。
  3. 前記ユーザ指定のセキュリティポリシが、前記特定のユーザに関連付けられるセキュリティポリシに一部、基づいている、請求項1に記載のシステム。
  4. 特有のコンピュータ実行可能命令を実行する1つまたは複数のハードウェアコンピューティングデバイスを含む仮想計算システム、
    を備えるシステムであって、前記仮想計算システムが、少なくとも、
    前記仮想計算システムにおいてプログラムコードを実行するための要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することであって、前記プログラムコードが、特定のユーザに関連付けられる、前記決定することと、
    1つまたは複数の物理コンピューティングデバイスにおいて維持される複数の仮想マシンインスタンスから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
    前記1つまたは複数のセキュリティパラメータに基づいて、前記選択された仮想マシンインスタンスにコンテナを取得することと、
    前記特定のユーザに関連付けられる前記プログラムコードを、前記ユーザ指定のセキュリティポリシに少なくとも一部基づいて、前記コンテナにおいて実行させることと
    を行うように構成される、
    前記システム。
  5. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが補助サービスと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、請求項4に記載のシステム。
  6. 前記セキュリティポリシが、前記仮想計算システムにおいて前記プログラムコードを実行するのに割り当てられることになるコンピューティングリソースの量をさらに指定し、前記仮想マシンインスタンスにおいて前記コンテナを作成することが、少なくとも、前記仮想マシンインスタンスにおいて利用可能なコンピューティングリソースから、コンピューティングリソースの示された量を割り当てることを含む、請求項4に記載のシステム。
  7. 前記セキュリティポリシが、少なくとも、信頼されている認証情報を使用して実行されることになる前記プログラムコードの第1の部分、及び前記信頼されている認証情報を使用せずに実行されることになる前記プログラムコードの第2の部分を示す構成データをさらに含む、請求項4に記載のシステム。
  8. 前記ユーザ指定のセキュリティポリシが、前記特定のユーザに関連付けられるセキュリティポリシに一部基づいている、請求項4に記載のシステム。
  9. 前記仮想計算システムが、
    1人または複数人のユーザに、現在、割り当てられている仮想マシンインスタンスのアクティブプールを維持することであって、前記アクティブプールの中の各仮想マシンインスタンスは、1つまたは複数のソフトウェアコンポーネントがロードされている、前記維持することと、
    前記アクティブプールから前記仮想マシンインスタンスを選択することであって、前記仮想マシンインスタンスが、前記ユーザ指定のセキュリティポリシに従って構成される、前記選択することと、
    を行うようにさらに構成される、請求項4に記載のシステム。
  10. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得するために、前記仮想計算システムは、
    前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されている、構成されたコンテナを、前記仮想マシンインスタンスが含んでいることを決定することと、
    前記プログラムコードを実行するための使用に向けて、前記構成されたコンテナを選択することと、
    を行うようにさらに構成される、請求項4に記載のシステム。
  11. コンピュータ実装方法であって、
    特有の実行可能命令を実行する1つまたは複数のコンピューティングデバイスによって実装されるとき、
    仮想計算システムにおいてプログラムコードを実行するための要求に基づいて、前記プログラムコードを実行させることになる1つまたは複数のセキュリティパラメータを指定するユーザ指定のセキュリティポリシを決定することであって、前記プログラムコードが、特定のユーザに関連付けられる、前記決定することと、
    1つまたは複数の物理コンピューティングデバイスにおいて維持される複数の仮想マシンインスタンスから、前記プログラムコードを実行するのに使用されることになる仮想マシンインスタンスを選択することと、
    前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを作成することと、
    前記特定のユーザに関連付けられる前記プログラムコードを、前記ユーザ指定のセキュリティポリシに少なくとも一部基づいて、前記コンテナにおいて実行させることと、
    を含む、前記コンピュータ実装方法。

  12. 前記1つまたは複数のセキュリティパラメータが、処理持続時間限度、メモリ限度、伝送制御プロトコル(「TCP」)ソケット接続を可能にするパラメータ、前記コンテナへのインバウンドもしくはアウトバウンドのネットワーク接続を可能にするパラメータ、前記コンテナが補助サービスと通信できるようにするパラメータ、前記コンテナが前記選択された仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、前記コンテナが第2の仮想マシンインスタンスにおいて含まれている第2のコンテナと通信できるようにするパラメータ、及び前記コンテナが前記プログラムコードとの関連で実行することを許可されるアクセス制限機能のリスト、のうちの1つまたは複数を含む、請求項11に記載のコンピュータ実装方法。
  13. 前記セキュリティポリシが、前記仮想計算システムにおいて前記プログラムコードを実行するのに割り当てられることになるコンピューティングリソースの量をさらに指定し、前記仮想マシンインスタンスにおいて前記コンテナを作成することが、少なくとも、前記仮想マシンインスタンスにおいて利用可能なコンピューティングリソースから、コンピューティングリソースの示された量を割り当てることを含む、請求項11に記載のコンピュータ実装方法。
  14. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得することは、
    前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されているコンテナを、前記仮想マシンインスタンスが含んでいることを決定することと、
    前記プログラムコードを実行するための使用に向けて、前記コンテナを選択することと、
    をさらに含む、請求項11に記載のコンピュータ実装方法。
  15. 前記1つまたは複数のセキュリティパラメータに従って、前記選択された仮想マシンインスタンスにコンテナを取得することは、
    前記プログラムコードがロードされ、かつ前記1つまたは複数のセキュリティパラメータに従って構成されているコンテナを、前記仮想マシンインスタンスが含んでいないことを決定することと、
    前記1つまたは複数のセキュリティパラメータに従ってコンテナを作成し、前記特定のユーザに関連付けられる前記プログラムコードを、前記コンテナ上に電子データストアからロードさせることと、
    をさらに含む、請求項11に記載のコンピュータ実装方法。
JP2017540997A 2015-02-04 2016-02-02 プログラムコードの低レイテンシ実行のためのセキュリティプロトコル Active JP6463494B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/613,688 US9471775B1 (en) 2015-02-04 2015-02-04 Security protocols for low latency execution of program code
US14/613,688 2015-02-04
PCT/US2016/016211 WO2016126731A1 (en) 2015-02-04 2016-02-02 Security protocols for low latency execution of program code

Publications (2)

Publication Number Publication Date
JP2018512087A JP2018512087A (ja) 2018-05-10
JP6463494B2 true JP6463494B2 (ja) 2019-02-06

Family

ID=55410237

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017540997A Active JP6463494B2 (ja) 2015-02-04 2016-02-02 プログラムコードの低レイテンシ実行のためのセキュリティプロトコル

Country Status (8)

Country Link
US (1) US9471775B1 (ja)
EP (1) EP3254434B1 (ja)
JP (1) JP6463494B2 (ja)
KR (1) KR101970616B1 (ja)
CN (1) CN107533470B (ja)
AU (1) AU2016215438B2 (ja)
CA (1) CA2975522C (ja)
WO (1) WO2016126731A1 (ja)

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10305858B2 (en) 2015-12-18 2019-05-28 Nicira, Inc. Datapath processing of service rules with qualifiers defined in terms of dynamic groups
US10341297B2 (en) 2015-12-18 2019-07-02 Nicira, Inc. Datapath processing of service rules with qualifiers defined in terms of template identifiers and/or template matching criteria
US10469450B2 (en) 2015-12-18 2019-11-05 Nicira, Inc. Creating and distributing template based service rules
US10148696B2 (en) * 2015-12-18 2018-12-04 Nicira, Inc. Service rule console for creating, viewing and updating template based service rules
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10225259B2 (en) 2016-03-30 2019-03-05 Oracle International Corporation Establishing a cleanroom data processing environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10713272B1 (en) 2016-06-30 2020-07-14 Amazon Technologies, Inc. Dynamic generation of data catalogs for accessing data
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10514932B2 (en) * 2016-09-26 2019-12-24 Amazon Technologies, Inc. Resource configuration based on dynamic group membership
US10871995B2 (en) * 2016-09-29 2020-12-22 Amazon Technologies, Inc. Managed container instances
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10621210B2 (en) 2016-11-27 2020-04-14 Amazon Technologies, Inc. Recognizing unknown data objects
US11277494B1 (en) 2016-11-27 2022-03-15 Amazon Technologies, Inc. Dynamically routing code for executing
US10963479B1 (en) 2016-11-27 2021-03-30 Amazon Technologies, Inc. Hosting version controlled extract, transform, load (ETL) code
US11138220B2 (en) 2016-11-27 2021-10-05 Amazon Technologies, Inc. Generating data transformation workflows
US11481408B2 (en) 2016-11-27 2022-10-25 Amazon Technologies, Inc. Event driven extract, transform, load (ETL) processing
US10545979B2 (en) 2016-12-20 2020-01-28 Amazon Technologies, Inc. Maintaining data lineage to detect data events
US11036560B1 (en) * 2016-12-20 2021-06-15 Amazon Technologies, Inc. Determining isolation types for executing code portions
US10936331B2 (en) * 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container
CN110476152A (zh) * 2017-04-12 2019-11-19 索尼公司 信息处理设备、信息处理方法和计算机程序
US11126927B2 (en) * 2017-11-24 2021-09-21 Amazon Technologies, Inc. Auto-scaling hosted machine learning models for production inference
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10884788B2 (en) * 2018-04-03 2021-01-05 Amazon Technologies, Inc. On-demand code execution with limited memory footprint
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) * 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US10747580B2 (en) * 2018-08-17 2020-08-18 Vmware, Inc. Function as a service (FaaS) execution distributor
CN109189463A (zh) * 2018-08-28 2019-01-11 杭州百腾教育科技有限公司 一种对程序代码自动进行判断的控制方法及控制装置
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11258827B2 (en) 2018-10-19 2022-02-22 Oracle International Corporation Autonomous monitoring of applications in a cloud environment
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
CN113614697B (zh) * 2018-12-21 2023-10-13 华为云计算技术有限公司 减少无服务器函数启动延迟的机制
GB2580709B (en) * 2019-01-28 2021-12-15 Osirium Ltd Task engine
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11269804B1 (en) * 2019-02-25 2022-03-08 Amazon Technologies, Inc. Hardware adapter to connect with a distributed network service
US11249803B2 (en) * 2019-03-11 2022-02-15 Nec Corporation Usecase specification and runtime execution
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
WO2020226659A1 (en) * 2019-05-09 2020-11-12 Huawei Technologies Co., Ltd. Faas warm startup and scheduling
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11669365B1 (en) 2019-08-26 2023-06-06 Amazon Technologies, Inc. Task pool for managed compute instances
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
JP7434039B2 (ja) 2020-04-08 2024-02-20 キヤノン株式会社 情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法
US11843539B1 (en) * 2020-08-24 2023-12-12 Aviatrix Systems, Inc. Systems and methods for load balancing network traffic at firewalls deployed in a cloud computing environment
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
CN112529711B (zh) * 2021-02-07 2021-05-14 腾讯科技(深圳)有限公司 基于区块链虚拟机复用的交易处理方法及装置
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
CN114518935A (zh) * 2021-12-31 2022-05-20 国电南瑞科技股份有限公司 一种容器无感知启动方法及系统
US12034726B1 (en) * 2023-05-31 2024-07-09 Cloudflare, Inc. Logging access types based on inserting tenant control headers into requests

Family Cites Families (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5283888A (en) 1991-08-27 1994-02-01 International Business Machines Corporation Voice processing interface unit employing virtual screen communications for accessing a plurality of primed applications
US6708276B1 (en) * 1999-08-03 2004-03-16 International Business Machines Corporation Architecture for denied permissions in Java
US6854114B1 (en) 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
US20040249947A1 (en) 2003-05-22 2004-12-09 Hewlett-Packard Development Company, L.P. Concurrent cluster environment
US7665090B1 (en) 2004-03-08 2010-02-16 Swsoft Holdings, Ltd. System, method, and computer program product for group scheduling of computer resources
US7565661B2 (en) 2004-05-10 2009-07-21 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
US7707579B2 (en) 2005-07-14 2010-04-27 International Business Machines Corporation Method and system for application profiling for purposes of defining resource requirements
JP4650203B2 (ja) 2005-10-20 2011-03-16 株式会社日立製作所 情報システム及び管理計算機
US7756972B2 (en) 2005-12-06 2010-07-13 Cisco Technology, Inc. System for power savings in server farms
US7716446B1 (en) 2006-04-27 2010-05-11 Vmware, Inc. System and method for cooperative virtual machine memory scheduling
US8046765B2 (en) 2006-07-25 2011-10-25 Hewlett-Packard Development Company, L.P. System and method for determining allocation of resource access demands to different classes of service based at least in part on permitted degraded performance
US7823186B2 (en) * 2006-08-24 2010-10-26 Novell, Inc. System and method for applying security policies on multiple assembly caches
US7996855B2 (en) 2006-09-15 2011-08-09 Oracle International Corporation Personal messaging application programming interface for integrating an application with groupware systems
US8010990B2 (en) * 2006-10-26 2011-08-30 Intel Corporation Acceleration of packet flow classification in a virtualized system
CN101196974B (zh) * 2006-12-06 2011-08-24 国际商业机器公司 用于软件应用程序的自动配置的方法和系统
US8996864B2 (en) 2006-12-22 2015-03-31 Virtuallogix Sa System for enabling multiple execution environments to share a device
US8554981B2 (en) 2007-02-02 2013-10-08 Vmware, Inc. High availability virtual machine cluster
US20080201414A1 (en) 2007-02-15 2008-08-21 Amir Husain Syed M Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer
US8065676B1 (en) 2007-04-24 2011-11-22 Hewlett-Packard Development Company, L.P. Automated provisioning of virtual machines for a virtual machine buffer pool and production pool
US20090055810A1 (en) 2007-08-21 2009-02-26 Nce Technologies Inc. Method And System For Compilation And Execution Of Software Codes
US8171473B2 (en) 2007-08-31 2012-05-01 International Business Machines Corporation Method and apparatus for determining a service cluster topology based on static analysis
US8402472B2 (en) 2007-09-14 2013-03-19 International Business Machines Corporation Network management system event notification shortcut
US8166304B2 (en) * 2007-10-02 2012-04-24 International Business Machines Corporation Support for multiple security policies on a unified authentication architecture
US20090204964A1 (en) 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US8566835B2 (en) 2007-12-13 2013-10-22 Hewlett-Packard Development Company, L.P. Dynamically resizing a virtual machine container
US8560694B2 (en) 2008-02-01 2013-10-15 Microsoft Corporation Virtual application server with version control
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US20090300599A1 (en) 2008-05-30 2009-12-03 Matthew Thomas Piotrowski Systems and methods of utilizing virtual machines to protect computer systems
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8769206B2 (en) 2009-01-20 2014-07-01 Oracle International Corporation Methods and systems for implementing transcendent page caching
CN101488098B (zh) * 2009-02-13 2011-11-30 华中科技大学 基于虚拟计算技术的多核计算资源管理系统
CA2674402C (en) 2009-07-31 2016-07-19 Ibm Canada Limited - Ibm Canada Limitee Optimizing on demand allocation of virtual machines using a stateless preallocation pool
US8271653B2 (en) 2009-08-31 2012-09-18 Red Hat, Inc. Methods and systems for cloud management using multiple cloud management schemes to allow communication between independently controlled clouds
US8769083B2 (en) 2009-08-31 2014-07-01 Red Hat, Inc. Metering software infrastructure in a cloud computing environment
US8448165B1 (en) 2009-09-15 2013-05-21 Symantec Corporation System and method for logging operations of virtual machines
US9086922B2 (en) 2009-10-26 2015-07-21 Microsoft Technology Licensing, Llc Opportunistically scheduling and adjusting time slices
US8311032B2 (en) 2009-12-03 2012-11-13 International Business Machines Corporation Dynamically provisioning virtual machines
EP3009941B1 (en) 2009-12-14 2017-07-26 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8949408B2 (en) 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US8683465B2 (en) 2009-12-18 2014-03-25 International Business Machines Corporation Virtual image deployment with a warm cache
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US8627426B2 (en) 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
CN102971706B (zh) 2010-05-10 2016-08-10 思杰系统有限公司 将信息从安全虚拟机重定向到不安全虚拟机
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US8694777B2 (en) * 2010-08-13 2014-04-08 International Business Machines Corporation Securely identifying host systems
US8694400B1 (en) 2010-09-14 2014-04-08 Amazon Technologies, Inc. Managing operational throughput for shared resources
JP5653151B2 (ja) 2010-09-17 2015-01-14 キヤノン株式会社 クラウドコンピューティングシステム、クラウドコンピューティングシステムの制御方法、および管理アプリケーション
US8661120B2 (en) * 2010-09-21 2014-02-25 Amazon Technologies, Inc. Methods and systems for dynamically managing requests for computing capacity
WO2012050772A1 (en) * 2010-09-30 2012-04-19 Amazon Technologies, Inc. Virtual resource cost tracking with dedicated implementation resources
US9253016B2 (en) 2010-11-02 2016-02-02 International Business Machines Corporation Management of a data network of a computing environment
US8959220B2 (en) 2010-11-02 2015-02-17 International Business Machines Corporation Managing a workload of a plurality of virtual servers of a computing environment
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
CN102681899B (zh) * 2011-03-14 2015-06-10 金剑 云计算服务平台的虚拟计算资源动态管理方法
US8429282B1 (en) 2011-03-22 2013-04-23 Amazon Technologies, Inc. System and method for avoiding system overload by maintaining an ideal request rate
US9450838B2 (en) 2011-06-27 2016-09-20 Microsoft Technology Licensing, Llc Resource management for cloud computing platforms
DE102012217202B4 (de) 2011-10-12 2020-06-18 International Business Machines Corporation Verfahren und System zum Optimieren des Platzierens virtueller Maschinen in Cloud-Computing-Umgebungen
US9213503B2 (en) 2011-10-30 2015-12-15 Hewlett-Packard Development Company, L.P. Service provider management of virtual instances corresponding to hardware resources managed by other service providers
US9609020B2 (en) 2012-01-06 2017-03-28 Optio Labs, Inc. Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
US20130179894A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Platform as a service job scheduling
US8904008B2 (en) 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
US20130185729A1 (en) 2012-01-13 2013-07-18 Rutgers, The State University Of New Jersey Accelerating resource allocation in virtualized environments using workload classes and/or workload signatures
US9110728B2 (en) 2012-01-31 2015-08-18 Vmware, Inc. Elastic allocation of computing resources to software applications
US9047133B2 (en) 2012-03-02 2015-06-02 Vmware, Inc. Single, logical, multi-tier application blueprint used for deployment and management of multiple physical applications in a cloud environment
US8843935B2 (en) 2012-05-03 2014-09-23 Vmware, Inc. Automatically changing a pre-selected datastore associated with a requested host for a virtual machine deployment based on resource availability during deployment of the virtual machine
GB2501757A (en) 2012-05-04 2013-11-06 Ibm Instrumentation of software applications for configuration thereof
US8782632B1 (en) 2012-06-18 2014-07-15 Tellabs Operations, Inc. Methods and apparatus for performing in-service software upgrade for a network device using system virtualization
US9342326B2 (en) 2012-06-19 2016-05-17 Microsoft Technology Licensing, Llc Allocating identified intermediary tasks for requesting virtual machines within a trust sphere on a processing goal
US8869157B2 (en) 2012-06-21 2014-10-21 Breakingpoint Systems, Inc. Systems and methods for distributing tasks and/or processing recources in a system
US8959484B2 (en) 2012-06-21 2015-02-17 Microsoft Corporation System for hosted, shared, source control build
US20140007097A1 (en) 2012-06-29 2014-01-02 Brocade Communications Systems, Inc. Dynamic resource allocation for virtual machines
US9396008B2 (en) 2012-07-13 2016-07-19 Ca, Inc. System and method for continuous optimization of computing systems with automated assignment of virtual machines and physical machines to hosts
US9152443B2 (en) 2012-07-13 2015-10-06 Ca, Inc. System and method for automated assignment of virtual machines and physical machines to hosts with right-sizing
US8978035B2 (en) 2012-09-06 2015-03-10 Red Hat, Inc. Scaling of application resources in a multi-tenant platform-as-a-service environment in a cloud computing system
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9507586B2 (en) 2012-10-05 2016-11-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtual machine based controller and upgrade mechanism
US9229759B2 (en) 2012-10-17 2016-01-05 Microsoft Technology Licensing, Llc Virtual machine provisioning using replicated containers
US9262212B2 (en) 2012-11-02 2016-02-16 The Boeing Company Systems and methods for migrating virtual machines
US9063795B2 (en) 2012-12-19 2015-06-23 International Business Machines Corporation Adaptive resource usage limits for workload management
US9384517B2 (en) 2013-03-14 2016-07-05 Google Inc. Rendering
US9329888B2 (en) 2013-01-28 2016-05-03 International Business Machines Corporation Computing optimized virtual machine allocations using equivalence combinations
US9336031B2 (en) 2013-02-27 2016-05-10 International Business Machines Corporation Managing allocation of hardware resources in a virtualized environment
US9027087B2 (en) * 2013-03-14 2015-05-05 Rackspace Us, Inc. Method and system for identity-based authentication of virtual machines
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US10430332B2 (en) 2013-03-25 2019-10-01 Salesforce.Com, Inc. System and method for performance tuning of garbage collection algorithms
CN103338246B (zh) * 2013-06-19 2016-08-10 华南师范大学 一种基础设施云资源分配过程中的虚拟机选择方法及系统
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
CN104009885B (zh) * 2014-05-22 2018-08-03 北京大学 一种云环境下基于隐蔽通道的虚拟机同驻检测方法
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9652273B2 (en) 2014-10-02 2017-05-16 Vmware, Inc. Method and system for creating a hierarchy of virtual machine templates in a virtualized computing system

Also Published As

Publication number Publication date
US9471775B1 (en) 2016-10-18
WO2016126731A1 (en) 2016-08-11
CN107533470B (zh) 2021-03-09
CA2975522A1 (en) 2016-08-11
EP3254434B1 (en) 2019-10-09
EP3254434A1 (en) 2017-12-13
AU2016215438B2 (en) 2018-11-29
CA2975522C (en) 2020-07-21
KR20170110647A (ko) 2017-10-11
AU2016215438A1 (en) 2017-08-24
JP2018512087A (ja) 2018-05-10
KR101970616B1 (ko) 2019-08-13
CN107533470A (zh) 2018-01-02

Similar Documents

Publication Publication Date Title
JP6463494B2 (ja) プログラムコードの低レイテンシ実行のためのセキュリティプロトコル
US11461124B2 (en) Security protocols for low latency execution of program code
US9727725B2 (en) Security protocols for low latency execution of program code
US20220391238A1 (en) Low latency computational capacity provisioning
JP6892729B2 (ja) コード実行要請ルーティング
CN107209682B (zh) 资源调整的自动管理
CN109478134B (zh) 用跨账户别名执行按需网络代码
EP3201768B1 (en) Programmatic event detection and message generation for requests to execute program code

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181228

R150 Certificate of patent or registration of utility model

Ref document number: 6463494

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250