CN107533470A - 用于低延时执行程序代码的安全协议 - Google Patents

用于低延时执行程序代码的安全协议 Download PDF

Info

Publication number
CN107533470A
CN107533470A CN201680008799.6A CN201680008799A CN107533470A CN 107533470 A CN107533470 A CN 107533470A CN 201680008799 A CN201680008799 A CN 201680008799A CN 107533470 A CN107533470 A CN 107533470A
Authority
CN
China
Prior art keywords
container
virtual machine
program code
machine instance
user
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.)
Granted
Application number
CN201680008799.6A
Other languages
English (en)
Other versions
CN107533470B (zh
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 CN107533470A publication Critical patent/CN107533470A/zh
Application granted granted Critical
Publication of CN107533470B publication Critical patent/CN107533470B/zh
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)

Abstract

描述了一种用于为程序代码的安全执行提供安全机制的系统。所述系统可以被配置为维持多个虚拟机实例。所述系统还可被配置为接收执行程序代码的请求并分配用于在所述虚拟机实例之一上执行所述程序代码的计算资源。一种机制涉及根据用户指定的安全策略执行程序代码。另一种机制涉及执行可被配置为与辅助服务通信或交互的程序代码。另一种机制涉及分割程序代码和以多个部分执行程序代码,其中所述程序代码的一些部分与第一信任级别相关联地执行并且所述程序代码的一些部分以不同信任级别执行。

Description

用于低延时执行程序代码的安全协议
其他申请的交叉引用
本申请的申请人以前在2015年2月4日提交了以下美国专利申请:
本申请的申请人以前在2014年9月30日提交了以下美国专利申请:
以上引用的申请的公开内容特此以引用的方式整体并入。
背景
一般来说,计算装置利用通信网络或一系列通信网络来交换数据。公司和组织操作互连若干计算装置以支持操作或向第三方提供服务的计算机网络。计算系统可位于单一地理位置或者位于多个不同地理位置中(例如,经由专用或公共通信网络互连)。具体来说,数据中心或数据处理中心(在本文中总体称之为“数据中心”)可包括多个互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表某一组织操作的专用数据中心或代表公众或者为了公众的利益操作的公共数据中心。
为了有助于提高数据中心资源的利用率,虚拟化技术可以允许单个物理计算装置来托管虚拟机的一个或多个实例,所述一个或多个实例作为独立计算装置向数据中心的用户进行显示和操作。在虚拟化技术的情况下,单个物理计算装置可以动态方式创建、维持、删除或另外管理虚拟机。进而,用户可从数据中心请求计算机资源,包括单一计算装置或联网计算装置配置,并且可提供用户不同数目的虚拟机资源。
在一些情境中,可以根据若干虚拟机实例类型配置虚拟机实例以提供特定功能。例如,各种计算装置可与操作系统或操作系统配置、虚拟化硬件资源和软件应用的不同组合相关联,以使得计算装置能够提供不同的期望功能,或者更有效地提供类似功能。这些虚拟机实例类型配置通常包含在装置图像内,所述装置图像包括包含虚拟机启动时将运行的软件(例如,OS以及应用及其配置和数据文件等)的静态数据。所述装置图像通常存储在用于创建或初始化所述实例的磁盘中。因此,计算装置可处理装置图像以便实现所希望的软件配置。
附图简述
本公开的前述方面和伴随的优点中的许多将与通过参考当结合附图进行时的下面的详述变得更好理解一样变得更容易理解,其中:
图1是描绘了根据示例性方面的用于提供低延时计算能力的说明性环境的框图。
图2描绘了在用于提供低延时计算能力的环境中提供用于管理安全性的安全管理器的计算装置的一般架构,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
图3是示出了涉及用户指定的安全策略的安全例程的流程图,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
图4是示出了涉及与辅助服务交互的安全例程的流程图,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
图5是示出了涉及执行与不同信任级别相关联的部分中的程序代码的安全例程的流程图,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
图6是描绘了涉及与辅助服务交互的安全例程的说明性环境的框图,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
图7是描绘了涉及执行与不同信任级别相关联的部分中的程序代码的安全例程的说明性环境的框图,如虚拟计算系统诸如图1的虚拟计算系统所实现的那样。
详述
公司和组织不再需要获取和管理其自身的数据中心以便执行计算操作(例如,执行代码,包括线程、程序、功能、软件、例程、子例程、进程等)。随着云计算的到来,现在可在互联网上以分钟获得并配置传统上由硬件计算装置所提供的存储空间和计算能力。因此,开发人员可以快速地购买所需要的计算资源量,而无需为获取物理机而烦恼。这类计算资源通常以虚拟计算资源或虚拟机实例的形式来购买。虚拟机的这些实例是物理机(例如,计算机)的软件实现,所述软件实现托管在物理计算装置上,并且可以包含通常提供在物理机上的它们自己的操作系统和其他应用。使用一组计算资源(例如,存储器、CPU、磁盘、网络等)对这些虚拟机实例进行配置,在所述虚拟机实例上运行的应用可以请求并且可以与物理计算机相同的方式利用所述组计算资源。
然而,即使当购买了虚拟计算资源(例如,呈虚拟机实例的形式),开发人员仍然需要决定购买多少和购买什么类型的虚拟机实例以及保持它们多长时间。例如,根据它们租用的类型和小时数,使用虚拟机实例的成本可能不同。另外,虚拟机可被租用的最小时间典型地以小时计。此外,开发者必须指定在虚拟机上安装的硬件和软件资源(例如,操作系统的类型和语言运行时等)。他们可能具有的其他问题包括利用过度(例如,获取极少计算资源而面临性能问题)、利用不足(例如,获取比运行代码所需更多的计算资源,并且因此付费过度)、流量变化预测(例如,以使得他们了解何时放大规模或减小规模)以及实例和语言运行时启动延迟(这可花费3-10分钟或者更长,即使用户可能希望计算能力以秒或者甚至毫秒计)。因此,需要一种允许用户利用由服务提供商提供的虚拟机实例的改进方法。
根据本公开的方面,通过维持一接收到用户请求就随时可用的预初始化的虚拟机实例池,可以大大缩短与执行用户代码(例如,实例和语言运行时启动时间)相关联的延迟(有时称作延时)。
一般来说,本公开的方面涉及虚拟机实例及其中所创建的容器的管理。具体地说,公开的系统和方法有助于虚拟计算系统中虚拟机实例的管理。虚拟计算系统维持虚拟机实例池,所述虚拟机实例池上加载有一个或多个软件组件(例如,操作系统、语言运行时、库等)。维持虚拟机实例池可能涉及:创建新实例;从外部实例配置服务获取新实例;破坏实例;分配/重新分配实例给用户;修改实例(例如,容器或其中的资源)等。池中的虚拟机实例可以被指定用于服务于用户请求以执行程序代码。在本公开中,短语“程序代码”、“用户代码”和“云功能”有时可以互换使用。程序代码可在虚拟机实例上创建的隔离容器中执行。由于池中的虚拟机实例已经被启动并且在接收到请求时加载有特定的操作系统和语言运行时,所以与发现可处理请求(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)的计算能力相关联的延迟显著减少。
在另一方面中,虚拟计算系统可以监视和记录与分配的用于执行用户代码的资源量有关的信息。通过这样做,虚拟计算系统可以通过调整分配的资源量来识别提高用户代码执行性能的机会。可以通过增加过度利用情况下的分配的资源量来降低错误率,并且可以通过减少利用不足情况下的分配的资源量来降低与执行用户代码相关联的成本。
现在将参考附图描述本公开的特定实施方案和示例性应用。这些实施方案和示例性应用意欲例示而不是限制本公开。
参考图1,将描述图示虚拟环境100的实施方案的框图。图1所示的例子包括虚拟环境100,其中用户计算装置102的用户(例如,开发者等)可使用由虚拟计算系统110提供的虚拟计算资源运行各种程序代码。
举例来说,各种示例性用户计算装置102被示出与虚拟计算系统110通信,包括台式计算机、笔记本电脑和手机。一般来说,用户计算装置102可为诸如台式机、膝上型计算机、移动电话(或智能电话)、平板电脑、公用电话亭、无线装置和其他电子装置的任何计算装置。此外,用户计算装置102可包括在同一个或不同的数据中心上运行的web服务,其中例如不同的web服务可以编程方式彼此通信,以执行本文描述的一种或多种技术。此外,用户计算装置102可包括物联网(IoT)装置,诸如互联网设施和连接的装置。虚拟计算系统110可向用户计算装置102提供一个或多个用户接口、命令行接口(CLI)、应用编程接口(API)和/或其他程序设计接口以便于生成和上传用户代码、调用用户代码(例如,提交在虚拟计算系统110上执行用户代码的请求)、调度基于事件的作业或基于时间的作业、追踪用户代码、和/或查看与它们的请求和/或用户代码有关的其他记录或监视信息。尽管一个或多个实施方案在本文中可被描述为使用用户接口,但应了解此类实施方案可另外地或可替代地使用任何CLI、API或其他程序设计接口。
用户计算装置102通过网络104访问虚拟计算系统110。网络104可以是任何有线网络、无线网络或其组合。此外,网络104可为个人局域网、局域网、广域网、空中广播网络(例如,用于无线电或电视)、电缆网络、卫星网络、蜂窝电话网络或其组合。例如,网络104可为可能由各个不同方诸如互联网操作的链接网络的公共可访问网络。在一些实施方案中,网络104可为专用或半专用网络,诸如公司或大学内联网。网络104可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或者任何其他类型的无线网络。网络104可以使用协议和组件以便经由互联网或其他前面提及的类型的网络中的任何一个进行通信。例如,由网络104使用的协议可包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、消息队列遥测传输(MQTT)、约束应用协议(CoAP)等。用于通过互联网或任何其他前述类型的通信网络进行通信的协议和组件对于本领域技术人员来说是众所周知的,并且因此不在本文中更详细地进行描述。
虚拟计算系统110在图1中被描绘成在包括几个计算机系统的分布式计算环境中操作,所述几个计算机系统使用一个或多个计算机网络互连。虚拟计算系统110还可在具有比图1所示的更少或更多数量的装置的计算环境内操作。因此,图1中对虚拟计算系统110的描绘应被视为是说明性的,而不是对本公开进行限制。例如,虚拟计算系统110或其各种组成可实现各种Web服务组件、已托管或“云”计算环境、和/或对等网络配置以便实现本文所描述的进程的至少一部分。
另外,虚拟计算系统110可以在硬件和/或软件中实现,并且可例如包括在物理计算机硬件上实现的一个或多个物理或虚拟服务器,所述物理计算机硬件被配置以执行计算机可执行指令以用于执行本文将描述的各种特征。一个或多个服务器可在地理上分散或者在地理上共同位于例如一个或多个数据中心中。
在图1所示的环境中,虚拟环境100包括虚拟计算系统110,该虚拟计算系统包括前端120、预热池管理器130、工作者管理器140和安全管理器150。在描绘的例子中,虚拟机实例(“实例”)152、154被示出在由预热池管理器130管理的预热池130A中,且实例156、157、158、159被示出在由工作者管理器140管理的活性池140A中。虚拟计算系统110内的各个组件的图示在本质上是逻辑的,并且组件中的一个或多个可由单个计算装置或多个计算装置实现。例如,实例152、154、156、157、158、159可以在位于各种不同的地理区域中的一个或多个物理计算装置上实现。类似地,前端120、预热池管理器130、工作者管理器140和安全管理器150中的每一个可以跨多个物理计算装置实现。另选地,前端120、预热池管理器130、工作者管理器140和安全管理器150中的一个或多个可以在单个物理计算装置上实现。在一些实施方案中,虚拟计算系统110可包括多个前端、多个预热池管理器、多个工作者管理器和/或多个能力管理器。虽然图1的例子中示出六个虚拟机实例,但是本文所描述的实施方案并不受如此限制,并且本领域技术人员将了解,虚拟计算系统110可包括使用任何数量的物理计算装置实现的任何数量的虚拟机实例。类似地,尽管图1的例子中示出单个预热池和单个活性池,但本文所描述的实施方案并未被如此限制,并且本领域的技术人员将了解虚拟计算系统110可包括任何数目的预热池和活性池。
在图1的例子中,虚拟计算系统110被图示成连接至网络104。在一些实施方案中,虚拟计算系统110内的任何组件可通过网络104与虚拟环境100的其他组件(例如,用户计算装置102和辅助服务106,所述辅助服务106可包括监视/记录/记账服务107、存储服务108、实例供应服务109和/或可与虚拟计算系统110通信的其他服务)通信。在其它实施方案中,并不是虚拟计算系统110的所有组件都能够与虚拟环境100的其它组件通信。在一个例子中,只有前端120可连接到网络104,并且虚拟计算系统110的其他组件可通过前端120与虚拟环境100的其他组件通信。
用户可以使用虚拟计算系统110执行其上面的用户代码。例如,用户可能希望结合用户已经开发的web或移动应用程序来运行一段代码。一种运行代码的方法将是从提供基础设施作为服务的服务提供商获取虚拟机实例,配置所述虚拟机实例以适合用户的需求,以及使用所述配置的虚拟机实例以运行所述代码。可选地,用户可以发送代码执行请求至虚拟计算系统110。虚拟计算系统110可以基于代码执行请求处理计算能力(例如,容器、实例等,其在下面更加详细地描述)的获取和配置,并使用所述计算能力执行代码。虚拟计算系统110可基于容积自动放大和缩小,从而减轻用户负担使其不必担心过度利用(例如,获取太少的计算资源和遭受性能问题)或利用不足(例如,获得比运行代码所需的更多的计算资源,并且因此多付)。
前端120处理在虚拟计算系统110上执行用户代码的所有请求。在一个实施方案中,前端120用作由虚拟计算系统110提供的所有其他服务的前门。前端120处理请求,并确保所述请求被适当地授权。例如,前端120可确定与请求相关联的用户是否被授权访问在请求中指定的用户代码。
如本文中所使用的用户代码可能指代以特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可互换使用。可以例如结合由用户开发的特定web应用或移动应用执行所述用户代码以完成特定任务。例如,用户代码可以JavaScript(node.js)、Java、Python和/或Ruby编写。请求可包括用户代码(或其位置)以及要用于执行所述用户代码的一个或多个自变量。例如,用户可以提供用户代码以及执行所述用户代码的请求。在另一个实例中,请求可通过其名称或其唯一ID识别先前上传的程序代码(例如,使用API以上传代码)。在又一例子中,代码可被包括在请求中,并且在由虚拟计算系统110接收到请求之前被上传到单独的位置(例如,存储服务108或虚拟计算系统110内部的存储系统)。虚拟计算系统110可以基于处理请求时代码位于何处来改变其代码执行策略。
前端120可以响应于来自用户的安全超文本传送协议(HTTPS)请求来接收执行所述用户代码的请求。而且,当执行用户代码时也可以处理和利用包括在HTTPS请求中的任何信息(例如,标头和参数)。如上所述,可使用任何其他协议(包括例如HTTP、MQTT和CoAP)来将包含代码执行请求的消息传送到前端120。前端120还可在检测到事件(诸如用户已经注册以触发自动请求生成的事件)时接收执行这类用户代码的请求。例如,用户可能已经使用辅助服务106登记用户代码并且规定无论何时发生特定事件(例如,上传新文件),都要将执行用户代码的请求发送到前端120。可替代地,用户可能已注册定时作业(例如,每24小时执行用户代码)。在这种例子中,当定时作业的预定时间达到时,执行用户代码的请求可被发送到前端120。在又一例子中,前端120可具有传入代码执行请求的队列,并且当用户的批作业从虚拟计算系统的工作队列中移除时,前端120可处理用户请求。在又一个例子中,请求可源自虚拟计算系统110内的另一个组件或者图1未示出的其他服务器或服务。
用户请求可以指定要与用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,用户请求是包含用户代码和任何库(和/或其存储位置的标识)的ZIP文件。在一些实施方案中,用户请求包括指示以下信息的元数据:要执行的程序代码,编写程序代码的语言,与请求相关联的用户,和/或专供执行程序代码之用的计算资源(例如,存储器、CPU、存储装置、网络包等)。例如,程序代码可能设有先前由用户上传的、由虚拟计算系统110(例如,标准例程)提供和/或由第三方提供的请求。在一些实施方案中,资源级约束(例如,要分配多少存储器用于执行特定用户代码)被指定用于特定用户代码,并且在用户代码的每一次执行过程中可能不会改变。在所述情况下,虚拟计算系统110可以在接收到每一个别请求之前访问所述资源级约束,并且所述个别请求可能不会指定所述资源级约束。在一些实施方案中,资源级约束随着时间推移进行调整,并且在单个程序代码的不同执行过程中可能会变化。例如,可以使用相同的程序代码来处理两组不同的数据,其中一组数据比另一组数据需要更多的资源。在此种情况下,用户可以为两个不同的执行指定不同的资源约束,或者虚拟计算系统110可以基于空间(例如,在虚拟计算系统110的其它部分中)或历史(例如,随时间推移的)趋势为用户和/或程序代码自动地调整分配至程序代码的每一执行的资源量。在一些实施方案中,用户请求可指定其他约束,诸如指示请求不得不执行用户代码的许可种类的许可数据。此类许可数据可由虚拟计算系统110使用来访问专用资源(例如,专用网络上)。
在一些实施方案中,用户请求可以指定应被采用以便处理用户请求的行为。在此类实施方案中,用户请求可包括用于实现一个或多个执行模式的指示符,其中要执行与用户请求相关联的用户代码。例如,请求可包括用于指示是否应在调试模式中执行用户代码的标志或标头,其中可结合用户代码的执行生成的调试和/或日志输出被往回提供给用户(例如,经由控制台用户接口)。在这种实例中,虚拟计算系统110可检查请求并寻找标志或标头,并且如果标志或标头存在,那么虚拟计算系统110可修改在其中执行用户代码的容器的行为(例如,记录功能),并且致使输出数据被提供回给用户。在一些实施方案中,通过由虚拟计算系统110提供给用户的用户接口将行为/模式指示符添加到请求。还可基于请求中提供的指示来启用或禁用其他特征,诸如源代码分析、远程调试等。
在一些实施方案中,虚拟计算系统110可以包括多个前端120。在此类实施方案中,可以提供负载平衡器以例如以循环方式将传入请求分配给多个前端120。在一些实施方案中,负载平衡器将传入请求分配给多个前端120的方式可以基于预热池130A和/或活性池140A的状态。例如,如果认为预热池130A的容量足够,那么请求可基于前端120的单独容量(例如,基于一个或多个负载平衡限制)被分配给多个前端120。另一方面,如果预热池130A中的容量小于阈值量,那么可以移除所述负载平衡限制中的一个或多个,以使得请求可以将从预热池130A取得的虚拟机实例的数量减少或最小化的方式分配给多个前端120。例如,即便,根据负载平衡限制,请求将被发送到前端A,如果前端A需要从预热池130A中取出实例以用来服务请求但前端B可使用其活性池中的实例中的一个来服务相同请求,那么所述请求可被发送到前端B。
预热池管理器130确保当虚拟计算系统110接收到在虚拟计算系统110上执行用户代码的请求时,虚拟机实例准备由工作者管理器140使用。在图1所示的实例中,预热池管理器130管理预热池130A,所述预热池130A是可用于服务进入的用户代码执行请求的预初始化和预配置的虚拟机实例的组(有时称为池)。在一些实施方案中,预热池管理器130致使虚拟机实例在虚拟机算系统110内的一个或多个物理计算机器上启动并且被添加到预热池130A。在其他实施方案中,预热池管理器130与辅助虚拟机实例服务(例如,图1的实例供应服务109)通信,以创建和添加新的实例至预热池130A。在一些实施方案中,预热池管理器130可利用虚拟计算系统110内的物理计算装置以及一个或多个虚拟机实例服务两者来获取并维持可用来服务由前端120接收的代码执行请求的计算能力。在一些实施方案中,虚拟计算系统110可包括用于控制(例如,增大或减小)预热池130A中的可用容量的一个或多个逻辑旋钮或开关。例如,系统管理员可使用这种旋钮或开关来在高峰时间过程中增大预热池130A中的可用容量(例如,预启动实例的数目)。在一些实施方案中,预热池130A中的虚拟机实例可基于预定的配置集合独立于执行用户的代码的特定用户请求来配置。所述预定的配置集合可对应于执行用户代码的各种类型的虚拟机实例。预热池管理器130可以基于与当前或先前用户代码执行有关的一个或多个度量优化预热池130A中的虚拟机实例的类型和数量。
如图1中所示,实例上可能加载有操作系统(OS)和/或语言运行时。例如,由预热池管理器130管理的预热池130A包括实例152、154。实例152包括OS 152A和运行时152B。实例154包括OS 154A。在一些实施方案中,预热池130A中的实例还可包括容器(所述容器还可包含操作系统、运行时、用户代码等的副本),将在下文更详细地描述。尽管实例152在图1中被示为包括单个运行时,但是在其他实施方案中,图1中描绘的实例可包括两个或更多个运行时,每个运行时可用于运行不同的用户代码。在一些实施方案中,预热池管理器130可以在预热池130A中维持实例列表。实例列表还可指定实例的配置(例如,OS、运行时、容器等)。
在一些实施方案中,预热池130A中的虚拟机实例可以用于服务任何用户的请求。在一个实施方案中,预热池130A中的所有虚拟机实例以相同或基本类似的方式配置。在另一个实施方案中,预热池130A中的虚拟机实例可以不同方式被配置为符合不同用户的需求。例如,虚拟机实例可具有不同的操作系统、不同的语言运行时和/或其上加载的不同的库。在又一个实施方案中,预热池130A中的虚拟机实例可以(例如,与相同的OS、语言运行时和/或库)相同或基本类似的方式配置,但是那些实例中的一些可具有不同的容器配置。例如,两个实例可能具有用于Python和Ruby二者的运行时,但是一个实例可能具有被配置以运行Python代码的容器,且另一个实例可能具有被配置以运行Ruby代码的容器。在一些实施方案中,提供多个预热池130A,每一预热池具有被相同地配置的虚拟机实例。
预热池管理器130可以预配置预热池130A中的虚拟机实例,以使得每一虚拟机实例被配置以满足可以请求的或由用于在虚拟计算系统110上执行程序代码的用户请求所指定的操作条件中的至少一个。在一个实施方案中,操作条件可包括其中可写入潜在用户代码的程序语言。例如,此类语言可包括Java、JavaScript、Python、Ruby等。在一些实施方案中,用户代码可以其书写的语言集合可局限于预定集合(例如,4种语言的集合,尽管在一些实施方案中提供多于或少于四种语言的集合)以便促进可满足执行用户代码的请求的虚拟机实例的预初始化。例如,当用户正经由虚拟计算系统110所提供的用户接口来配置请求时,所述用户接口可提示用户指定预定操作条件中的一个以执行用户代码。在另一个例子中,用于利用虚拟计算系统110所提供的服务的服务水平协定(SLA)可指定用户请求应满足的条件集合(例如,编程语言、计算资源等),并且虚拟计算系统110在处理请求时可假设所述请求满足所述条件集合。在另一个例子中,请求中所指定的操作条件可包括:要用于处理请求的计算能力的量;请求的类型(例如,HTTP对比触发事件);请求的超时(例如,请求在其后可终止的阈值时间);安全策略(例如,可控制预热池130A中的哪些实例可由哪个用户使用);等等。
工作者管理器140管理用于服务于传入代码执行请求的实例。在图1所示的例子中,工作者管理器140管理活性池140A,所述活性池140A是当前分配给一名或多名用户的虚拟机实例的组(有时称为池)。尽管虚拟机实例在本文中被描述为分配给特定用户,但在一些实施方案中,实例可被分配给用户群,使得实例与所述用户群绑定并且所述群中的任何成员可利用实例上的资源。例如,相同群中的用户可属于相同的安全群(例如,基于它们的安全凭证),使得在特定实例上的一个容器中执行一个成员的代码之后在相同实例上的另一个容器中执行另一个成员的代码不会造成安全风险。类似地,工作者管理器140可根据指定哪些请求可在哪些容器中执行以及哪些实例可被分配给哪些用户的一个或多个策略来分配实例和容器。示例性策略可指定实例被分配给共享相同账户(例如,用于访问由虚拟计算系统110提供的服务的账户)的用户集合。在一些实施方案中,与相同用户群相关联的请求可共享相同的容器(例如,如果与其相关联的用户代码相同)。在一些实施方案中,请求不区分群组的不同用户,并且简单地指示与所述请求相关联的用户所属的群组。
在图1所示的例子中,用户代码在被称作容器的隔离的计算系统中执行。容器是在虚拟机实例内使用所述实例上可用的资源创建的逻辑单元。例如,工作者管理器140可以基于执行用户代码的请求中指定的信息来创建新的容器或将现有容器定位在活性池140A中的实例中的一个中,并将所述容器分配给所述请求以处理与所述请求相关联的用户代码的执行。在一个实施方案中,所述容器被实现为Linux容器。活性池140A中的虚拟机实例上可能创建有一个或多个容器,并且上面加载有与用户相关联的一个或多个程序代码(例如,在容器中的一个中,或在实例的本地缓存中)。
如图1中所示,实例可能具有操作系统(OS)、语言运行时和容器。容器可具有OS和语言运行时以及其上加载的用户代码的单独副本。在图1的例子中,由工作者管理器140管理的活性池140A包括实例156、157、158、159。实例156具有容器156A、156B。容器156A中加载有OS 156A-1、运行时156A-2和代码156A-3。在描绘的例子中,容器156A中加载有其自身的OS、运行时和代码。在一个实施方案中,OS 156A-1(例如,其内核)、运行时156A-2和/或代码156A-3在容器156A、156B(以及图1中未图示的任何其它容器)之间共享。在另一实施方案中,OS 156A-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中描绘的容器的大小可能与容器的实际大小成比例。例如,容器156A在实例156上占用的空间比容器156B占用的空间更大。类似地,容器157A、157B、157C、159A可以是相等大小的,且容器158A可以比容器157A、157B、157C、159A更大(例如,分配有更多的计算资源)。实例159中示出的被标记为“C”的虚线框指示实例上剩余的可以用于创建新实例的空间。在一些实施方案中,容器的大小可以是64MB或其任何倍数。在其他实施方案中,容器的大小可以是小于或等于容器创建在其中的实例的大小的任何任意大小。在一些实施方案中,容器的大小可以是小于、等于或大于容器创建在其中的实例的大小的任何任意大小。容器的大小可超过实例的大小多少可基于可利用那些容器超出实例提供的容量的可能性来确定。例如,具有1GB的存储器大小的五个容器(总计5GB)可以创建在具有4GB的存储器大小的实例中。如果容器中的每一个未达到1GB的全容量,那么所述容器可以正常工作,但是存在过度订阅。
虽然图1的例子中未示出容器156B、157A、157B、157C、158A、159A内的组件,但是这些容器中的每一个可能具有各种操作系统、语言运行时、库和/或用户代码。在一些实施方案中,实例上可能加载有用户代码(例如,在实例级缓存中),并且这些实例内的容器中可能还加载有用户代码。在一些实施方案中,工作者管理器140可维持活性池140A中的实例列表。实例列表还可指定实例的配置(例如,OS、运行时、容器等)。在一些实施方案中,工作者管理器140可能够访问预热池130A中的实例列表(例如,包括实例的数目和类型)。在其他实施方案中,工作者管理器140从预热池管理器130请求计算能力而无需了解预热池130A中的虚拟机实例。
在前端120已经成功地处理请求之后,工作者管理器140找出服务于在虚拟计算系统110上执行用户代码的请求的能力。例如,如果活性池140A中存在具有含加载在其中的相同用户代码(例如,容器156A所示的代码156A-3)的容器的特定虚拟机实例,那么工作者管理器140可将容器分配给请求并且致使所述用户代码在容器中执行。可选地,如果用户代码在虚拟机实例中的一个的本地缓存中可用(例如,存储在实例158上,但是不属于任何个别容器),那么工作者管理器140可以在此种实例上创建新的容器,将所述容器分配给请求,并致使所述用户代码在容器中加载和执行。
如果工作者管理器140确定在活性池140A中的实例的任何一个(例如,容器中或实例的本地缓存中)上未找到与请求相关联的用户代码,那么工作者管理器140可以确定活性池140A中的实例的任何一个是否当前被分配给与请求相关联的用户以及是否具有用于处理当前请求的计算能力。如果存在这种实例,那么工作者管理器140可在实例上创建新的容器并且将所述容器分配给请求。可替代地,工作者管理器140还可配置分配给用户的实例上的现有容器,并将容器分配给请求。例如,工作者管理器140可以确定如果加载了当前用户请求所要求的特定库,那么所述现有容器可以用于执行用户代码。在这种情况下,工作者管理器140可将特定库和用户代码加载到容器上,并使用容器来执行用户代码。
如果活性池140A不包含当前分配给用户的任何实例,那么工作者管理器140从预热池130A拉出新的虚拟机实例,将所述实例分配给与请求相关联的用户,在实例上创建新的容器,将所述容器分配给请求,以及致使所述用户代码在容器上下载和执行。
在一些实施方案中,虚拟计算系统110被适配成在用户代码被接收(例如,被前端120接收)之后马上开始执行用户代码。可根据启动(例如,与用户相关联的虚拟机实例上的容器中的)用户代码的执行与接收执行所述用户代码的请求(例如,由前端接收)之间的时间差来确定时间段。虚拟计算系统110被适配来在小于预定持续时间的时间段内开始执行用户代码。在一个实施方案中,预定持续时间是500ms。在另一个实施方案中,预定持续时间是300ms。在另一个实施方案中,预定持续时间是100ms。在另一个实施方案中,预定持续时间是50ms。在另一个实施方案中,预定持续时间是10ms。在另一个实施方案中,预定持续时间可以是选自10ms至500ms的范围内的任何值。在一些实施方案中,虚拟计算系统110被适配来如果满足一个或多个条件那么在小于预定持续时间的时间段内开始执行用户代码。例如,一个或多个条件可包括以下中的任一个:(1)在接收到请求时用户代码被加载在活性池140A中的容器上;(2)在接收到请求时用户代码被存储在活性池140A中的实例的代码缓存中;(3)在接收到请求时活性池140A包含分配给与所述请求相关联的用户的实例;或者(4)在接收到请求时预热池130A具有处理请求的能力。
用户代码可以从辅助服务106诸如图1的存储服务108下载。图1所示的数据108A可包括由一个或多个用户上传的用户代码、与这类用户代码相关联的元数据或者由虚拟计算系统110用来执行本文描述的一种或多种技术的任何其他数据。尽管在图1的例子中仅示出存储服务108,但是虚拟环境100可包括可从其下载用户代码的其他级别的存储系统。例如,每个实例可具有与在其上创建容器的实例物理地(例如,驻留在正在其上运行实例的物理计算系统上的本地存储装置)或逻辑地(例如,与实例进行网络通信并且设置在虚拟计算系统110内或外部的网络附接存储系统)相关联的一个或多个存储系统。可替代地,代码可从存储服务108提供的基于web的数据存储中下载。
一旦工作者管理器140将虚拟机实例中的一个定位在可以用于服务于用户代码执行请求的预热池130A中,预热池管理器130或工作者管理器140就从预热池130A取出实例,并将其分配给与请求相关联的用户。所分配的虚拟机实例被从预热池130A取出并且放置在活性池140A中。在一些实施方案中,一旦虚拟机实例已分配给特定用户,那么同一个虚拟机实例无法用于服务任何其他用户的请求。这通过防止用户资源的可能的混合存放来向用户提供安全益处。可替代地,在一些实施方案中,属于不同用户(或分配给与不同用户相关联的请求)的多个容器可共存于单个虚拟机实例上。此种方法可以提高可用计算能力的利用率。在一些实施方案中,虚拟计算系统110可以维持单独的缓存,所述缓存中存储有用户代码以充当虚拟机实例的本地缓存与基于web的网络存储装置(例如,经由网络104可访问)之间的中间级缓存系统。
在已经执行用户代码之后,工作者管理器140可以断开用于执行用户代码的容器以释放其占用的资源,以便用于实例中的其它容器。或者,工作者管理器140可保持容器运行以便使用其来服务来自相同用户的附加请求。例如,如果另一请求与已经在容器中加载的相同用户代码相关联,那么所述请求可以被分配给相同的容器,由此消除与创建新的容器和在容器中加载用户代码相关联的延迟。在一些实施方案中,工作者管理器140可以断开创建有用于执行用户代码的容器的实例。可选地,工作者管理器140可以保持实例运行,以将其用于服务于来自同一用户的额外请求。对于完成执行用户代码之后是否保持容器和/或实例运行的确定可能基于阈值时间、用户的类型、用户的平均请求量和/或其它操作条件。例如,在已经过了阈值时间(例如,5分钟、30分钟、1小时、24小时、30天等)而无任何活动(例如,代码的运行)之后,容器和/或虚拟机实例被关闭(例如,删除、终止等),且分配给所述容器和/或虚拟机实例的资源被释放。在一些实施方案中,在容器被拆卸之前经过的阈值时间小于在实例被拆卸之前经过的阈值时间。
在一些实施方案中,虚拟计算系统110可以当它服务于传入代码执行请求时提供数据给辅助服务106中的一个或多个。例如,虚拟计算系统110可与监视/记录/记账服务107通信。监视/记录/记账服务107可包括:监视服务,其用于管理从虚拟计算系统110接收的监视信息,诸如虚拟计算系统110上的容器和实例的状态;记录服务,其用于管理从虚拟计算系统110接收的记录信息,诸如由虚拟计算系统110上的容器和实例执行的活动;以及记账服务,其用于(例如基于由监视服务和记录服务管理的监视信息和/或记录信息)生成与在虚拟计算系统110上执行用户代码相关联的记账信息。除了可由如上所述的监视/记录/记账服务107(例如,代表虚拟计算系统110)执行的系统级活动之外,监视/记录/记账服务107可提供代表在虚拟计算系统110上执行的用户代码的应用级服务。例如,监视/记录/记账服务107可代表在虚拟计算系统110上执行的用户代码来监视和/或记录各种输入、输出或其他数据和参数。尽管被示出为单个模块,但是监视、记录和记账服务107可被提供为单独的服务。监视/记录/记账服务107可以与安全管理器150通信以允许安全管理器150确定适当的安全机制和策略以用于执行虚拟计算机系统110上的各种程序代码。
在一些实施方案中,工作者管理器140可以在由工作者管理器140管理的实例和容器(例如,活性池140A中的那些)上执行健康检查。例如,由工作者管理器140执行的健康检查可包括确定由工作者管理器140管理的实例和容器是否具有任何以下问题:(1)错误配置的网络和/或启动配置、(2)耗尽的存储器、(3)损坏的文件系统、(4)不兼容的内核和/或可能损害实例和容器的性能的任何其他问题。在一个实施方案中,工作者管理器140定期(例如每5分钟、每30分钟、每小时、每24小时等)执行健康检查。在一些实施方案中,健康检查的频率可基于健康检查的结果来自动调整。在其他实施方案中,健康检查的频率可基于用户请求来调整。在一些实施方案中,工作者管理器140可以在预热池130A中的实例和/或容器上执行类似健康检查。预热池130A中的实例和/或容器可以与活性池140A中的那些实例和容器一起管理或分开管理。在一些实施方案中,在预热池130A中的实例和/或容器的健康与活性池140A分开管理的情况下,预热池管理器130而不是工作者管理器140可以在预热池130A中的实例和/或容器上执行如上所述的健康检查。
安全管理器150管理针对在虚拟计算系统110上执行用户代码的传入请求所执行的程序代码的安全性。例如,安全管理器150可以与前端120、预热池管理器130、工作者管理器140和/或辅助服务106通信,以配置、监视和管理用于在虚拟计算系统110上执行的各种程序代码的安全设置。虽然安全管理器150被示为虚拟计算系统110内的不同组件,但安全管理器150的部分或全部功能可由前端120、预热池管理器130、工作者管理器140和/或辅助服务106执行。例如,安全管理器150可以完全在虚拟计算系统110的其他组件中的一个组件内,或以分布式方式跨虚拟计算系统110的其他组件来实现。在图1的例子中,安全管理器150包括安全管理数据150A。安全管理数据150A可以包括包含由用户指定或由安全管理器150确定的用于管理虚拟计算系统110上的程序代码的安全性的任何安全策略的数据,这在下文更详细地描述。
如上所述,请求本身可以指定安全策略,包括要用于执行与请求相关联的程序代码的安全设置和参数。例如,虚拟计算系统110的某些用户可以得到信任,并且因此虚拟计算系统110可以为这样的用户提供定制与其程序代码中的功能相关联的安全设置的能力,以实现在不太严格的安全要求下执行程序代码的灵活性。请求还可以指定可用于使得程序代码能够在由虚拟计算系统110执行期间与辅助服务通信的配置数据。例如,虚拟计算系统110的某些用户可能希望在虚拟计算系统110上执行某些程序代码,该程序代码仍然能够以安全的方式与用户的虚拟专用云或其他基于网络的服务进行通信。请求还可以指定要与程序代码或其一部分相关联使用的一个或多个可信凭证。例如,某些程序代码可以包括在执行期间需要使用可信凭证(例如,与用户相关联的安全登录)的“可信”部分,如果这样的可信部分受到危害,则安全风险可能增大。程序代码还可以包括可能不需要使用可信凭证的涉及不同信任级别的其他部分(例如,代码可能涉及可能不需要调用任何特定凭证的标准文件转换过程)。因此,可以将程序代码使用多个容器分解成具有第一信任级别的第一部分和具有第二信任级别的第二部分,该多个容器具有与其每一个相关联的不同的安全级别。在已经处理了这种请求并且已将虚拟机实例分配给与请求相关联的用户之后,安全管理器150可以根据安全策略、配置数据和/或可信凭证信息来配置虚拟机实例以能够在虚拟机实例上以安全或可信的方式执行程序代码。在一些实施方案中,可信凭证可以由虚拟计算系统110或其子系统之一管理和/或维护,而在其他实施方案中,可信凭证可以由第一或第三方凭证管理系统管理和/或维护并根据具体情况提供给虚拟计算系统110。
在一些实施方案中,安全管理器150可以不是创建新容器并将指定的资源量分配给容器,而是定位具有指定安全设置的现有容器并致使在现有容器中执行程序代码。
创建或定位容器后,在容器中执行与容器相关联的程序代码。可以记录(例如,由监视/记录/记账服务107和/或安全管理器150)分配给容器的资源量(例如,由用户请求)和/或程序代码实际使用的资源量以进一步分析。例如,所记录的信息可以包括存储器的量、CPU周期的数量、网络数据包的数量以及在容器中的程序代码的一个或多个执行期间程序实际使用的存储量。此外,所记录的信息可以包括在执行程序代码期间执行的任何与安全相关的活动(例如,所进行的入站或出站网络连接、所接触的辅助服务、被利用的可信凭证等)、资源利用率、误差率、延时以及程序代码执行期间遇到的任何误差或异常。在一些实施方案中,使用特殊标志来标记看起来可疑的任何安全数据(例如,未经授权的网络连接、与辅助服务的未经授权的交互、可信凭证的可能受损等)并由安全管理器150进一步分析。
在一些实施方案中,安全管理器150可以创建或访问多类用户,并且为不同类别的用户应用不同的规则。例如,对于更复杂的用户,可以给出更多的控制(例如,对个别安全参数的控制),而对于其他用户,可以允许他们仅控制单个代表参数,并且可以基于代表参数来调整其他参数。
在一些实施方案中,安全管理器150可以基于由监视/记录/记账服务107和/或安全管理器150记录的信息向用户提供关于用户为了提高程序代码的安全性或降低与在虚拟计算系统110上执行程序代码相关联的风险需要采取的措施的一些指导。例如,安全管理器150可以在看到重复发生的潜在或明显的安全漏洞之后向用户提供用户似乎一直在设置对于运行特定用户代码来说过高的安全参数这一指示。例如,安全参数可能基于多个因素引起更高的安全风险。一般来说,指示可以针对各种安全参数建议不同的设置、配置或分类。在一些实施方案中,在安全性管理器150处理了阈值数量的安全问题、误差、异常或其他告警状况(例如,延时增加、访问未经授权等)之后,向用户提供这一指示。安全管理器150可以通过包括电子邮件、简单通知服务(“SNS”)、短消息服务(“SMS”)等的任何通知机制来提供指示。
在一些实施方案中,安全管理器150可以利用代码特定的特征来改进用于执行各个程序代码的安全参数。例如,处理图像处理的程序代码可能不需要可信凭证,而处理数据库的程序代码可能需要可信凭证才能授予访问或更新数据库的权限。这样的代码特定的特征可以由安全管理器150维护,并且可以相应地调整各个程序代码的安全策略。
本文所述的安全机制可以以任何组合使用。例如,在一个实施方案中,用户可以指定程序代码的配置数据以便与辅助服务通信。这样的通信可以涉及可信凭证的使用(例如,以便登录到与用户相关联的辅助服务的账户)。因此,用户可能还希望具有由两个或多个容器执行的程序代码(例如,至少具有第一信任级别的至少一个容器,其执行涉及使用可信凭证与辅助服务通信的任何程序代码,以及具有第二信任级别的另一个容器,其执行其他程序代码,而不涉及与辅助服务的通信)。在另一个实施方案中,用户可以提供与还涉及与辅助服务进行通信的程序代码相关联的安全策略。用户可能希望指定与程序代码如何执行并与辅助服务如何交互相关联的安全参数。在另一个实施方案中,用户可以提供与程序代码相关联的安全策略,该程序代码还涉及使用多个容器(例如,具有不同信任级别的容器)执行程序代码。因此,用户可能希望使得多个容器能够在执行期间彼此通信并且通过安全策略和参数指定方式。
图2描绘了管理虚拟计算机系统110中的虚拟机实例的计算系统(表示为安全管理器150)的一般架构。图2所描绘的安全管理器150的一般架构包括可以用于实现本公开各方面的计算机硬件和软件模块的布置方式。安全管理器150可以包括比图2所示多得多(更少)的元件。然而,为了提供令人能够实现的公开,没有必要示出所有这些总体常规的元件。如图所示,安全管理器150包括处理单元190、网络接口192、计算机可读介质驱动器194、输入/输出装置接口196,所有这些都可以通过通信总线相互通信。网络接口192可提供到一个或多个网络或计算系统的连接性。处理单元190因此可以经由网络104从其它计算系统或服务接收信息和指令。处理单元190还可以向存储器180传达和从中传达,并且还可以经由输入/输出装置接口196提供用于任选显示器(未图示)的输出信息。输入/输出装置接口196还可接受来自可选输入装置(未示出)的输入。
存储器180可包含处理单元190可执行以便实现本公开的一个或多个方面的计算机程序指令(在一些实施方案中被分组为模块)。存储器180通常包括RAM、ROM和/或其他持久、辅助或非暂时性计算机可读介质。存储器180可以存储操作系统184,该操作系统提供计算机程序指令以供处理单元190在安全管理器150的一般管理和操作中使用。存储器180还可包括计算机程序指令和用于实现本公开的方面的其它信息。例如,在一个实施方案中,存储器180包括用户接口单元182,所述用户接口单元182生成用于例如通过导航和/或浏览接口(诸如安装在计算装置上的浏览器或应用程序)在计算装置上显示的用户接口(和/或其指令)。此外,存储器180可包括和/或与一个或多个数据储存库(未示出)通信,例如以访问用户程序代码和/或库。
除了用户接口单元182和/或与用户接口单元182结合地,存储器180可以包括程序代码安全策略单元186以及可由处理单元190执行的辅助服务和实例间接口单元188。在一个实施方案中,用户接口单元182、程序代码安全策略单元186以及辅助服务和实例间接口单元188单独地或共同地实现本公开的各个方面,例如监视和记录虚拟计算系统110上的程序代码的执行、确定为特定实例辅助服务调整安全设置的需要,如下文进一步描述的。
程序代码安全策略单元186监视虚拟计算系统110上的用户代码的执行,并根据用于执行用户代码的安全策略和安全机制提供容器。如本文所述,安全策略可以是用户指定的,并且在虚拟计算系统110接收到请求时提供,或者在执行程序代码之前的时间,例如当用户注册用于由虚拟计算系统110执行的程序代码时。安全策略信息可以存储在安全管理数据150A处,例如以便于更快地访问和处理需要应用特定安全策略的请求。安全策略信息还可以与诸如存储服务108的程序代码一起存储,并且在访问程序代码以被加载到容器上时被访问。
辅助服务和实例间接口单元188提供和管理与安全地允许容器与一个或多个辅助服务(例如,经由虚拟专用云(“VPC”)隧道或类似网络通信)或彼此之间的交互相关的能力(例如,通过进程间通信(“IPC”)隧道或类似的网络通信)。这种通信可能需要密切监视和活动记录,以便识别可能指示安全漏洞的可疑网络活动。如果识别出容器的可疑活动,则辅助服务和实例间接口单元188可以向工作者管理器140发送消息以关闭该容器以最小化任何另外的安全漏洞活动。辅助服务和实例间接口单元188还可以向用户发送特定程序代码可疑活动可能涉及的通知,并且建议用户可能需要改变安全策略、配置数据和/或与程序代码相关的可信凭证,以避免另外的安全漏洞。在一些情况下,辅助服务和实例间接口单元188可以在重复的安全漏洞(实际的或可疑的)之后,阻止程序代码在容器上被加载和执行,直到用户解决问题。
虽然在图2中示出了程序代码安全策略单元186以及辅助服务和实例间接口单元188作为安全管理器150的一部分,但在其他实施方案中,程序代码安全策略单元186以及辅助服务和实例间接口单元188的全部或一部分可以由虚拟计算系统110的其他组件和/或另一计算装置实现。例如,在本公开的某些实施方案中,与虚拟计算系统110通信的另一计算装置可以包括与作为安全管理器150的一部分示出的模块和组件类似地操作的多个模块或组件。
现在转向图3,描述了由虚拟计算系统110的一个或多个组件(例如,安全管理器150)实现的例程300。虽然相对于安全管理器150的实现描述了例程300,但本领域技术人员应当理解的是,替代组件可以实现例程300或者可由另一个部分或以分布式方式实现一个或多个块。
在说明性例程300的块302处,安全管理器150接收执行程序代码的请求。另选地,安全管理器150接收来自图1的工作者管理器140的请求以确定适用于执行与由前端120接收和处理的传入请求相关联的程序代码的安全设置。例如,前端120可处理从用户计算装置102或辅助服务106接收的请求,并且在认证用户并确定用户被授权访问指定的用户代码之后将所述请求转发给工作者管理器140。然后,工作者管理器140可以将该请求转发到安全管理器150。如上所述,请求可包括指示要执行的程序代码、写入程序代码的语言、与请求相关联的用户和/或专供执行程序代码之用的计算资源(例如,存储器等)的数据或元数据。该请求还可以包括指示用户指定的安全策略的数据或元数据。用户指定的安全策略可以指示要通过其执行程序代码的一个或多个安全参数。例如,安全参数可以包括以下各项中的一个或多个:处理持续时间限制、CPU利用率限制、磁盘空间或其他存储限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到容器的入站或出站网络连接的参数、用于使容器能够与辅助服务(例如虚拟专用云)通信的参数、用于使容器能够与包含在所选择的虚拟机实例上的第二容器通信的参数实例、用于使容器能够与包含在第二虚拟机实例上的第二容器进行通信的参数,以及允许容器与程序代码相关联地执行的访问受限功能的列表。
接下来,在块304处,安全管理器150基于执行程序代码的请求来确定用户指定的安全策略。例如,安全管理器150可以通过如上所述的请求来接收安全策略。在另一种情况下,安全管理器150可以例如从安全管理数据150A访问安全策略或从存储服务108加载访问安全策略。安全策略可以放宽或修改安全管理器150结合执行程序代码施加的一个或多个限制。例如,安全策略可以规定,可以允许加载在容器上且由容器执行的程序代码建立入站或出站网络连接,以便于执行其他程序代码,诸如在包含容器的虚拟机实例上的另一容器上的程序代码、在另一个虚拟机实例上的另一容器上的程序代码或辅助服务上的程序代码。安全策略还可指定是否允许结合执行程序代码使用本机代码库和其他代码。
在块306处,工作者管理器140至少部分地基于用户指定的安全策略,基于请求中指示的信息获取计算能力。例如,安全策略可以指定用于执行程序代码的用户优选持续时间,并且可以在该持续时间内获取计算能力。在另一个例子中,安全策略可以规定,允许程序代码进行出站TCP套接字连接,并且可以获取计算能力以允许出站TCP套接字连接。在一些实施方案中,计算能力包括被配置为服务代码执行请求的容器。如本文所讨论的,容器可从活性池140A或预热池130A获取。可以获取计算能力的一种方式可以相对于2014年9月30日提交的题为“LOW LATENCY COMPUTATIONAL CAPACITY PROVISIONING”的美国申请No.14/502,810的图4更详细地描述,其先前通过引用全文并入。可以基于安全策略来获取容器,使得工作者管理器140可以确定活性池140A或预热池130A中的容器是否可用以及是否被配置有与请求要执行的程序代码相关联的相同安全策略。如果类似配置的容器可用,或至少一个配置为与安全策略一致的方式,则可以获取该容器来服务该请求。
在块308处,安全管理器150或工作者管理器140致使使用计算能力并根据用户指定的安全策略来执行用户代码。例如,工作者管理器140可将分配给所述请求的容器的地址发送到前端120,以使得前端120可向所述地址代理代码执行请求。在一些实施方案中,地址可由工作者管理器140临时保留,并且地址和/或容器可在指定时间段过去之后自动释放。在一些实施方案中,地址和/或容器可在用户代码已在容器中完成执行之后自动地释放。
尽管以上参照块302-308描述了图3的例程300,但本文所述的实施方案不限于此,并且可以在不脱离本公开的精神的情况下省略、修改或切换一个或多个块。
现在转向图4,描述了由虚拟计算系统110的一个或多个组件(例如,安全管理器150)实现的例程400。虽然相对于安全管理器150的实现描述了例程400,但本领域技术人员应当理解的是,替代组件可以实现例程400或者可由另一个部分或以分布式方式实现一个或多个块。
在说明性例程400的块402处,虚拟计算系统110接收程序代码和用于与辅助服务交互的配置数据。例如,用户诸如程序代码的开发者可以提供相关联的配置数据,其指定程序代码在程序代码执行期间如何发起连接或以其他方式与辅助服务通信。配置数据可以包括例如与辅助服务上的账户相关联的网络地址和登录凭证,其中该账户与用虚拟计算系统注册该程序代码的用户相关联。因此,当虚拟计算系统执行程序代码时,可以使用网络地址和登录凭证来连接或“隧道”到辅助服务。作为示例,用户可能希望配置程序代码以隧穿到诸如虚拟专用云的辅助服务,以提供诸如通知、日志数据、状态报告等的数据。在另一个实施方案中,配置数据可以包括凭证和文件系统安装点。文件系统安装点可以例如指示或指定如何访问存储由虚拟计算系统110访问的多个程序代码的文件系统。
接下来,在块404处,工作者管理器140接收执行程序代码诸如先前由虚拟计算系统110如块402所述接收的程序代码的请求。例如,块404可以类似于图3的块302。请求可以包括或指定配置数据以使得程序代码能够与辅助服务交互,或者工作者管理器140和/或安全管理器150可以确定程序代码与配置数据相关联(例如,通过访问安全管理数据150A或数据108A以确定是否存在与程序代码相关联的任何配置数据)。
在块406处,工作者管理器150确定活性池130A中是否存在当前分配给与请求相关联的用户的、并且已被配置为启用、支持或允许与辅助服务交互的实例。例如,其中一个实例可能以前在其上创建的容器中执行了程序代码,并且容器可能已经被终止,但程序代码可能仍然保留在实例上(例如,在实例代码高速缓存中)。如果工作者管理器140确定存在这种情况,则例程400进行到下面描述的块412。另一方面,如果工作者管理器140确定不存在这种情况,则例程400进行到下面描述的块408。
在块408处,工作者管理器140从预热池130A或从预热池管理器130获得新的实例。在块410处,工作者管理器140将所获得的实例配置为与辅助服务交互。
一旦获得的实例已经在块410处被配置或者在块406处从活性池140A获取,则例程400进行到块412,在块412中,工作者管理器140致使使用新的或预配置的容器来处理请求。在创建新容器之前,工作者管理器140可以确定该实例是否具有足以处理该请求的资源。
尽管以上参照块402-412描述了图4的例程400,但本文所述的实施方案不限于此,并且可以在不脱离本公开的精神的情况下省略、修改或切换一个或多个块。
现在转向图5,描述了由虚拟计算系统110的一个或多个组件(例如,安全管理器150)实现的例程500。虽然相对于安全管理器150的实现描述了例程500,但本领域技术人员应当理解的是,替代组件可以实现例程500或者可由另一个部分或以分布式方式实现一个或多个块。
在说明性例程500的块502处,工作者管理器140接收执行程序代码的请求。例如,块502可以类似于图3的块302。该请求可以包括或指示由至少一些程序代码在执行期间要使用的可信凭证。在一个实施方案中,可信凭证可以先前由用户利用程序代码注册且例如从安全管理数据150A或数据108访问,以确定执行程序代码的请求是否涉及可信凭证的使用。与程序代码相关联的配置数据也可以被安全管理器150访问和使用,以确定是否要使用可信凭证来执行程序代码的部分和要使用可信凭证来执行程序代码的哪些部分。
在块504处,工作者管理器140确定在活性池130A中是否存在当前分配给与请求相关联的用户的实例且已加载有程序代码。例如,其中一个实例可能以前在其上创建的容器中执行了程序代码,并且容器可能已经被终止,但程序代码可能仍然保留在实例上(例如,在实例代码高速缓存中)。如果工作者管理器140确定存在这种情况,则例程500进行到下面描述的块508。另一方面,如果工作者管理器140确定不存在这种情况,则例程500进行到下面描述的块506。
在块506处,工作者管理器140从预热池130A或从预热池管理器130获得新的实例。
在块508处,工作者管理器140或安全管理器150在所获得的实例上创建第一容器。可以创建第一容器并将其配置为使用与执行程序代码的请求相关联的可信凭证来执行程序代码的第一部分。
在块510处,工作者管理器140或安全管理器150在所获得的实例上创建第二容器。可以创建第二容器并将其配置为不使用或涉及与执行程序代码的请求相关联的可信凭证来执行程序代码的第二部分。第二容器可以被配置为例如通过进程间通信(“IPC”)协议与第一容器通信。IPC协议可以包括例如套接字对、管道、命名管道、虚拟机实例上的共享存储器或消息队列中的一个。例如,第一容器可以被配置为向第二容器发送进程间通信,以请求按需处理程序代码的第二部分。尽管参考例程500描述的例子涉及程序代码的两个部分,但可以确定任何数量的部分,并且可以创建相应数量的相应容器以使用具有不同信任级别的相应凭证来执行相应的部分。在一些情况下,第一容器和第二容器可以被配置成主-从关系,使得包含不太可信程序代码的第二部分的第二容器可以仅响应于从第一容器接收到的请求来执行。在一些情况下,第一容器和第二容器可以被配置为兄弟关系,各自相互独立地执行其相应的程序代码,以将涉及可信凭证的进程与包含较少可信代码的进程分开。
在块512处,工作者管理器140致使使用第一容器和第二容器来处理请求。在一些情况下,程序代码的第一部分和第二部分可以同时并行地执行。在一些情况下,程序代码的第二部分可以仅响应于第二容器从第一容器接收到的请求而执行。
尽管以上参照块502-512描述了图5的例程500,但本文所述的实施方案不限于此,并且可以在不脱离本公开的精神的情况下省略、修改或切换一个或多个块。
参考图6,示出了根据示例性实施方案诸如图1的实施方案的涉及与辅助服务交互的虚拟机实例的安全机制。在图6的例子中,实例157被配置为处理与特定程序代码相关联的传入代码执行请求。实例157被示出为通过网络104与一个或多个辅助服务106和实例供应服务109进行通信。例如,实例157可以一开始在供应和配置状态期间与实例供应服务109通信,随后与辅助服务106直接通信。安全管理器150可以被配置为管理和保护该连接,以防止来自恶意第三方的干扰。
参考图7,示出了根据示例性实施方案诸如图1的实施方案的涉及执行与不同信任级别相关联的部分中的程序代码的安全机制。在图7中,实例156被配置为处理与特定程序代码相关联的传入代码执行请求。实例156包括:容器156A,其已经加载了程序代码的具有第一信任级别的第一部分;以及容器156B,其已经加载了程序代码的具有第二信任级别的第二部分。容器156A被示出为与容器156B直接通信。例如,容器156A可以向容器156B发送请求以执行代码的第二部分,而不需要将任何可信或安全凭证信息传递到容器156B。容器156B可以处理从容器156A接收的请求,并且可选地在其完成时提供响应。
本领域技术人员以及其他人员将理解,本公开中描述的所有功能可以体现在由所公开的组件和移动通信装置的一个或多个物理处理器执行的软件中。所述软件可持续存储在任何类型的非易失性存储器中。
除非另外明确陈述,或另外在上下文中如使用的那样理解,条件性语言(尤其是例如“可(can)”、“可(could)”、“可能(might)”或“可能(may)”通常既定传达某些实施方案任选地可包括某些特征、元件及/或步骤,而某些其他实施方案不包括某些特征、元件和/或步骤。因此,该类条件性语言通常不旨在暗示特征、元素和/或步骤无论如何都是一个或多个实施方案所必需的,或者一个或多个实施方案无论有或没有用户输入或提示都必然包括用于决定任何特定实施方案中是否包括或将执行这些特征、元素和/或步骤的逻辑。
应将本文所描述和/或附图中所描绘的流程图中的任何过程描述、元素或块理解为可能代表模块、分段或代码的包括用于实施所述过程中的特定逻辑功能或步骤的一个或多个可执行指令的部分。替代具体实施包括在本文所描述的实施方案的范围内,其中要素或功能可以被删除,可以按不同于所示出或所讨论的顺序来执行,包括大致上同时地或者逆序地,这取决于所涉及的功能,如本领域技术人员将理解。还将了解的是,上述数据和/或组件可以存储在计算机可读介质上,并使用与存储诸如CD-ROM、DVD-ROM或网络接口等计算机可执行组件的计算机可读存储介质相关联的驱动机构加载到计算装置的存储器中。另外,所述组件和/或数据可以包括在单个装置中或以任何方式分布。因此,通用计算装置可以被配置成使用上述各种数据和/或组件的处理和/或执行来实现本公开的过程、算法和方法。
应当强调,可以对上述实施方案进行许多变化和修改,其中的要素将被理解为在其他可接受的例子之中。在本文中,所有这类修改和变化意图被包括在本公开的范围内,并且受所附权利要求书保护。
本公开的实施方案可以根据以下条款来描述:
1.一种用于从虚拟计算群提供低延时计算能力的系统,所述系统包括:
电子数据存储,所述电子数据存储被配置为存储用户的至少一个程序代码;以及
虚拟计算系统,所述虚拟计算系统包括执行特定计算机可执行指令的一个或多个硬件计算装置,所述虚拟计算系统与所述电子数据存储通信,并且被配置为至少:
在一个或多个物理计算装置上维持多个虚拟机实例,其中所述多个虚拟机实例包括:预热池,所述预热池包括其上加载有一个或多个软件组件并且等待被分配给用户的虚拟机实例;以及活性池,所述活性池包括当前分配给一个或多个用户的虚拟机实例;
接收在所述虚拟计算系统上执行与特定用户相关联的程序代码的请求,所述请求包括指示所述程序代码和与所述程序代码相关联的所述特定用户的信息;
基于所述接收的请求确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略;
从所述预热池或所述活性池中选择要用于执行所述程序代码的虚拟机实例;
基于所述用户指定的安全策略在所述选择的虚拟机实例中创建容器;以及
致使与所述特定用户相关联的所述程序代码从所述电子数据存储中加载到所述容器中并根据所述安全策略在所述容器中执行。
2.根据条款1所述的系统,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与虚拟专用云通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
3.根据条款1所述的系统,其中所述用户指定的安全策略是至少部分基于与所述特定用户相关联的安全策略。
4.一种系统,其包括:
虚拟计算系统,所述虚拟计算系统包括执行特定计算机可执行指令的一个或多个硬件计算装置,并且被配置为至少:
基于在所述虚拟计算系统上执行程序代码的请求确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略,所述程序代码与特定用户相关联;
从一个或多个物理计算装置上保持的多个虚拟机实例中选择要用于执行所述程序代码的虚拟机实例;
基于所述一个或多个安全参数在所述选择的虚拟机实例中获取容器;以及
致使与所述特定用户相关联的所述程序代码至少部分地基于所述用户指定的安全策略而在所述容器中执行。
5.根据条款4所述的系统,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与辅助服务进行通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
6.根据条款4所述的系统,其中所述安全策略还指定要被分配用于在所述虚拟计算系统上执行所述程序代码的计算资源量,并且其中在所述虚拟机实例上创建所述容器至少包括从所述虚拟机实例上可用的计算资源中分配所述指示的计算资源量。
7.根据条款4所述的系统,其中所述安全策略还包括配置数据,所述配置数据至少指示要使用可信凭证来执行的所述程序代码的第一部分和不使用所述可信凭证执行的所述程序代码的第二部分。
8.根据条款4所述的系统,其中所述用户指定的安全策略是至少部分基于与所述特定用户相关联的安全策略。
9.根据条款4所述的系统,其中所述虚拟计算系统还被配置为:
维持当前分配给一个或多个用户的虚拟机实例的活性池,其中所述活性池中的每个虚拟机实例上均加载有一个或多个软件组件;以及
从所述活性池中选择所述虚拟机实例,其中所述虚拟机实例是根据所述用户指定的安全策略来配置。
10.根据条款4所述的系统,其中为了根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器,所述虚拟计算系统还被配置为:
确定所述虚拟机实例包含配置后的容器,所述配置后的容器上面加载有所述程序代码并根据所述一个或多个安全参数来配置;以及
选择所述配置后的容器用于执行所述程序代码。
11.根据条款4所述的系统,其中为了根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器,所述虚拟计算系统还被配置为:
确定所述虚拟机实例不包含配置后的容器,所述配置后的容器上面加载有所述程序代码并根据所述一个或多个安全参数来配置;以及
根据所述一个或多个安全参数来创建所述容器并且致使与所述特定用户相关联的所述程序代码从电子数据存储加载到所述容器上。
12.一种计算机实施的方法,其包括:
当由被配置有特定可执行指令的一个或多个计算装置实现时,
基于在所述虚拟计算系统上执行程序代码的请求来确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略,所述程序代码与特定用户相关联;
从一个或多个物理计算装置上保持的多个虚拟机实例中选择要用于执行所述程序代码的虚拟机实例;
根据所述一个或多个安全参数在所述选择的虚拟机实例中创建容器;以及
致使与所述特定用户相关联的所述程序代码至少部分地基于所述用户指定的安全策略而在所述容器中执行。
13.根据条款12所述的计算机实施的方法,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与辅助服务进行通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
14.根据条款12所述的计算机实施的方法,其中所述安全策略还指定要被分配用于在所述虚拟计算系统上执行所述程序代码的计算资源量,并且其中在所述虚拟机实例上创建所述容器至少包括从所述虚拟机实例中可用的计算资源中分配所述指示的计算资源量。
15.根据条款12所述的计算机实施的方法,其中所述安全策略还包括配置数据,所述配置数据至少指示要使用可信凭证来执行的所述程序代码的第一部分和不使用所述可信凭证执行的所述程序代码的第二部分。
16.根据条款12所述的计算机实施的方法,其中根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器还包括:
确定所述虚拟机实例包含其上加载有所述程序代码并根据所述一个或多个安全参数配置的容器;以及
选择所述容器用于执行所述程序代码。
17.根据条款12所述的计算机实施的方法,其中根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器还包括:
确定所述虚拟机实例不包含其上加载有所述程序代码并根据所述一个或多个安全参数配置的容器;以及
根据所述一个或多个安全参数来创建容器并且致使与所述特定用户相关联的所述程序代码从电子数据存储加载到所述容器上。
18.一种存储计算机可执行指令的计算机可读非暂时性存储介质,所述计算机可执行指令在由一个或多个计算装置执行时配置所述一个或多个计算装置来执行操作,所述操作包括:
基于在所述虚拟计算系统上执行程序代码的请求来确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略,所述程序代码与特定用户相关联;
从一个或多个物理计算装置上保持的多个虚拟机实例中选择要用于执行所述程序代码的虚拟机实例;
根据所述一个或多个安全参数在所述选择的虚拟机实例中创建容器;以及
致使与所述特定用户相关联的所述程序代码从电子数据存储加载到所述容器上并至少部分地基于所述用户指定的安全策略在所述容器中执行。
19.根据条款18所述的计算机可读非暂时性存储介质,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与辅助服务进行通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
20.根据条款18所述的计算机可读非暂时性存储介质,其中所述安全策略还包括配置数据,所述配置数据至少指示要使用可信凭证来执行的所述程序代码的第一部分和不使用所述可信凭证执行的所述程序代码的第二部分。
21.根据条款18所述的计算机可读非暂时性存储介质,其中所述安全策略还包括配置数据,所述配置数据至少指示要使用可信凭证来执行的所述程序代码的第一部分和不使用所述可信凭证执行的所述程序代码的第二部分。
22.根据条款21所述的计算机可读非暂时性存储介质,其中所述操作还包括:
维持当前分配给一个或多个用户的虚拟机实例的活性池,其中所述活性池中的每个虚拟机实例上均加载有一个或多个软件组件;以及
从所述活性池中选择所述虚拟机实例,其中所述虚拟机实例是根据所述用户指定的安全策略来配置。

Claims (15)

1.一种用于从虚拟计算群提供低延时计算能力的系统,所述系统包括:
电子数据存储,所述电子数据存储被配置为存储用户的至少一个程序代码;以及
虚拟计算系统,所述虚拟计算系统包括执行特定计算机可执行指令的一个或多个硬件计算装置,所述虚拟计算系统与所述电子数据存储通信,并且被配置为至少:
在一个或多个物理计算装置上维持多个虚拟机实例,其中所述多个虚拟机实例包括:预热池,所述预热池包括其上加载有一个或多个软件组件并且等待被分配给用户的虚拟机实例;以及活性池,所述活性池包括当前分配给一个或多个用户的虚拟机实例;
接收在所述虚拟计算系统上执行与特定用户相关联的程序代码的请求,所述请求包括指示所述程序代码和与所述程序代码相关联的所述特定用户的信息;
基于所述接收的请求确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略;
从所述预热池或所述活性池中选择要用于执行所述程序代码的虚拟机实例;
基于所述用户指定的安全策略在所述选择的虚拟机实例中创建容器;以及
致使与所述特定用户相关联的所述程序代码从所述电子数据存储中加载到所述容器中并根据所述安全策略在所述容器中执行。
2.根据权利要求1所述的系统,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器与虚拟专用云进行通信的参数、用于使所述容器与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
3.根据权利要求1所述的系统,其中所述用户指定的安全策略是至少部分基于与所述特定用户相关联的安全策略。
4.一种系统,其包括:
虚拟计算系统,所述虚拟计算系统包括执行特定计算机可执行指令的一个或多个硬件计算装置,并且被配置为至少:
基于在所述虚拟计算系统上执行程序代码的请求确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略,所述程序代码与特定用户相关联;
从一个或多个物理计算装置上保持的多个虚拟机实例中选择要用于执行所述程序代码的虚拟机实例;
基于所述一个或多个安全参数在所述选择的虚拟机实例中获取容器;以及
致使与所述特定用户相关联的所述程序代码至少部分地基于所述用户指定的安全策略而在所述容器中执行。
5.根据权利要求4所述的系统,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与辅助服务进行通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
6.根据权利要求4所述的系统,其中所述安全策略还指定要被分配用于在所述虚拟计算系统上执行所述程序代码的计算资源量,并且其中在所述虚拟机实例上创建所述容器至少包括从所述虚拟机实例上可用的计算资源中分配所述指示的计算资源量。
7.根据权利要求4所述的系统,其中所述安全策略还包括配置数据,所述配置数据至少指示要使用可信凭证来执行的所述程序代码的第一部分和不使用所述可信凭证执行的所述程序代码的第二部分。
8.根据权利要求4所述的系统,其中所述用户指定的安全策略是至少部分基于与所述特定用户相关联的安全策略。
9.根据权利要求4所述的系统,其中所述虚拟计算系统还被配置为:
维持当前分配给一个或多个用户的虚拟机实例的活性池,其中所述活性池中的每个虚拟机实例上均加载有一个或多个软件组件;以及
从所述活性池中选择所述虚拟机实例,其中所述虚拟机实例是根据所述用户指定的安全策略来配置。
10.根据权利要求4所述的系统,其中为了根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器,所述虚拟计算系统还被配置为:
确定所述虚拟机实例包含配置后的容器,所述配置后的容器上面加载有所述程序代码并根据所述一个或多个安全参数来配置;以及
选择所述配置后的容器用于执行所述程序代码。
11.一种计算机实施的方法,其包括:
当由被配置有特定可执行指令的一个或多个计算装置实现时,
基于在所述虚拟计算系统上执行程序代码的请求来确定指定要通过其执行所述程序代码的一个或多个安全参数的用户指定的安全策略,所述程序代码与特定用户相关联;
从一个或多个物理计算装置上保持的多个虚拟机实例中选择要用于执行所述程序代码的虚拟机实例;
根据所述一个或多个安全参数在所述选择的虚拟机实例中创建容器;以及
致使与所述特定用户相关联的所述程序代码至少部分地基于所述用户指定的安全策略而在所述容器中执行。
12.根据权利要求11所述的计算机实施的方法,其中所述一个或多个安全参数包括以下各项中的一个或多个:处理持续时间限制、存储器限制、用于启用传输控制协议(“TCP”)套接字连接的参数、用于启用到所述容器的入站或出站网络连接的参数、用于使所述容器能够与辅助服务进行通信的参数、用于使所述容器能够与所述选择的虚拟机实例上所包含的第二容器进行通信的参数、用于使所述容器能够与第二虚拟机实例上所包含的第二容器进行通信的参数,以及允许所述容器与所述程序代码相关联地执行的访问受限功能的列表。
13.根据权利要求11所述的计算机实施的方法,其中所述安全策略还指定要被分配用于在所述虚拟计算系统上执行所述程序代码的计算资源量,并且其中在所述虚拟机实例上创建所述容器至少包括从所述虚拟机实例中可用的计算资源中分配所述指示的计算资源量。
14.根据权利要求11所述的计算机实施的方法,其中根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器还包括:
确定所述虚拟机实例包含其上加载有所述程序代码并根据所述一个或多个安全参数配置的容器;以及
选择所述容器用于执行所述程序代码。
15.根据权利要求11所述的计算机实施的方法,其中根据所述一个或多个安全参数在所述选择的虚拟机实例中获取容器还包括:
确定所述虚拟机实例不包含其上加载有所述程序代码并根据所述一个或多个安全参数配置的容器;以及
根据所述一个或多个安全参数来创建容器并且致使与所述特定用户相关联的所述程序代码从电子数据存储加载到所述容器上。
CN201680008799.6A 2015-02-04 2016-02-02 一种用于从虚拟计算群提供低延时计算能力的系统及计算机实施的方法 Active CN107533470B (zh)

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
CN107533470A true CN107533470A (zh) 2018-01-02
CN107533470B CN107533470B (zh) 2021-03-09

Family

ID=55410237

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680008799.6A Active CN107533470B (zh) 2015-02-04 2016-02-02 一种用于从虚拟计算群提供低延时计算能力的系统及计算机实施的方法

Country Status (8)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189463A (zh) * 2018-08-28 2019-01-11 杭州百腾教育科技有限公司 一种对程序代码自动进行判断的控制方法及控制装置
CN112424749A (zh) * 2018-04-03 2021-02-26 亚马逊技术有限公司 内存占用有限情况下的按需代码执行
CN112513816A (zh) * 2018-08-17 2021-03-16 威睿公司 函数即服务(faas)执行分配器
CN112529711A (zh) * 2021-02-07 2021-03-19 腾讯科技(深圳)有限公司 基于区块链虚拟机复用的交易处理方法及装置
WO2023124167A1 (zh) * 2021-12-31 2023-07-06 国电南瑞科技股份有限公司 一种容器无感知启动方法及系统

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
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
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9727725B2 (en) 2015-02-04 2017-08-08 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
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
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
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
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811434B1 (en) 2015-12-16 2017-11-07 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
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
US10305858B2 (en) 2015-12-18 2019-05-28 Nicira, Inc. Datapath processing of service rules with qualifiers defined in terms of dynamic groups
US10148696B2 (en) * 2015-12-18 2018-12-04 Nicira, Inc. Service rule console for creating, viewing and updating template based service rules
US10469450B2 (en) 2015-12-18 2019-11-05 Nicira, Inc. Creating and distributing template based service rules
US9910713B2 (en) * 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10225259B2 (en) * 2016-03-30 2019-03-05 Oracle International Corporation Establishing a cleanroom data processing environment
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution 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
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
US10713272B1 (en) 2016-06-30 2020-07-14 Amazon Technologies, Inc. Dynamic generation of data catalogs for accessing data
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
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
US11277494B1 (en) 2016-11-27 2022-03-15 Amazon Technologies, Inc. Dynamically routing code for executing
US11481408B2 (en) 2016-11-27 2022-10-25 Amazon Technologies, Inc. Event driven extract, transform, load (ETL) processing
US10621210B2 (en) 2016-11-27 2020-04-14 Amazon Technologies, Inc. Recognizing unknown data objects
US11138220B2 (en) 2016-11-27 2021-10-05 Amazon Technologies, Inc. Generating data transformation workflows
US10963479B1 (en) 2016-11-27 2021-03-30 Amazon Technologies, Inc. Hosting version controlled extract, transform, load (ETL) code
US11036560B1 (en) * 2016-12-20 2021-06-15 Amazon Technologies, Inc. Determining isolation types for executing code portions
US10545979B2 (en) 2016-12-20 2020-01-28 Amazon Technologies, Inc. Maintaining data lineage to detect data events
US10936331B2 (en) * 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container
EP3611618A4 (en) * 2017-04-12 2020-04-22 Sony Corporation INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD AND COMPUTER PROGRAM
US11126927B2 (en) * 2017-11-24 2021-09-21 Amazon Technologies, Inc. Auto-scaling hosted machine learning models for production inference
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches 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
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to 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
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
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
EP4145282A1 (en) * 2018-12-21 2023-03-08 Huawei Cloud Computing Technologies Co., Ltd. Mechanism to reduce serverless function startup latency
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
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
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
US11669365B1 (en) 2019-08-26 2023-06-06 Amazon Technologies, Inc. Task pool for managed compute instances
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
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
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
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
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
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to 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
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
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
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
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
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 キヤノン株式会社 情報処理装置、及び情報処理装置におけるコンテナとプロセスとの間の通信を制御する制御方法
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
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488098A (zh) * 2009-02-13 2009-07-22 华中科技大学 基于虚拟计算技术的多核计算资源管理系统
CN102681899A (zh) * 2011-03-14 2012-09-19 金剑 云计算服务平台的虚拟计算资源动态管理系统
US20130227641A1 (en) * 2012-01-06 2013-08-29 Optio Labs, LLC Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
CN103338246A (zh) * 2013-06-19 2013-10-02 华南师范大学 一种基础设施云资源分配过程中的虚拟机选择方法及系统
US20140173279A1 (en) * 2010-08-13 2014-06-19 International Business Machines Corporation Securely identifying host systems
CN104009885A (zh) * 2014-05-22 2014-08-27 北京大学 一种云环境下基于隐蔽通道的虚拟机同驻检测方法
US20140282889A1 (en) * 2013-03-14 2014-09-18 Rackspace Us, Inc. Method and System for Identity-Based Authentication of Virtual Machines

Family Cites Families (85)

* 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
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
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
US20080201455A1 (en) 2007-02-15 2008-08-21 Husain Syed M Amir Moving Execution of a Virtual Machine Across Different Virtualization Platforms
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
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
US8769083B2 (en) 2009-08-31 2014-07-01 Red Hat, Inc. Metering software infrastructure in a cloud computing environment
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
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
US8646028B2 (en) 2009-12-14 2014-02-04 Citrix Systems, Inc. Methods and systems for allocating a USB device to a trusted virtual machine or a non-trusted virtual machine
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
EP2569698B1 (en) 2010-05-10 2019-07-10 Citrix Systems, Inc. Redirection of information from secure virtual machines to unsecure virtual machines
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
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
EP2622504A4 (en) * 2010-09-30 2018-01-17 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
US9081613B2 (en) 2010-11-02 2015-07-14 International Business Machines Corporation Unified resource manager providing a single point of control
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
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
US8904008B2 (en) 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
US20130179894A1 (en) 2012-01-09 2013-07-11 Microsoft Corporation Platform as a service job scheduling
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
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
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user 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

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101488098A (zh) * 2009-02-13 2009-07-22 华中科技大学 基于虚拟计算技术的多核计算资源管理系统
US20140173279A1 (en) * 2010-08-13 2014-06-19 International Business Machines Corporation Securely identifying host systems
CN102681899A (zh) * 2011-03-14 2012-09-19 金剑 云计算服务平台的虚拟计算资源动态管理系统
US20130227641A1 (en) * 2012-01-06 2013-08-29 Optio Labs, LLC Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
US20140282889A1 (en) * 2013-03-14 2014-09-18 Rackspace Us, Inc. Method and System for Identity-Based Authentication of Virtual Machines
CN103338246A (zh) * 2013-06-19 2013-10-02 华南师范大学 一种基础设施云资源分配过程中的虚拟机选择方法及系统
CN104009885A (zh) * 2014-05-22 2014-08-27 北京大学 一种云环境下基于隐蔽通道的虚拟机同驻检测方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112424749A (zh) * 2018-04-03 2021-02-26 亚马逊技术有限公司 内存占用有限情况下的按需代码执行
CN112513816A (zh) * 2018-08-17 2021-03-16 威睿公司 函数即服务(faas)执行分配器
CN112513816B (zh) * 2018-08-17 2022-08-02 威睿公司 函数即服务(faas)执行分配器
CN109189463A (zh) * 2018-08-28 2019-01-11 杭州百腾教育科技有限公司 一种对程序代码自动进行判断的控制方法及控制装置
CN112529711A (zh) * 2021-02-07 2021-03-19 腾讯科技(深圳)有限公司 基于区块链虚拟机复用的交易处理方法及装置
WO2023124167A1 (zh) * 2021-12-31 2023-07-06 国电南瑞科技股份有限公司 一种容器无感知启动方法及系统

Also Published As

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

Similar Documents

Publication Publication Date Title
CN107533470A (zh) 用于低延时执行程序代码的安全协议
CN108369534B (zh) 代码执行请求路由
US10666745B2 (en) Method and procedure for dynamic services orchestration that runs within an on-device software container
CN109478134A (zh) 用跨账户别名执行按需网络代码
US8904005B2 (en) Indentifying service dependencies in a cloud deployment
CN107209682A (zh) 资源调整的自动管理
US11842214B2 (en) Full-dimensional scheduling and scaling for microservice applications
CN107111507A (zh) 线程化作为服务
US20160132806A1 (en) Catalog service platform for deploying applications and services
CN108139940A (zh) 对于计算能力的周期性请求的管理
US20120254042A1 (en) Integrated Mobile/Server Applications
WO2014077981A1 (en) Protection of user data in hosted application environments
US10305752B2 (en) Automatically orchestrating the compliance of cloud services to selected standards and policies
US20210042294A1 (en) Blockchain-based consent management system and method
CN109564525A (zh) 按需网络代码执行环境中的异步任务管理
AU2017403385A1 (en) Data auditing method and apparatus, mobile terminal, and computer-readable storage medium
US9501303B1 (en) Systems and methods for managing computing resources
US11755379B2 (en) Liaison system and method for cloud computing environment
CN105917694B (zh) 电信网络中的服务提供与激活
US10872001B1 (en) Big data propagation agent framework
US20230289214A1 (en) Intelligent task messaging queue management
US11316947B2 (en) Multi-level cache-mesh-system for multi-tenant serverless environments
US11972287B2 (en) Data transfer prioritization for services in a service chain
US10599453B1 (en) Dynamic content generation with on-demand code execution
WO2023169815A1 (en) In-band instantiation configuration for application workloads

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant