CN112513813A - 在按需网络代码执行系统中执行辅助功能 - Google Patents
在按需网络代码执行系统中执行辅助功能 Download PDFInfo
- Publication number
- CN112513813A CN112513813A CN201980039918.8A CN201980039918A CN112513813A CN 112513813 A CN112513813 A CN 112513813A CN 201980039918 A CN201980039918 A CN 201980039918A CN 112513813 A CN112513813 A CN 112513813A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- machine instance
- code
- execution
- 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
Links
- 230000006870 function Effects 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 51
- 230000008859 change Effects 0.000 claims description 72
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 38
- 230000003993 interaction Effects 0.000 description 29
- 238000013500 data storage Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 238000010200 validation analysis Methods 0.000 description 13
- 239000003795 chemical substances by application Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 9
- 238000012795 verification Methods 0.000 description 9
- 238000003860 storage Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 4
- 238000010792 warming Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000001010 compromised effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
描述了用于通过实现对代码的高效执行的方式在按需代码执行系统中提供辅助功能的系统和方法。用户可通过提交代码而在所述系统上生成任务。所述系统可确定所述所提交的代码当在所述系统上执行时可能需要的所述辅助功能,并且可通过供应与执行所述所提交的代码的虚拟机实例结合工作的边车虚拟机实例来提供这些辅助功能。边车可基于每个任务、每个用户或每个请求来提供辅助功能,并且所述边车的生命周期可基于执行所提交的代码的所述虚拟机实例的生命周期来确定。因此可仅在需要时提供辅助功能,并且可通过防止用户访问其他用户的边车来安全地提供所述辅助功能。
Description
背景技术
计算装置可以利用通信网络来交换数据。公司和组织操作将许多计算装置互连的计算机网络以支持操作或向第三方提供服务。计算系统可位于单个地理位置或位于多个不同的地理位置(例如,经由专用通信网络或公共通信网络进行互连)。具体地,数据中心或数据处理中心(本文一般称为“数据中心”)可包括许多互连的计算系统来向数据中心的用户提供计算资源。所述数据中心可以是代表组织进行运营的专用数据中心或者是代表公众或为了公众的利益而运营的公共数据中心。
为了促进对数据中心资源的增加的利用率,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机的一个或多个实例相对于数据中心的用户显现且操作为独立的计算装置。通过虚拟化,单个物理计算装置可通过动态的方式创建、维持、删除或以其他方式管理虚拟机。用户继而可向数据中心请求计算机资源,包括单个计算装置或连网的计算装置配置,并且被提供不同数目的虚拟机资源。
在一些情景下,可根据许多虚拟机实例类型来配置虚拟机实例以提供特定功能性。例如,可使各种计算装置与操作系统或操作系统配置、虚拟化的硬件资源和软件应用的不同组合相关联,以使计算装置能够提供不同的所要的功能性或者更高效地提供类似的功能性。这些虚拟机实例类型配置常常包含在装置映像内,所述装置映像包括静态数据,所述静态数据包含虚拟机在被启动时便运行的软件(例如,OS和应用以及它们的配置和数据文件等)。装置映像通常存储在用于创建或初始化所述实例的磁盘上。因此,计算装置可处理所述装置映像以便实施所要的软件配置。
附图说明
图1是描绘说明性环境的框图,在所述说明性环境中,按需代码执行系统可操作以执行与可由按需代码执行系统的用户提交的代码相对应的任务,并且供应并执行边车虚拟机实例以促进所提交的代码的执行;
图2描绘提供边车配置系统的计算装置的通用架构,所述边车配置系统被配置为促进配置用于促进在图1的按需代码执行系统上执行任务的边车虚拟机实例;
图3是描绘用于向图1的按需代码执行系统提交与任务相对应的代码并且用于使按需代码执行系统确定边车配置以促进在按需代码执行系统上执行任务的说明性交互的流程图;
图4是描绘用于利用在图1的按需代码执行系统上提供的所确定的边车配置来执行任务的说明性交互的流程图;
图5是描绘用于在图1的按需代码执行系统上管理边车虚拟机实例的生命周期的说明性交互的流程图;
图6是描绘在边车虚拟机实例与在图1的按需代码执行系统上执行与任务相对应的代码的虚拟机实例之间的说明性交互的流程图;
图7是描绘用于基于提交给图1的按需代码执行系统的代码来确定边车配置的说明性例程的流程图;以及
图8是描绘用于在于图1的按需代码执行系统上执行任务期间管理边车的生命周期的说明性例程的流程图。
具体实施方式
一般来说,本公开的各方面涉及按需代码执行系统。按需代码执行系统使得能够快速执行可由按需代码执行系统的用户供应的代码。更具体地,本公开的实施方案涉及通过使用“边车”虚拟机实例来实施用于按需代码执行系统的辅助功能。如本文详细描述,按需代码执行系统可提供网络可访问服务,所述网络可访问服务使用户能够提交或指定将要由虚拟机实例在按需代码执行系统上执行的计算机可执行代码。按需代码执行系统上的每一组代码可限定“任务”并且当在按需代码执行系统的虚拟机实例上被执行时实施与那个任务相对应的特定功能性。在按需代码执行系统上单独地实施任务可称为“执行”任务(或“任务执行”)。按需代码执行系统可进一步使用户能够基于多种潜在事件来触发任务的执行,所述潜在事件诸如为在基于网络的存储系统处检测到新的数据、向按需代码执行系统传输应用编程接口(“API”)调用或向按需代码执行系统传输特殊格式化的超文本传输协议(“HTTP”)包。因此,用户可利用按需代码执行系统“按需”执行任何指定的可执行代码,而不需要配置或维护在其上执行代码的基础硬件或基础设施。此外,按需代码执行系统可被配置为通过快速的方式(例如,在100毫秒[ms]以下)执行任务,从而实现“实时”(例如,在终端用户几乎不可感知的延迟的情况下)执行任务。
按需代码执行系统可按需将虚拟机实例实例化以执行指定任务。按需代码执行系统可进一步将“边车”虚拟机实例实例化,所述“边车”虚拟机实例使用户能够控制或监视任务的执行和所述任务在其上执行的虚拟机实例。说明性地,边车虚拟机实例(这在本文可以称为“边车”)可实施用于控制、保护、过滤、监视或管理执行任务代码的虚拟机实例的一个或多个功能。通过在一个或多个边车中实施这些功能,按需代码执行系统可有效地使这些功能与执行任务代码的虚拟机实例分开。边车实现方式因此提高了关于资源利用的效率,因为(如在下文更详细地描述)可仅在需要时使边车可用。边车实现方式进一步提高了单独的用户的安全性,因为损害一个边车的攻击者不能访问其他用户的边车或虚拟机实例。
如本文使用,“辅助功能”可一般涉及促进执行用户提交的任务代码的功能。例如,辅助功能可包括封装、记录、追踪、调试、扫描、剖析、验证输入、验证输出或涉及任务代码执行的其他功能。然而,本领域技术人员将理解,这些示例不具限制性,并且执行其他功能的边车在本公开的范围内。在一些实施方案中,辅助功能可包括在管理员级别的权限下执行的控制平面功能。可将边车实例化以基于每个用户、每个任务或每个调用来执行这些功能,并且因此可向单独的用户提供对用于他们的虚拟机实例的个性化的控制平面的访问。例如,可使封装网络流量的边车可由单独的用户使用,并且所述边车可将在物理底层网络上运输的包转移到用户可从用户的虚拟机实例访问的虚拟网络。按需代码执行系统因此可经由边车提供网络封装,并且可在不允许运行用户代码的虚拟机实例访问底层网络并且潜在地将其他用户的流量解除封装的情况下如此做。
本领域技术人员鉴于本公开将了解,本文公开的实施方案提高了诸如按需代码执行系统的计算系统通过有效的方式执行代码的能力。另外,目前公开的实施方案解决了计算系统内固有的技术问题;具体地,执行代码所使用的计算资源的有限性质、与提供“不间断”辅助功能性相关联的资源开销、由供应未利用的功能性引起的低效以及由向多个用户提供共同的控制平面引起的安全问题。通过本文描述的各种技术解决方案来解决这些技术问题,包括供应具有边车虚拟机实例的执行环境,所述边车虚拟机实例提供用户专有或任务专有的功能性。因此,本公开表示现有的数据处理系统和一般计算系统的改进。
按需代码执行系统可包括虚拟机实例管理器,所述虚拟机实例管理器被配置为接收用户代码(通过多种编程语言中的任一者编撰的线程、程序等)并且通过高度可缩放、低等待时间的方式执行代码,而不需要用户配置虚拟机实例。具体地,虚拟机实例管理器可在接收用户代码之前以及在从用户接收关于任何特定虚拟机实例配置的任何信息之前根据预定组配置来创建和配置虚拟机实例,每个对应于多种运行时环境中的任何一者或多者。其后,虚拟机实例管理器接收用户发起的执行代码的请求,并且基于与所述请求相关联的配置信息来识别预配置的虚拟机实例以执行代码。虚拟机实例管理器可进一步分配所识别的虚拟机实例以至少部分地通过以下操作来执行用户的代码:在所分配的虚拟机实例内部创建和配置容器,并且向所述容器供应任务的代码以及相依性代码对象。在标题为“PROGRAMMATIC EVENT DETECTION AND MESSAGE GENERATION FOR REQUESTS TO EXECUTEPROGRAM CODE”且在2014年9月30日提交的美国专利第9,323,556号(“‘556专利”)中更详细地描述了用于实施虚拟机实例管理器并且在虚拟机实例上执行用户代码的各种实施方案,所述专利的全部内容在此以引用的方式并入。
如本文使用,术语“虚拟机实例”意在是指仿真硬件以提供软件可在其上执行的环境或平台(“执行环境”)的软件或其他可执行代码的执行。虚拟机实例一般由硬件装置执行,所述硬件装置可不同于由虚拟机实例仿真的物理硬件。例如,虚拟机可仿真第一类型的处理器和存储器,而在第二类型的处理器和存储器上执行。因此,可利用虚拟机在正在执行第二执行环境(例如,第二操作系统)的物理装置上执行既定针对第一执行环境(例如,第一操作系统)的软件。在一些情况下,由虚拟机实例仿真的硬件可与基础装置的硬件相同或类似。例如,具有第一类型的处理器的装置可实施多个虚拟机实例,每个虚拟机实例仿真那个第一类型的处理器的实例。因此,可使用虚拟机实例将装置分割为一定数目的逻辑子装置(每个逻辑子装置称为“虚拟机实例”)。虽然虚拟机实例一般可提供远离基础物理装置的硬件的抽象水平,但此抽象并非所需的。例如,假设装置实施多个虚拟机实例,所述多个虚拟机实例中的每一者仿真与由装置提供的硬件相同的硬件。在此类情景下,每个虚拟机实例可允许软件应用在不转移的情况下在基础硬件上执行代码,同时维持在其他虚拟机实例上运行的软件应用之间的逻辑分隔。一般称为“本地执行”的此过程可用于增加虚拟机实例的速度或性能。还可使用允许直接利用基础硬件的其他技术,诸如硬件直通技术。
虽然执行操作系统的虚拟机在本文被描述为执行环境的一个示例,但其他执行环境也是可能的。例如,可在软件“容器”内执行任务或其他过程,所述软件“容器”提供运行时环境而自身不提供硬件的虚拟化。可在虚拟机内实施容器以提供额外的安全性,或者可在虚拟机实例的外部运行所述容器。
将更容易地了解本公开的前述方面和许多伴随的优势,因为通过在结合附图时参考以下描述会更好地理解本公开的前述方面和许多伴随的优势。
图1是说明性操作环境100的框图,在所述说明性操作环境中,按需代码执行系统110可基于与用户计算装置102、辅助服务106和基于网络的数据存储服务108的通信进行操作。通过图解,各种示例性用户计算装置102被示出为与按需代码执行系统110通信,所述用户计算装置包括台式计算机、膝上型计算机和移动电话。一般来说,用户计算装置102可以是任何计算装置,诸如台式计算机、膝上型计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合PDA/移动电话、移动电话、电子书阅读器、机顶盒、语音命令装置、相机、数字媒体播放器等。按需代码执行系统110可向用户计算装置102提供一个或多个用户界面、命令行界面(CLI)、应用编程界面(API)和/或其他编程界面用于:生成并上传用户可执行代码(例如,包括识别所上传的代码的相依性代码对象的元数据);叫用用户提供的代码(例如,提交在按需代码执行系统110上执行用户代码的请求);调度基于事件的作业或定时的作业;跟踪用户提供的代码;和/或观看其他记录或监视与他们的请求和/或用户代码相关的信息。虽然一个或多个实施方案可能在本文被描述为使用用户界面,但应了解,此类实施方案可另外或可替代地使用任何CLI、API或其他编程界面。
说明性环境100还包括一个或多个辅助服务106,所述一个或多个辅助服务可代表用户与按需代码执行环境110交互以实施所要的功能性。辅助服务106可对应于网络连接的计算装置,诸如服务器,所述网络连接的计算装置生成按需代码执行环境110可访问的数据或以其他方式与按需代码执行环境110进行通信。例如,辅助服务106可包括web服务(例如,与用户计算装置102、与按需代码执行系统110或与第三方相关联)、数据库、真正简易聚合(“RSS”)阅读器、社交网站或网络可访问服务或数据源的任何其他来源。在一些情况下,辅助服务106可与按需代码执行系统110相关联,例如,以向按需代码执行系统110提供计费或记录服务。在一些情况下,辅助服务106主动地向按需代码执行系统110传输信息,诸如API调用或其他任务触发的信息。在其他情况下,辅助服务106可以是被动的,使得使数据可供按需代码执行系统110访问。例如,按需代码执行系统110的部件可周期性地轮询此类被动的数据源,并且基于所提供的数据来触发任务在按需代码执行系统110内的执行。虽然在图1中描绘为不同于用户计算装置102和按需代码执行系统110,但在一些实施方案中,各种辅助服务106可由用户计算装置102或按需代码执行系统110实施。
说明性环境100还包括一个或多个基于网络的数据存储服务108,所述一个或多个基于网络的数据存储服务被配置为使按需代码执行系统110能够存储数据以及从一个或多个持久的或基本上持久的数据源检索数据。说明性地,基于网络的数据存储服务108可使按需代码执行系统110能够:存储与任务相对应的信息,诸如代码或元数据;存储表示任务的相依性的额外的代码对象;检索将要在执行任务期间处理的数据;以及存储关于那个执行的信息(例如,结果)。基于网络的数据存储服务108可表示(例如)关系或非关系数据库。在另一示例中,基于网络的数据存储服务108可表示网络附接存储装置(NAS),所述网络附接存储装置被配置为提供对被布置成文件系统的数据的访问。基于网络的数据存储服务108可进一步使按需代码执行系统110能够诸如通过以下操作来查询和检索关于存储在按需代码执行系统110内的数据的信息:查询许多相关文件或记录、那些文件或记录的大小、文件或记录名称、文件或记录创建时间等。在一些情况下,基于网络的数据存储服务108可提供额外的功能性,诸如将数据分隔为逻辑组(例如,与单独的账户相关联的组等)的能力。虽然示出为不同于辅助服务106,但基于网络的数据存储服务108在一些情况下也可表示一种类型的辅助服务106。
用户计算装置102、辅助服务106和基于网络的数据存储服务108可经由网络104与按需代码执行系统110通信,所述网络可包括任何有线网络、无线网络或它们的组合。例如,网络104可以是个人区域网、局域网、广域网、空中广播网络(例如,用于收音机或电视)、电缆网络、卫星网络、蜂窝电话网络或它们的组合。作为另一示例,网络104可以是可能由各种不同方运营的链接网络的公共可访问的网络,诸如互联网。在一些实施方案中,网络104可以是专用网络或半专用网络,诸如公司或大学内联网。网络104可包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可使用协议和部件用于经由互联网或其他前述类型的网络中的任一者进行通信。例如,由网络104使用的协议可包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、消息队列遥测传输(MQTT)、约束应用协议(CoAP)等。用于经由互联网或其他前述类型的通信网络中的任一者进行通信的协议和部件对于本领域技术人员来说是众所周知的,并且因此在本文不更详细地描述。
按需代码执行系统110在图1中被描绘为在分布式计算环境中操作,所述分布式计算环境包括使用一个或多个计算机网络(在图1中未示出)互连的若干计算机系统。按需代码执行系统110还可在具有比图1中绘示的装置更少或更多数量的装置的计算环境内操作。因此,在图1中描绘按需代码执行系统110应视为说明性的而非限制本公开。例如,按需代码执行系统110或其各种构成可实施各种Web服务部件、托管或“云”计算环境和/或对等的网络配置以实施本文描述的过程的至少一部分。
此外,按需代码执行系统110可直接在硬件中或由硬件装置执行的软件中实施,并且可(例如)包括在被配置为执行用于执行将在本文描述的各种特征的计算机可执行指令的物理计算机硬件上实施的一个或多个物理或虚拟服务器。一个或多个服务器可在地理上分散或在地理上共同位于(例如)一个或多个数据中心中。在一些情况下,一个或多个服务器可作为快速供应和释放的计算资源的系统(常常称为“云计算环境”)的部分进行操作。
在图1的示例中,按需代码执行系统110被绘示为连接到网络104。在一些实施方案中,按需代码执行系统110内的部件中的任一者可经由网络104与按需代码执行系统110的其他部件通信。在其他实施方案中,不是按需代码执行系统110的所有部件都能够与虚拟环境100的其他部件通信。在一个示例中,仅前端120(其在一些情况下可表示多个前端120)可连接到网络104,并且按需代码执行系统110的其他部件可经由前端120与环境100的其他部件通信。
在图1中,用户可通过用户计算装置102与按需代码执行系统110交互以提供可执行代码,并且建立限定应何时以及如何在按需代码执行系统110上执行此类代码的规则或逻辑,如此建立“任务”。例如,用户可能希望结合用户已经开发的web或移动应用来运行一条代码。运行所述代码的一种方式将是:从提供基础设施即服务的服务提供商获取虚拟机实例;配置所述虚拟机实例以适合用户的需要;以及使用所配置的虚拟机实例来运行所述代码。为了避开此过程的复杂性,用户可以可替代地向按需代码执行系统110提供所述代码,并且请求按需代码执行系统110执行所述代码。按需代码执行系统110可基于代码执行请求来处置计算能力(例如,在下文更详细地描述的容器、实例等)的获取和配置,并且使用所述计算能力来执行所述代码。按需代码执行系统110可基于量进行自动缩放,进而使用户无需担忧过度利用(例如,获取太少的计算资源并且遭受性能问题)或利用不足(例如,获取比运行代码所需的计算资源更多的计算资源,并且因此付出太多)。根据本公开的实施方案,并且如在下文更详细地描述,按需代码执行系统110可使用定制的操作系统来配置虚拟机实例以更有效地执行用户的代码并且减少对计算资源的利用。
为了实现与按需代码执行系统110的交互,系统110包括实现与按需代码执行系统110的交互的一个或多个前端120。在说明性实施方案中,前端120用作由按需代码执行系统110提供的其他服务的“前门”,从而使用户能够(经由用户计算装置102)提供计算机可执行代码、请求执行计算机可执行代码并且观看计算机可执行代码的结果。前端120包括用以实现在按需代码执行系统110与其他计算装置之间的交互的多种部件。例如,每个前端120可包括请求界面,所述请求界面向用户计算装置102提供以下能力:将用户指定的代码上传或以其他方式传送到按需代码执行系统110并且其后请求执行那个代码。在一个实施方案中,所述请求界面经由图形用户界面(GUI)、CLI或API与外部计算装置(例如,用户计算装置102、辅助服务106等)通信。前端120处理所述请求并且确保所述请求被恰当地授权。例如,前端120可确定与所述请求相关联的用户是否被授权访问在所述请求中指定的用户代码。
对本文使用的用户代码的引用可指通过特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可以可互换地使用。可(例如)结合由用户开发的特定web应用或移动应用来执行此类用户代码以实现特定功能。如上文所述,用户代码的单独集合(例如,用以实现特定功能)在本文称为“任务”,而对那个代码的特定执行(包括(例如)编译代码、解译代码或以其他方式使代码能够执行)称为“任务执行”或简称为“执行”。举非限制性示例,可通过JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一编程语言)来编写任务。可通过多种方式“触发”任务以便在按需代码执行系统110上执行。在一个实施方案中,用户或其他计算装置可传输执行任务的请求,其一般可称为执行所述任务的“调用”。此类调用可包括将要执行的用户代码(或其位置)和用于执行所述用户代码的一个或多个自变量。例如,调用可提供任务的用户代码以及执行所述任务的请求。在另一示例中,调用可通过先前上传的任务的名称或标识符来识别所述任务。在另一示例中,与任务相对应的代码可包括于对所述任务的调用中,以及在按需代码执行系统110接收所述请求之前在单独的位置(例如,辅助服务106的存储装置或在按需代码执行系统110内部的存储系统)上传。如上文所述,任务的代码可通过使用额外的代码对象的标识符来引用在按需代码执行系统110处维持的那些代码对象,使得所述代码对象在执行环境中与任务的代码进行组合,之后执行所述任务。按需代码执行系统110可基于在处理对任务的调用时所述任务的代码在哪里可得到来改变其对所述任务的执行策略。前端120的请求界面可从用户接收执行任务的调用作为超文本传输协议安全(HTTPS)请求。而且,还可在执行任务时处理和利用在HTTPS请求中包括的任何信息(例如,报头和参数)。如上文所论述,任何其他协议,包括(例如)HTTP、MQTT和CoAP,可用于将包含任务调用的消息传递到请求界面122。
执行任务的调用可指定将要与对应于所述任务的用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,所述调用可向按需代码执行系统110提供文件,所述文件包含与请求执行的任务相对应的用户代码和任何库(和/或其存储位置的识别)。在一些实施方案中,所述调用包括元数据,所述元数据指示将要执行的任务的程序代码、编写所述程序代码的语言、与所述调用相关联的用户和/或被保留用于执行所述程序代码的计算资源(例如,存储器等)。例如,任务的程序代码可通过所述调用提供、先前由用户上传、由按需代码执行系统110提供(例如,标准例程)和/或由第三方提供。说明性地,未包括在调用内或先前未由用户上传的代码可通过使用与所述代码相关联的URI在任务的元数据内引用。在一些实施方案中,此类资源层级约束(例如,将要分配多少存储器来执行特定用户代码)指定用于特定任务,并且在任务的每次执行期间可不变。在此类情况下,按需代码执行系统110可在接收每个单独的调用之前具有对此类资源层级约束的访问权,并且单独的调用可能未指定此类资源层级约束。在一些实施方案中,所述调用可指定其他约束,诸如许可数据,所述许可数据指示所述调用叫用什么种类的许可或权限来执行所述任务。此类许可数据可由按需代码执行系统110使用以访问专用资源(例如,在专用网络上)。在一些实施方案中,单独的代码对象还可与许可或授权相关联。例如,第三方可提交代码对象并且将所述对象指定为仅可由用户的子集读取。按需代码执行系统110可包括用以实施关于代码对象的这些许可或授权的功能性。
在一些实施方案中,调用可指定处置所述调用所应采用的行为。在此类实施方案中,所述调用可包括用于启用执行在所述调用中引用的任务所处的一个或多个执行模式的指示符。例如,所述调用可包括用于指示是否应以调试模式执行任务的旗标或报头,在所述调试模式下,可结合所述任务的执行而生成的调试和/或记录输出被提供回给用户(例如,经由控制台用户界面)。在此示例中,按需代码执行系统110可检查所述调用并且寻找旗标或报头,并且如果存在所述旗标或报头,则按需代码执行系统110可修改在其中执行所述任务的容器的行为(例如,记录设施),并且致使将输出数据提供回给用户。在一些实施方案中,通过由按需代码执行系统110提供给用户的用户界面将行为/模式指示符添加到所述调用。还可基于在调用中提供的指示来启用或禁用其他特征诸如源代码剖析、远程调试等。
为了管理对代码执行的请求,前端120可包括执行队列(在图1中未示出),所述执行队列可维持所请求的任务执行的记录。说明性地,按需代码执行系统110同时执行的任务的数目是有限的,并且因此,可将在按需代码执行系统110处发起(例如,经由API调用、经由从被执行或正在执行的任务的调用等)的新的任务执行置于执行队列124上并且例如按照先进先出的次序进行处理。在一些实施方案中,按需代码执行系统110可包括多个执行队列,诸如用于每个用户账户的单独的执行队列。例如,按需代码执行系统110的用户可能想要限制按需代码执行系统110上的任务执行的速率(例如,出于成本原因)。因此,按需代码执行系统110可利用账户专有的执行队列来节制特定用户账户进行同时的任务执行的速率。在一些情况下,按需代码执行系统110可对任务执行进行优先级排序,使得特定账户或指定优先级的任务执行绕过或者在执行队列内优先。在其他情况下,按需代码执行系统110可在接收到对任务的调用之后立即或基本上立即执行那个任务,并且因此,可省略执行队列。
如上文所述,可基于来自用户计算装置102的显式调用(例如,在请求界面处接收)来触发任务以便在按需代码执行系统110处执行。可替代地或另外,可基于从一个或多个辅助服务106或基于网络的数据存储服务108检索到的数据来触发任务以便在按需代码执行系统110处执行。为了促进与辅助服务106的交互,前端120可包括轮询界面(在图1中未示出),所述轮询界面操作以向辅助服务106或数据存储服务108轮询数据。说明性地,轮询界面可周期性地将请求传输到一个或多个用户指定的辅助服务106或数据存储服务108以检索任何新的可用的数据(例如,社交网络“帖子”、新闻文章、文件、记录等),并且确定该数据是否对应于触发在按需代码执行系统110上执行任务的用户建立的标准。说明性地,用于任务执行的标准可包括但不限于在辅助服务106或数据存储服务108处是否可得到新的数据、数据的类型或内容或与所述数据相对应的定时信息。在一些情况下,辅助服务106或数据存储服务108可用以向前端120通知新的数据的可用性,并且因此,关于此类服务,轮询服务可以是不必要的。
除了基于显式用户调用以及来自辅助服务106的数据而执行的任务之外,按需代码执行系统110在一些情况下可操作以独立地触发执行任务。例如,按需代码执行系统110可操作(基于来自用户的指令)以触发在一定数目的指定时间间隔(例如,每10分钟)中的每一者处执行任务。
前端120还可包括输出界面(在图1中未示出),所述输出界面被配置为输出关于在按需代码执行系统110上的任务的执行的信息。说明性地,所述输出界面可将关于任务执行的数据(例如,任务的结果、与任务执行相关的错误或任务执行的细节,诸如完成所述执行所需的总时间、经由所述执行所处理的总数据等)传输到用户计算装置102或辅助服务106,其可包括(例如)计费或记录服务。所述输出界面还可实现将诸如服务调用的数据传输到辅助服务106。例如,可在任务执行期间利用所述输出界面以将API请求传输到外部服务106(例如,以存储在任务执行期间所生成的数据)。
在一些实施方案中,按需代码执行系统110可包括多个前端120。在此类实施方案中,可提供负荷平衡器(在图1中未示出)以(例如)按照循环方式将传入的调用分发给多个前端120。在一些实施方案中,负荷平衡器将传入的调用分发给多个前端120的方式可基于按需代码执行系统110的其他部件的位置或状态。例如,负荷平衡器可将调用分发给地理上在附近的前端120或具有服务于所述调用的能力的前端。在其中每个前端120对应于按需代码执行系统的另一部件(诸如在下文描述的活动池140A)的单独的实例的情况下,负荷平衡器可根据那些其他部件上的能力或负荷来分发调用。如将在下文更详细地描述,在一些情况下,可在前端120之间确定性地分发调用,使得执行任务的给定调用将始终(或几乎始终)被路由到同一前端120。这可(例如)辅助维持任务的准确执行记录,从而确保所述任务仅执行期望的次数。虽然说明性地描述了经由负荷平衡器来分发调用,但本领域技术人员将明白其他分发技术,诸如任播路由。
为了促进任务的执行,按需代码执行系统110包括一个或多个边车库130,所述一个或多个边车库又包括一个或多个边车映像。在图1中绘示的示例中,边车库130包括:边车映像132,其包括操作系统132A和代理132B;以及边车映像134,其包括操作系统134A和代理134B。在一些实施方案中,操作系统132A和操作系统134A可以是相同的操作系统。如在下文更详细地描述,代理132B和134B在被配置为与一个或多个虚拟机实例通信时可执行一个或多个辅助功能。在一些实施方案中,边车库130仅包含执行辅助功能的代理(例如,代理132B和134B),并且通过向虚拟机实例供应来自边车库130的代理中的一者或多者来创建边车。
按需代码执行系统110还包括边车配置系统160,所述边车配置系统实施本公开的各方面,包括(例如)针对特定任务的虚拟机实例和边车实例的确定和配置。在一些实施方案中,边车配置系统160包括虚拟机配置单元162,所述虚拟机配置单元在用户经由前端120提交代码时可被叫用,以确定用于所提交的代码的虚拟机配置。如在下文更详细地描述,虚拟机配置单元162可在执行用户提交的代码之前、期间和/或之后分析用户的代码,并且识别(例如)操作系统的“钩”、输入和/或输出重导或其他修改,以促进虚拟机实例与各种边车之间的交互。在各种实施方案中,虚拟机配置单元162可分析用户的代码或处理用户请求以确定虚拟机配置。在其他实施方案中,按需代码执行系统110包括边车配置单元164,所述边车配置单元可识别将要供应的边车以及边车的任何配置以促进与虚拟机实例的交互。边车配置单元164可识别(例如)边车应执行的输入验证,并且可配置边车来执行所述输入验证。例如,用户提交的代码可按照特定格式处理输入数据,并且因此,可确定边车配置来验证输入数据处于所述格式。
按需代码执行系统还包括一个或多个工作者管理器140,所述一个或多个工作者管理器管理用于服务于传入的执行任务的调用的实例,并且管理用于为这些实例提供辅助功能的边车。在图1中绘示的示例中,每个工作者管理器140管理活动池140A,所述活动池是由一个或多个物理主机计算装置实施的当前指派给一个或多个用户的虚拟机实例的组(有时称为池)。虽然虚拟机实例在这里被描述为指派给特定用户,但在一些实施方案中,可将所述实例指派给一组用户,使得实例被绑到所述组用户并且所述组的任何成员可利用所述实例上的资源。例如,同一组中的用户可属于同一安全组(例如,基于他们的安全证书),使得已经在特定实例上的容器中执行了一个成员的任务之后在同一实例上的另一容器中执行另一成员的任务不会造成安全风险。类似地,工作者管理器140可根据一个或多个策略来指派实例和容器,所述一个或多个策略规定可在哪些容器中执行哪些请求以及可将哪些实例指派给哪些用户。示例性策略可指定将实例指派给共享同一账户的用户的集合(例如,考虑到访问由按需代码执行系统110提供的服务)。在一些实施方案中,与同一用户组相关联的请求可共享相同的容器(例如,如果与之相关联的用户代码是相同的)。在一些实施方案中,任务不在所述组的不同用户之间进行区分,而是简单地指示与任务相关联的用户所属的组。
一旦前端120已经成功地处理了执行任务的触发事件,前端120便将请求传递到工作者管理器140以执行所述任务。在一个实施方案中,每个前端120可与对应的工作者管理器140(例如,位于同一地点或地理上在前端120附近的工作者管理器140)相关联,并且因此,前端120可将大多数或所有请求传递到那个工作者管理器140。在另一实施方案中,前端120可包括位置选择器,所述位置选择器被配置为确定将执行请求传递到的工作者管理器140。在一个实施方案中,所述位置选择器可基于将调用散列并且将所述调用分发到基于散列值(例如,经由散列环)而选择的工作者管理器140来确定接收所述调用的工作者管理器140。本领域技术人员将明白用于在工作者管理器140之间分发调用的各种其他机制。根据本公开的实施方案,工作者管理器140可在供应虚拟机实例时获得虚拟机配置和/或边车配置。
如图1中所示,实例可具有操作系统(OS)、语言运行时和容器。所述容器可具有OS、运行时和与加载在上面的各种任务相对应的用户代码的单独的副本。在图1的示例中,由工作者管理器140管理的活动池140A包括虚拟机实例150。实例150包括操作系统150A和用户代码150B。。在一些实施方案中,工作者管理器140可维持活动池140A中的实例的列表。所述实例列表可进一步指定实例的配置(例如,OS、运行时、容器等)。在一些实施方案中,工作者管理器140可具有对加温池中的实例的列表(例如,包括实例的数目和类型)的访问权。在其他实施方案中,工作者管理器140在不知晓加温池中的虚拟机实例的情况下向加温池管理器请求计算能力。
活动池140A还可包括一个或多个边车虚拟机实例,诸如边车152和边车154。如图1中描绘,边车152包括OS 152A和代理152B,并且边车154包括OS 154A和代理154B。在一些实施方案中,边车152和154中的一者或两者可对应于来自边车库130的边车映像132或134的所供应的实例。如在下文更详细地描述,边车152和154可与执行用户代码150B的虚拟机实例150结合提供一个或多个辅助功能。
工作者管理器140还可包括边车生命周期管理单元142。如在下文更详细地描述,边车生命周期管理单元142可监视诸如虚拟机实例150的虚拟机实例的生命周期,并且可确保对应的边车实例(例如,边车152和154)的生命周期与它们附接到的虚拟机实例同步。如下文所描述,边车生命周期管理单元142可在虚拟机实例经受执行状态的改变时确定特定边车是否应先于、跟随或并行改变其执行状态,并且可致使边车相应地实施执行状态的改变。在一些实施方案中,边车生命周期管理单元142可以是活动池140A的部件。在其他实施方案中,边车生命周期管理单元142可位于活动池140A外部,并且促进添加、移除边车和/或对添加边车或从活动池140A移除边车的定时。
虽然一些功能性在本文一般参考按需代码执行系统110的单独的部件进行描述,但其他部件或部件的组合可另外或可替代地实施此类功能性。例如,工作者管理器140可操作以通过与本文参考OS配置系统160所描述的方式类似或相同的方式来配置虚拟机实例。本领域技术人员还将理解,本公开不限于在图1中描绘的实施方案,在所述实施方案中,一个虚拟机实例150与两个边车152和154通信。在各种实施方案中,任何数目个边车可与任何数目个虚拟机实例通信,包括在虚拟机实例与边车之间的一对多和多对多关系。
图2描绘操作以确定按需代码执行系统110内的边车配置的计算系统(引用为边车配置系统160)的通用架构。在图2中描绘的边车配置系统160的通用架构包括可用于实施本公开的各方面的计算机硬件和软件模块的布置。可使用物理电子装置实施硬件模块,如下文更详细地论述。边车配置系统160可包括比在图2中示出的元件更多(或更少)的元件。然而,并不需要示出所有这些一般常规元件以便提供授权的公开内容。另外,在图2中绘示的通用架构可用于实施在图1中绘示的其他部件中的一者或多者。如所绘示,边车配置系统160包括处理单元290、网络接口292、计算机可读介质驱动器294和输入/输出装置接口296,其全部可通过通信总线彼此通信。网络接口292可提供对一个或多个网络或计算系统的连接性。处理单元290因此可经由网络104从其他计算系统或服务接收信息和指令。处理单元290还可与存储器280通信,并且进一步经由输入/输出装置接口296提供用于任选的显示器(未示出)的输出信息。输入/输出装置接口296还可从任选的输入装置(未示出)接受输入。
存储器280可包含计算机程序指令(在一些实施方案中被分组为模块),处理单元290执行所述计算机程序指令以便实施本公开的一个或多个方面。存储器280一般包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久的、辅助的或非暂时性计算机可读介质。存储器280可存储操作系统284,所述操作系统提供计算机程序指令以供处理单元290用于对边车配置系统160的一般管理和操作中。存储器280还可包括用于实施本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器280包括用户界面单元282,所述用户界面单元例如经由安装在计算装置上的诸如浏览器或应用的导航和/或浏览界面而产生用于在计算装置上显示的用户界面(和/或用于所述用户界面的指令)。另外,存储器280可包括一个或多个数据存储库(未示出)和/或与所述一个或多个数据存储库通信,例如,以访问用户程序代码和/或库。
除了用户界面单元282之外和/或与所述用户界面单元组合,存储器280可包括可由处理单元290执行的虚拟机配置单元162和边车配置单元164。在一个实施方案中,虚拟机配置单元162和边车配置单元164单独地或共同地实施本公开的各个方面,例如,在按需代码执行系统110内生成或选择边车配置、确定虚拟机配置等,如在下文进一步描述。
虽然虚拟机配置单元162和边车配置单元164在图2中示出为边车配置系统160的部分,但在其他实施方案中,虚拟机配置单元162和边车配置单元164的全部或一部分可由按需代码执行系统110的其他部件和/或另一计算装置实施。例如,在本公开的某些实施方案中,与按需代码执行系统110通信的另一计算装置可包括与被绘示为边车配置系统160的部分的模块和部件类似地操作的若干模块或部件。
在一些实施方案中,边车配置系统160还可包括除了在图2中绘示的部件之外的部件。例如,存储器280还可包括用于向任务分配执行环境的实例分配单元、用以促进在执行环境内执行任务的用户代码执行单元或用于管理虚拟机实例内的容器的创建、准备和配置的容器管理器。
参考图3,描绘了用于确定和配置边车用于执行用户提交的代码的说明性交互。图3的交互开始于(1)处,其中用户装置102可生成在按需代码执行系统110上执行任务代码的请求。说明性地,用户可生成代码,所述代码的执行需要各种辅助功能,并且因此需要提供这些功能的一个或多个边车。在一些实施方案中,用户可生成或识别用户期望在执行任务代码期间需要的辅助功能的列表。在(2)处,用户装置102诸如通过使用API或前端120的其他界面将请求提交给前端120。所述请求可包括(例如)任务代码和边车或辅助功能的列表。在(3)处,前端120验证所提交的任务代码。验证可包括(例如)验证任务代码可由按需代码执行系统110执行。
在(4)处,前端120将请求传输到边车配置系统160以确定用于任务的一组边车。其后,在(5)处,边车配置系统160确定合适的一组边车。说明性地,边车配置系统160的虚拟机配置单元162可分析所述请求以识别将促进执行任务代码的一组边车虚拟机实例。边车配置单元164随后可配置虚拟机实例和在任务代码执行期间将需要的边车。例如,边车配置系统160可确定任务代码将在执行期间需要输入验证。虚拟机配置单元162因此可配置虚拟机实例以从边车接收经过处理的输入,并且边车配置单元164可识别和配置边车以执行所需的输入验证。作为另一示例,边车配置系统160可确定用户希望对任务代码的执行进行剖析以确定是否以及如何可优化代码。虚拟机配置单元162因此可配置虚拟机实例以在任务执行期间输出剖析数据,并且边车配置单元164可配置边车,所述边车聚合并报告所述剖析数据。
在(6)处,边车配置系统可将所确定的边车配置和经过验证的任务代码存储在诸如数据存储装置108的存储装置中。按需代码执行系统110因此可减少在接收到执行任务代码的其他请求时分析代码并且确定边车配置所花费的时间,如在下文更详细地论述。在一些实施方案中,按需代码执行系统110可基于每个请求来确定边车。例如,所述请求可包含指示在执行任务代码时是否包括特定边车的调试旗标或其他信息。
在一些实施方案中,可修改上文描述的操作的排序和实施,或者可通过按需代码执行系统110的额外的或替代性元件来执行这些交互。例如,在一个实施方案中,可组合虚拟机配置单元162和边车配置单元164,并且由这些单元作出的确定可共同地被视为包括执行任务代码的虚拟机的配置的“边车配置”。作为另一示例,在另一实施方案中,用户装置102可请求用于所提交的任务代码的特定边车配置,并且边车配置系统160可验证、处理和/或实施此请求。
将参考图4描述用于与在按需代码执行系统110上执行任务结合利用预定边车配置的说明性交互。在(1)处,用户装置102可请求任务执行。在一些实施方案中,如上文描述,前端120可在未接收到请求的情况下发起任务执行,在那种情况下,可省略(1)处的交互。
在(2)处,前端120将用于执行的任务分发到工作者管理器140。在分发任务执行之前,前端120可进行许多额外的交互中的任一者,诸如将请求排队、验证请求等,如在上文以引用的方式并入的’556专利内更详细地描述。
在(3)处,工作者管理器140针对所述任务请求边车配置。在一些实施方案中,如上文描述,当提交任务的代码进行验证时可确定边车配置(例如,通过执行在图3中绘示的交互)。在其他实施方案中,当提交任务的代码进行验证时,用户可提供边车配置。在其他实施方案中,可基于每个请求来确定边车配置。在(4)处,工作者管理器140从数据存储装置108接收先前确定(或先前指定)的边车配置。
其后,在(5)处,工作者管理器140根据所接收的边车配置来配置和执行虚拟机实例和边车。在一些实施方案中,如上文描述,工作者管理器140可从诸如图1的边车库130的库获得边车映像,并且根据配置来配置这些映像。在其他实施方案中,工作者管理器140可从加温池获得完全或部分地预先配置的边车,并且可在需要时执行额外的配置(例如,以致使边车与特定虚拟机实例通信)。在其他实施方案中,工作者管理器140可从加温池获得多个虚拟机实例,并且可配置一些实例来执行任务代码并且将其他实例配置为边车(例如,通过向边车实例供应执行辅助功能的代理)。
将参考图5描述用于结合“主要”虚拟机实例(例如,执行任务代码的虚拟机实例)的生命周期来管理边车的生命周期的说明性交互。在(1)处,边车生命周期管理单元142监视虚拟机实例150的执行。说明性地,边车生命周期管理单元142可监视输入、输出、资源利用率、由虚拟机实例150生成的度量、由工作者管理器140生成的度量或与虚拟机实例150的状态相关的其他信息。
在(2)处,边车生命周期管理单元142检测到虚拟机实例150即将经历执行状态的改变。执行状态的改变可包括(例如):供应虚拟机实例150;开始任务代码的执行;暂停任务代码的执行;重新开始任务代码的执行;终止任务代码的执行;暂停虚拟机实例150;重新开始虚拟机实例150;取消供应虚拟机实例150等。终止任务代码的执行可包括正常终止(例如,任务代码执行完成)和异常终止(例如,由于错误、因为用户请求了终止、因为从操作系统接收到信号等,所以任务代码中止执行)两者。在一些实施方案中,边车生命周期管理单元142在执行状态改变发生之前检测到未决改变。例如,边车生命周期管理单元142可接收到以下通知:工作者管理器140正在供应或即将供应虚拟机实例150。在其他实施方案中,边车生命周期管理单元142可在所述改变发生时或之后检测到所述改变。例如,边车生命周期管理单元142可检测到:因为任务代码已经处理了所有可用的输入数据,因为已经消耗了阈值量的计算资源,或因为任务代码已经在错误消息下退出,所以虚拟机实例已经暂停或终止任务代码的执行。
其后,在(3)处,边车生命周期管理单元142确定与虚拟机实例150相关联的边车(诸如边车152和154)的执行状态应发生什么改变。可基于多个因素来确定边车的执行状态的改变,所述因素诸如为与所述边车相关联的虚拟机实例的数目、由边车执行的辅助功能等。例如,边车152可为虚拟机实例150提供输出验证。边车生命周期管理单元142因此可在虚拟机实例150进入不活动状态时确定边车152可进入不活动状态,因为将不需要输出验证功能。作为另一示例,边车154可向虚拟机实例150和可代表同一用户执行相同的任务代码或不同的任务代码的另一虚拟机实例两者提供控制平面功能。边车生命周期管理单元142因此可在边车154支持的两个虚拟机实例都已经进入取消供应状态的情况下确定应仅取消供应所述边车。
在一些实施方案中,边车生命周期管理单元142可确定边车和虚拟机实例150应改变他们的执行状态所按照的次序,并且可致使执行状态按照所确定的次序改变。例如,边车154可为虚拟机实例150提供记录或调试功能。边车生命周期管理单元142因此可仅在虚拟机实例150进入暂停的执行状态之后确定边车154应进入暂停的执行状态,并且应在虚拟机实例150重新开始执行之前重新开始执行,以便准许边车154维持记录或调试信息的完整记录。作为另一示例,边车152可在将输入数据发送到虚拟机实例150之前处理并验证输入数据,并且因此在边车152开始将数据发送到虚拟机实例150之前,所述虚拟机实例必须是活动的。在一些实施方案中,边车生命周期管理单元142可能不具有对虚拟机实例150的执行状态的改变时序的控制,并且因此可基于虚拟机实例150的执行状态的改变时序来安排并优先化边车执行状态的改变。
在图5中绘示的示例中,边车生命周期管理单元142确定边车152的执行状态的改变应先于虚拟机实例150的执行状态的改变,并且边车154的执行状态的改变应跟随虚拟机实例150的改变。因此,边车生命周期管理单元142在(4)处致使边车152改变其执行状态。在各种实施方案中,边车生命周期管理单元142可通过向边车152、工作者管理器140或按需代码执行系统110的另一部件发送指令来引起执行状态的改变。在(5)处,边车152(或另一部件)实施执行状态的改变。
其后,在(6)处,虚拟机实例150实施其执行状态的改变。在一些实施方案中,工作者管理器140例如通过供应或取消供应虚拟机实例150来实施虚拟机实例150执行状态的改变。在其他实施方案中,虚拟机实例150可实施所述改变。例如,虚拟机实例150可开始、结束、暂停或重新开始任务代码的执行。
在(7)处,边车生命周期管理单元142通过与在(4)处的交互类似的方式引起边车154的执行状态的改变。其后,在(8)处,边车154(或按需代码执行系统110的另一部件)实施边车154的执行状态的改变。
在一些实施方案中,可将在(4)、(6)和(7)处的交互中的一者或多者合并为单个交互。例如,边车生命周期管理单元142可向工作者管理器140提供用于改变边车152、虚拟机实例150和边车154的执行状态的时间表或排序列表,并且工作者管理器140可按照所指示的次序实施执行状态改变。作为另一示例,边车生命周期管理单元142可向工作者管理器140指示边车152应在虚拟机实例150之前重新开始执行,并且边车154应在虚拟机实例150重新开始执行之后重新开始。另外,如上文所论述,在一些实施方案中,在(2)处的交互可能会检测到正在发生或已经发生的改变,而不是检测到即将发生的改变。
图6描绘在虚拟机实例604与边车606、608和610之间的交互的说明性示例。在所说明的示例中,在(1)处,向输入验证边车606提供外部输入。所述外部输入可从前端120或在一些实施方案中从另一输入来源接收。在(2)处,输入验证边车606可验证所述外部输入。例如,输入验证边车606可清洁所述外部输入(例如,通过插入转义字符或移除特殊字符)或验证所述外部输入处于任务代码所预期的格式。
其后,在(3)处,输入验证边车606可向虚拟机实例604提供经过验证的输入。在一些实施方案中,虚拟机实例604可被配置为从输入验证边车606接收输入。在其他实施方案中,边车606可被配置为将经过处理的输入传输到虚拟机实例604,并且在虚拟机实例604上不执行特殊配置:而是,在虚拟机实例604上执行的任务代码简单地处理其接收的任何输入,并且仅从边车606接收输入的配置对于虚拟机实例604来说是透明的。在其他实施方案中,输入验证边车606和虚拟机实例604可都不配置为彼此知晓,并且可通过工作者管理器140来处置经过验证的数据从边车606到虚拟机实例604的传送。
在(4)处,虚拟机实例604可处理经过验证的输入。说明性地,虚拟机实例604可通过使用经过验证的输入执行任务代码来处理经过验证的输入,并且可生成对应的输出。虚拟机实例604还可在(5)处提供对信息的访问,这允许剖析边车608对任务代码进行剖析。例如,虚拟机实例604可生成日志文件、度量、堆栈踪迹、存储器转储或与任务代码的执行相关的其他数据。虚拟机实例604随后可传输所述数据;提供用于访问所述数据的API;允许剖析边车608读取文件系统或存储器位置;或以其他方式授予对剖析信息的访问。在(6)处,剖析边车可获得和/或接收剖析信息,并且处理所述剖析信息以对虚拟机实例604和/或在虚拟机实例604上执行的任务代码进行剖析。
在(7)处,虚拟机实例604可将在(4)处生成的输出提供给输出验证边车610,所述输出验证边车在(8)处可验证输出。例如,输出验证边车610可对输出进行后处理;将输出转换为特定格式;验证输出落在指定范围内;或执行其他验证。
在(9)处,在一些实施方案中,输出验证边车610可将经过验证的输出提供到前端120或另一部件。在一些实施方案中,可重复在(1)–(9)处的交互,直到没有其他输入或者用户发出停止执行任务代码的请求为止。另外,可按照不同次序执行在图6中描绘的示例性交互,或者可执行更多或更少的交互。例如,在(5)和(6)处的交互可省略,或者可在(4)处的交互之前(或与其同时)执行。作为另一示例,在一些实施方案中,可提供由输入验证边车606产生的经过验证的输入作为另一输入验证边车的输入,所述另一输入验证边车可在将所得的数据发送到虚拟机实例604之前执行进一步的验证。本领域技术人员因此将理解,边车的许多其他组合和布置在本公开的范围内。
参考图7,将描述用于确定边车配置用于在按需代码执行系统110上执行任务的一个说明性例程700。例程700可(例如)由图1的边车配置系统160执行。在一个实施方案中,结合在按需代码执行系统110上创建任务来执行例程700(例如,框702-706)。在另一实施方案中,可结合在按需代码执行系统110上执行任务来执行例程700的全部或部分(例如,框708-716)。可另外或可替代地在其他时间诸如周期性地(例如,每天、每周、每月一次等)或基于检测到执行度量或资源利用率度量下降到阈值之外来执行例程700的全部或部分。
例程700开始于框702处,其中边车配置系统160获得任务(例如,由用户提交)的代码。在一个实施方案中,任务的代码被表示为代码对象,诸如包括任务的源代码的压缩文件。例程700随后继续进行到框704,其中边车配置系统160确定用于任务的边车配置。如上文描述,在一些实施方案中,边车配置系统160可基于所提交的任务代码来确定边车配置。在其他实施方案中,边车配置系统160可基于用户输入(诸如对任务代码的剖析执行或者验证提供给任务代码的输入的请求)来确定边车配置。在一些实施方案中,按需代码执行系统110的前端120或另一部件可呈现使用户能够选择所要的边车的用户界面。
在框706处,边车配置系统160可将任务代码和边车配置存储在诸如数据存储服务108的数据存储区中。在一些实施方案中,如上文描述,边车配置可包括执行任务代码的虚拟机实例的配置。在其他实施方案中,边车配置可包括由工作者管理器140利用的指令。
其后,在框708处,可接收执行任务代码的请求。所述请求可由(例如)前端120、工作者管理器140或按需代码执行系统110的另一部件接收。在一些实施方案中,如上文描述,可在未接收到请求的情况下执行任务代码,在那种情况下可省略框708。
在框710处,工作者管理器140供应虚拟机实例以执行任务代码。在一些实施方案中,工作者管理器140根据边车配置来配置虚拟机实例。例如,工作者管理器140可配置虚拟机实例以从边车接受输入;将输出提供到边车;提供对虚拟机的内部(例如,堆栈或存储器内容)的访问;或以其他方式配置虚拟机实例以与边车一起工作。在其他实施方案中,可不配置虚拟机实例,并且与边车的交互对于虚拟机实例来说可为透明的。
在框712处,工作者管理器140根据边车配置来供应一个或多个边车。在一些实施方案中,如上文描述,工作者管理器140从诸如边车库130的库获得边车映像或代理,并且使用这些映像或代理来供应和配置边车。在其他实施方案中,所述边车配置可包括用于根据用户规范供应边车的指令,并且工作者管理器140可相应地执行这些指令以供应边车。
在框714处,工作者管理器140执行虚拟机实例和边车实例。在一些实施方案中,工作者管理器140进行到通过执行诸如在下文参考图8所描述的例程800的例程来管理虚拟机实例和边车实例的生命周期。在其他实施方案中,例程700结束于所供应的虚拟机实例和边车的执行。
参考图8,将描述用于管理边车生命周期的说明性例程800。例程800可(例如)由图1的边车生命周期管理单元142执行。例程800开始于框802处,其中边车生命周期管理单元142(或在一些实施方案中,工作者管理器140或按需代码执行系统110的另一部件)监视虚拟机实例的执行。在决策框804处,确定虚拟机实例的执行状态是否存在未决改变。在一些实施方案中,如上文所论述,决策框804处的确定还可包括虚拟机实例的执行状态的改变是否已经发生或正在进行中。如果未检测到虚拟机实例的执行状态的改变,则例程800分叉到框802并且继续监视。
如果决策框804处的确定是虚拟机实例将改变其执行状态,则例程800分叉到框806,其中可选择未经处理的边车。在框808处,边车生命周期管理单元142可确定选定的边车是否应改变其执行状态,并且如果是,则确定选定的边车相对于虚拟机实例应何时改变其执行状态。例如,边车生命周期管理单元142可确定边车应在虚拟机实例之前、与虚拟机实例一起或在虚拟机实例之后改变其执行状态。在一些实施方案中,边车生命周期管理单元142可确定选定边车的执行状态相对于其他边车进行改变的时序。例如,边车生命周期管理单元142可生成边车和虚拟机实例状态改变的排序列表,并且可将选定边车置于所述排序列表上。在其他实施方案中,边车生命周期管理单元142可确定选定边车不需要其执行状态的改变,或者选定边车将改变为与虚拟机实例不同的执行状态。例如,边车生命周期管理单元142可确定在虚拟机实例暂停任务代码的执行之后应取消供应边车,或者在虚拟机实例重新开始任务代码的执行之前应供应新的边车。在一个实施方案中,边车生命周期管理单元142可确保针对虚拟机实例内的任务代码的每个执行创建新的边车虚拟机。说明性地,在边车虚拟机提供安全功能的情况下,为代码的每个执行再生新的边车可确保边车的功能不会例如由于在过去的代码执行期间将恶意数据传递到边车虚拟机而受到损害。
在决策框810处,边车生命周期管理单元142可确定例程800是否已经处理了所有边车。如果否,则例程800分叉到框806,其中可选择剩余的未经处理的边车中的一者,并且例程800随后穿过框806-810进行迭代,直到已经处理了所有边车为止。例程800随后分叉到框812,其中边车生命周期管理单元142致使虚拟机实例和边车按照所确定的次序改变执行状态。在一些实施方案中,所确定的次序可与虚拟机实例的改变相关,并且可能未指定边车之间的特定次序。例如,边车生命周期管理单元142可确定边车A和B两者应在虚拟机实例改变执行状态之前改变他们的执行状态,但边车A的执行状态改变在边车B之前或之后并不重要。在其他实施方案中,边车生命周期管理单元142可确定一个边车应在另一边车改变执行状态之前改变其执行状态,并且相应地改变执行状态。
上文描述的例程的框在本公开的实施方案中可变化。例如,在任一例程的一些实现方式中,边车配置系统160可被配置为实施额外的功能性,诸如生成并存储额外的边车。因此,根据各种实施方案,所述例程可包括额外的框,或者可重新布置例程的框。
可在由一个或多个计算机或处理器执行的软件代码模块中并且完全经由所述软件代码模块自动地体现上文描述的所有方法和过程。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其他计算机存储装置中。可以可替代地在专用计算机硬件中体现所述方法中的一些或全部。
除非另外特别说明,否则如“能够”、“可以”、“可能”或“可”等的条件语言在上下文中应理解为通常使用的情况以呈现:尽管其它实施方案不包括,但某些实施方案包括某些特征、元件和/或步骤。因此,此类条件语言一般无意暗示一个或多个实施方案无论如何需要特征、元件和/或步骤,或者一个或多个实施方案一定包括用于在具有或不具有用户输入或提示的情况下决定是否在任何特定实施方案中包括或将执行这些特征、元件和/或步骤的逻辑。
除非另外特别说明,否则诸如短语“X、Y或Z中的至少一者”的连接性语言在上下文另外被理解为一般使用的情况以呈现项目、项等可以是X、Y或Z或其任何组合(例如,X、Y和/或Z)。因此,此类连接性语言一般无意并且应不暗示某些实施方案需要存在X中的至少一者、Y中的至少一者或Z中的至少一者。
除非另外特别说明,否则诸如‘一(a)’或‘一(an)’的冠词一般应理解为包括一个或多个所描述的物品。因此,诸如“被配置为……的装置”的短语意在包括一个或多个所述装置。此类一个或多个所述装置还可共同地被配置为执行所陈述的叙述。例如,“被配置为执行叙述A、B和C的处理器”可包括与被配置为执行叙述B和C的第二处理器结合工作的被配置为执行叙述A的第一处理器。
在本文描述和/或在附图中描绘的流程图中的任何例程描述、元件或框应理解为潜在地表示包括用于实施所述例程中的特定逻辑功能或元件的一个或多个可执行指令的代码的模块、段或部分。本领域技术人员将理解,在本文描述的实施方案的范围内包括了替代性实现方式,其中元件或功能可删除或者按照不同于所示出或论述的次序执行,包括基本上同步地执行或以相反次序执行,这取决于所涉及的功能性。
应该强调的是,可对上述实施方案作出许多变化和修改,其元件将理解为在其他可接受的示例之间。希望本文中的所有此类修改和变化包括于本公开的范围内且受到所附权利要求保护。
可鉴于以下条款来描述本公开的实施方案的示例:
条款1.一种系统,其包括:物理数据存储区,所述物理数据存储区存储配置信息;以及计算装置,所述计算装置配置有可执行指令:接收在按需代码执行系统上执行用户提交的代码的请求;至少部分地基于所述请求来确定多个虚拟机实例,所述多个虚拟机实例包括用以执行所述用户提交的代码的第一虚拟机实例和用以执行辅助功能的第二虚拟机实例;致使所述第一虚拟机实例根据配置来执行所述用户提交的代码;致使所述第二虚拟机实例根据配置来执行所述辅助功能;监视所述第一虚拟机实例上的所述用户提交的代码的执行以检测所述第一虚拟机实例的执行状态的未决改变;至少部分地基于所述第一虚拟机实例的执行状态的所述未决改变来确定所述第二虚拟机实例的执行状态的改变;确定所述第一虚拟机实例和所述第二虚拟机实例的执行状态改变的次序;以及致使所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态按照所确定的次序改变。
条款2.根据条款1所述的系统,其中所述第一虚拟机实例的执行状态的所述未决改变包括以下各项中的一者或多者:供应所述第一虚拟机实例;开始所述用户提交的代码的执行;暂停所述第一虚拟机实例;暂停所述用户提交的代码的执行;重新开始所述第一虚拟机实例;重新开始所述用户提交的代码的执行;终止所述用户提交的代码的执行;或取消供应所述第一虚拟机实例。
条款3.根据条款1所述的系统,其中所述计算装置还被配置为供应所述第一虚拟机实例和所述第二虚拟机实例。
条款4.根据条款1所述的系统,其中用于改变所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态的所述次序是至少部分地基于由所述第二虚拟机实例执行的所述辅助功能来确定。
条款5.根据条款1所述的系统,其中所述辅助功能包括以下各项中的一者或多者:封装、记录、追踪、调试、扫描、剖析、验证输入或验证输出。
条款6.一种计算机实施的方法,其包括:接收在按需代码执行系统上执行用户提交的代码的请求;获得与所述用户提交的代码相关联的配置信息,所述配置信息至少指定被配置为执行所述用户提交的代码的第一虚拟机实例和被配置为执行辅助功能的第二虚拟机实例;致使所述第一虚拟机实例根据所述配置信息来执行所述用户提交的代码;致使所述第二虚拟机实例根据所述配置信息来执行所述辅助功能;至少部分地基于所述第一虚拟机实例上的所述用户提交的代码的执行来识别所述第一虚拟机实例的执行状态的未决改变;至少部分地基于所述第一虚拟机实例的执行状态的所述未决改变来确定所述第二虚拟机实例的执行状态的改变;确定至少所述第一虚拟机实例和所述第二虚拟机实例的执行状态改变的次序;以及致使所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态按照所确定的次序改变。
条款7.根据条款6所述的计算机实施的方法,其还包括确定所述第一虚拟机实例和所述第二虚拟机实例的供应次序,其中致使所述第一虚拟机实例执行所述用户提交的代码以及致使所述第二虚拟机实例执行所述辅助功能是根据所述供应次序。
条款8.根据条款6所述的计算机实施的方法,其中用于改变所述执行状态的所述次序指定所述第二虚拟机实例的执行状态的所述改变必须先于所述第一虚拟机实例的执行状态的所述未决改变。
条款9.根据条款6所述的计算机实施的方法,其还包括引起所述第一虚拟机实例的执行状态的所述未决改变。
条款10.根据条款6所述的计算机实施的方法,其中所述配置信息还至少指定被配置为执行第二辅助功能的第三虚拟机实例,并且其中执行状态改变的所述所确定的次序还包括所述第三虚拟机实例的执行状态改变。
条款11.根据条款10所述的计算机实施的方法,其还包括致使所述第一虚拟机实例、所述第二虚拟机实例和所述第三虚拟机实例的所述执行状态改变按照所述所确定的次序发生。
条款12.根据条款6所述的计算机实施的方法,其还包括配置所述第一虚拟机实例以与所述第二虚拟机实例通信。
条款13.根据条款12所述的计算机实施的方法,其中配置所述第一虚拟机实例以与所述第二虚拟机实例通信包括以下各项中的一者或多者:重新引导输入;重新引导输出;或使得能够访问性能信息。
条款14.根据条款6所述的计算机实施的方法,其中所述第二虚拟机实例被配置为针对与指定用户相关联的多个虚拟机实例执行所述辅助功能。
条款15.根据条款14所述的计算机实施的方法,其中所述多个虚拟机实例中的每一者与不同的用户提交的代码相关联。
条款16.非暂时性计算机可读介质,其包括计算机可执行指令,所述计算机可执行指令当在按需代码执行系统上执行时致使所述按需代码执行系统:获得与能够在按需代码执行系统上执行的用户提交的代码相关联的配置信息,所述配置信息包括与第一虚拟机实例相关联的第一配置和与第二虚拟机实例相关联的第二配置;致使所述第一虚拟机实例根据所述第一配置来执行所述用户提交的代码;致使所述第二虚拟机实例根据所述第二配置来执行辅助功能;至少部分地基于所述第一虚拟机实例的执行状态的未决改变来确定所述第二虚拟机实例的执行状态的改变;以及致使所述第一虚拟机实例和所述第二虚拟机实例的执行状态按照至少部分地基于所述配置信息确定的次序进行改变。
条款17.根据条款16所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统接收执行所述用户提交的代码的请求。
条款18.根据条款16所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统识别执行状态的所述未决改变。
条款19.根据条款16所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统将所述第二虚拟机实例实例化。
条款20.根据条款16所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统从多个预先配置的虚拟机实例中选择所述第二虚拟机实例。
条款21.一种系统,其包括:物理数据存储区,所述物理数据存储区存储配置信息;以及计算装置,所述计算装置配置有可执行指令以:接收在按需代码执行系统上执行任务的请求,所述请求包括用户提交的代码并且识别将要由所述用户提交的代码处理的未经处理的数据;至少部分地基于所述请求来确定将需要第一虚拟机实例来执行所述用户提交的代码并且将需要第二虚拟机实例来预处理所述未经处理的数据;供应第一虚拟机;配置所述第一虚拟机实例以:从第二虚拟机接收经过处理的数据;以及用所述经过处理的数据执行所述用户提交的代码;供应所述第二虚拟机实例;配置所述第二虚拟机实例以:处理所述未经处理的数据以形成所述经过处理的数据;以及将所述经过处理的数据传输到所述第一虚拟机实例;确定所述用户提交的代码已经在所述第一虚拟机实例上完成执行;以及响应于所述确定所述用户提交的代码已经完成执行,取消供应所述第一虚拟机实例和所述第二虚拟机实例。
条款22.根据条款21所述的系统,其中所述第二虚拟机实例执行以下各项中的至少一者:验证、清洁、预处理或扫描所述未经处理的数据以形成所述经过处理的数据。
条款23.根据条款21所述的系统,其中所述计算装置还被配置为致使所述第一虚拟机实例将执行所述用户提交的代码的结果与所述经过处理的数据传输到第三虚拟机实例。
条款24.根据条款23所述的系统,其中所述计算装置还被配置为致使所述第三虚拟机实例执行以下各项中的至少一者:验证、清洁、后处理或扫描所述结果。
条款25.根据条款23所述的系统,其中所述计算装置还被配置为响应于所述确定所述用户提交的代码已经完成执行而取消供应所述第三虚拟机实例。
条款26.一种计算机实施的方法,其包括:接收在按需代码执行系统上执行用户提交的代码的请求;至少部分地基于所述请求来获得识别多个虚拟机实例的信息;供应所述多个虚拟机实例中的第一虚拟机实例;配置所述第一虚拟机实例以:执行所述用户提交的代码;以及将执行所述用户提交的代码的结果传输到第二虚拟机实例;供应所述多个虚拟机实例中的第二虚拟机实例;配置所述第二虚拟机实例以处理来自所述第一虚拟机实例的所述结果以形成经过处理的结果;以及响应于确定所述第一虚拟机实例已经结束所述用户提交的代码的执行,取消供应所述第二虚拟机实例。
条款27.根据条款26所述的计算机实施的方法,其中取消供应所述第二虚拟机实例还响应于确定所述第二虚拟机实例已经完成处理所述结果。
条款28.根据条款26所述的计算机实施的方法,其还包括响应于所述确定所述第一虚拟机实例已经结束所述用户提交的代码的执行而取消供应所述第一虚拟机实例。
条款29.根据条款26所述的计算机实施的方法,其还包括致使所述第一虚拟机实例从所述多个虚拟机实例中的第三虚拟机实例接收经过处理的数据,其中用所述经过处理的数据执行所述用户提交的代码。
条款30.根据条款29所述的计算机实施的方法,其还包括供应所述第三虚拟机实例。
条款31.根据条款29所述的计算机实施的方法,其中所述第三虚拟机实例是预先存在的虚拟机实例,所述方法还包括配置所述第三虚拟机实例以将所述经过处理的数据传输到所述第一虚拟机实例。
条款32.根据条款31所述的计算机实施的方法,其还包括响应于所述确定所述第一虚拟机实例已经结束所述用户提交的代码的执行而取消配置第三虚拟机。
条款33.根据条款29所述的计算机实施的方法,其还包括响应于以下各项中的一者或多者而取消供应所述第三虚拟机实例:确定所述第一虚拟机实例已经结束所述用户提交的代码的执行;或确定所述第三虚拟机实例已经传输所有所述经过处理的数据。
条款34.根据条款26所述的计算机实施的方法,其还包括至少部分地基于所述请求来确定识别多个虚拟机的信息。
条款35.非暂时性计算机可读介质,其包括计算机可执行指令,所述计算机可执行指令当在按需代码执行系统上执行时致使所述按需代码执行系统:接收执行用户提交的代码的请求;至少部分地基于所述请求来获得识别多个虚拟机实例的配置信息;根据所述配置信息来配置所述多个虚拟机实例中的第一虚拟机实例以执行所述用户提交的代码;根据所述配置信息来配置所述多个虚拟机实例中的第二虚拟机实例以执行以下至少一者:将输入传输到所述第一虚拟机实例或从所述第一虚拟机实例接收输出;以及响应于确定所述第一虚拟机实例已经结束所述用户提交的代码的执行,取消配置所述第二虚拟机实例。
条款36.根据条款35所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统供应所述第一虚拟机实例。
条款37.根据条款35所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统确定所述第一虚拟机实例已经结束所述用户提交的代码的执行。
条款38.根据条款35所述的非暂时性计算机可读介质,其中所述指令致使所述按需代码执行系统配置所述第二虚拟机实例以将输入传输到所述第一虚拟机实例以及从所述第一虚拟机实例接收输出。
条款39.根据条款35所述的非暂时性计算机可读介质,其中响应于确定所述第一虚拟机实例已经结束所述用户提交的代码的执行,所述第二虚拟机实例被复位到默认配置。
条款40.根据条款35所述的非暂时性计算机可读介质,其中响应于确定所述第一虚拟机实例已经结束所述用户提交的代码的执行,所述第一虚拟机实例被复位到默认配置。
Claims (15)
1.一种系统,其包括:
物理数据存储区,所述物理数据存储区存储配置信息;以及
计算装置,所述计算装置配置有可执行指令以:
接收在按需代码执行系统上执行用户提交的代码的请求;
至少部分地基于所述请求来确定多个虚拟机实例,所述多个虚拟机实例包括用以执行所述用户提交的代码的第一虚拟机实例和用以执行辅助功能的第二虚拟机实例;
致使所述第一虚拟机实例根据配置来执行所述用户提交的代码;
致使所述第二虚拟机实例根据配置来执行所述辅助功能;
监视所述第一虚拟机实例上的所述用户提交的代码的执行以检测所述第一虚拟机实例的执行状态的未决改变;
至少部分地`一虚拟机实例的执行状态的所述未决改变来确定所述第二虚拟机实例的执行状态的改变;
确定所述第一虚拟机实例和所述第二虚拟机实例的执行状态改变的次序;以及
致使所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态按照所确定的次序改变。
2.如权利要求1所述的系统,其中所述第一虚拟机实例的执行状态的所述未决改变包括以下各项中的一者或多者:供应所述第一虚拟机实例;开始所述用户提交的代码的执行;暂停所述第一虚拟机实例;暂停所述用户提交的代码的执行;重新开始所述第一虚拟机实例;重新开始所述用户提交的代码的执行;终止所述用户提交的代码的执行;或取消供应所述第一虚拟机实例。
3.如权利要求1所述的系统,其中用于改变所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态的所述次序是至少部分地基于由所述第二虚拟机实例执行的所述辅助功能来确定。
4.如权利要求1所述的系统,其中所述辅助功能包括以下各项中的一者或多者:封装、记录、追踪、调试、扫描、剖析、验证输入或验证输出。
5.一种计算机实施的方法,其包括:
接收在按需代码执行系统上执行用户提交的代码的请求;
获得与所述用户提交的代码相关联的配置信息,所述配置信息至少指定被配置为执行所述用户提交的代码的第一虚拟机实例和被配置为执行辅助功能的第二虚拟机实例;
致使所述第一虚拟机实例根据所述配置信息来执行所述用户提交的代码;
致使所述第二虚拟机实例根据所述配置信息来执行所述辅助功能;
至少部分地基于所述第一虚拟机实例上的所述用户提交的代码的执行来识别所述第一虚拟机实例的执行状态的未决改变;
至少部分地基于所述第一虚拟机实例的执行状态的所述未决改变来确定所述第二虚拟机实例的执行状态的改变;
确定至少所述第一虚拟机实例和所述第二虚拟机实例的执行状态改变的次序;以及
致使所述第一虚拟机实例和所述第二虚拟机实例的所述执行状态按照所确定的次序改变。
6.如权利要求5所述的计算机实施的方法,其还包括确定所述第一虚拟机实例和所述第二虚拟机实例的供应次序,其中致使所述第一虚拟机实例执行所述用户提交的代码以及致使所述第二虚拟机实例执行所述辅助功能是根据所述供应次序。
7.如权利要求5所述的计算机实施的方法,其中用于改变所述执行状态的所述次序指定所述第二虚拟机实例的执行状态的所述改变必须先于所述第一虚拟机实例的执行状态的所述未决改变。
8.如权利要求5所述的计算机实施的方法,其还包括引起所述第一虚拟机实例的执行状态的所述未决改变。
9.如权利要求5所述的计算机实施的方法,其中所述配置信息还至少指定被配置为执行第二辅助功能的第三虚拟机实例,并且其中执行状态改变的所述所确定的次序还包括所述第三虚拟机实例的执行状态改变。
10.如权利要求5所述的计算机实施的方法,其还包括配置所述第一虚拟机实例以与所述第二虚拟机实例通信,其中配置所述第一虚拟机实例以与所述第二虚拟机实例通信包括以下各项中的一者或多者:重新引导输入;重新引导输出;或使得能够访问性能信息。
11.如权利要求5所述的计算机实施的方法,其中所述第二虚拟机实例被配置为针对与指定用户相关联的多个虚拟机实例执行所述辅助功能,并且其中所述多个虚拟机实例中的每一者与不同的用户提交的代码相关联。
12.非暂时性计算机可读介质,其包括计算机可执行指令,所述计算机可执行指令当在按需代码执行系统上执行时致使所述按需代码执行系统:
获得与能够在按需代码执行系统上执行的用户提交的代码相关联的配置信息,所述配置信息包括与第一虚拟机实例相关联的第一配置和与第二虚拟机实例相关联的第二配置;
致使所述第一虚拟机实例根据所述第一配置来执行所述用户提交的代码;
致使所述第二虚拟机实例根据所述第二配置来执行辅助功能;
至少部分地基于所述第一虚拟机实例的执行状态的未决改变来确定所述第二虚拟机实例的执行状态的改变;以及
致使所述第一虚拟机实例和所述第二虚拟机实例的执行状态按照至少部分地基于所述配置信息确定的次序进行改变。
13.如权利要求12所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统接收执行所述用户提交的代码的请求。
14.如权利要求12所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统将所述第二虚拟机实例实例化。
15.如权利要求12所述的非暂时性计算机可读介质,其中所述指令还致使所述按需代码执行系统从多个预先配置的虚拟机实例中选择所述第二虚拟机实例。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/017,954 US10853115B2 (en) | 2018-06-25 | 2018-06-25 | Execution of auxiliary functions in an on-demand network code execution system |
US16/017,970 US10817331B2 (en) | 2018-06-25 | 2018-06-25 | Execution of auxiliary functions in an on-demand network code execution system |
US16/017,970 | 2018-06-25 | ||
US16/017,954 | 2018-06-25 | ||
PCT/US2019/038520 WO2020005764A1 (en) | 2018-06-25 | 2019-06-21 | Execution of auxiliary functions in an on-demand network code execution system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112513813A true CN112513813A (zh) | 2021-03-16 |
CN112513813B CN112513813B (zh) | 2024-10-08 |
Family
ID=67185758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980039918.8A Active CN112513813B (zh) | 2018-06-25 | 2019-06-21 | 在按需网络代码执行系统中执行辅助功能 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3811209A1 (zh) |
JP (1) | JP7197612B2 (zh) |
CN (1) | CN112513813B (zh) |
WO (1) | WO2020005764A1 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US11263034B2 (en) | 2014-09-30 | 2022-03-01 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US11354169B2 (en) | 2016-06-29 | 2022-06-07 | Amazon Technologies, Inc. | Adjusting variable limit on concurrent code executions |
US11360793B2 (en) | 2015-02-04 | 2022-06-14 | Amazon Technologies, Inc. | Stateful virtual compute system |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11461124B2 (en) | 2015-02-04 | 2022-10-04 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US11467890B2 (en) | 2014-09-30 | 2022-10-11 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11561811B2 (en) | 2014-09-30 | 2023-01-24 | Amazon Technologies, Inc. | Threading as a service |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11714675B2 (en) | 2019-06-20 | 2023-08-01 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11836516B2 (en) | 2018-07-25 | 2023-12-05 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11875173B2 (en) | 2018-06-25 | 2024-01-16 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
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 |
US11968280B1 (en) | 2021-11-24 | 2024-04-23 | Amazon Technologies, Inc. | Controlling ingestion of streaming data to serverless function executions |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9413626B2 (en) | 2014-12-05 | 2016-08-09 | Amazon Technologies, Inc. | Automatic management of resource sizing |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
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 |
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 |
US10817331B2 (en) | 2018-06-25 | 2020-10-27 | 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 |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand 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 |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
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 |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
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 |
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 |
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 |
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 |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
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 |
KR102494791B1 (ko) * | 2021-11-08 | 2023-02-06 | 숭실대학교산학협력단 | 컨테이너 환경에서 알려지지 않은 바이너리 검사 및 차단 방법 및 장치 |
US12015603B2 (en) | 2021-12-10 | 2024-06-18 | Amazon Technologies, Inc. | Multi-tenant mode for serverless code execution |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100058294A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Guarding code check-in with test case execution results |
US20130091197A1 (en) * | 2011-10-11 | 2013-04-11 | Microsoft Corporation | Mobile device as a local server |
US20170060610A1 (en) * | 2015-08-28 | 2017-03-02 | Vmware, Inc. | Dynamic content disk |
US20170118247A1 (en) * | 2015-10-26 | 2017-04-27 | Amazon Technologies, Inc. | Providing fine-grained access remote command execution for virtual machine instances in a distributed computing environment |
US9811363B1 (en) * | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US9830175B1 (en) * | 2015-12-16 | 2017-11-28 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US20170371703A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5979703A (en) * | 1997-05-29 | 1999-11-09 | Ag-Chem Equipment Co., Inc. | Machine and method for monitoring product application |
WO2004059505A1 (en) | 2002-12-17 | 2004-07-15 | Systemauto | System, method and computer program product for sharing information in a distributed framework |
US9304793B2 (en) * | 2013-01-16 | 2016-04-05 | Vce Company, Llc | Master automation service |
US9323556B2 (en) | 2014-09-30 | 2016-04-26 | Amazon Technologies, Inc. | Programmatic event detection and message generation for requests to execute program code |
US10002026B1 (en) * | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US10417049B2 (en) * | 2016-11-28 | 2019-09-17 | Amazon Technologies, Inc. | Intra-code communication in a localized device coordinator |
EP3545662B1 (en) * | 2016-11-28 | 2023-10-18 | Amazon Technologies, Inc. | Managing messaging protocol communications |
-
2019
- 2019-06-21 WO PCT/US2019/038520 patent/WO2020005764A1/en unknown
- 2019-06-21 CN CN201980039918.8A patent/CN112513813B/zh active Active
- 2019-06-21 EP EP19736909.3A patent/EP3811209A1/en active Pending
- 2019-06-21 JP JP2020572441A patent/JP7197612B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100058294A1 (en) * | 2008-08-27 | 2010-03-04 | International Business Machines Corporation | Guarding code check-in with test case execution results |
US20130091197A1 (en) * | 2011-10-11 | 2013-04-11 | Microsoft Corporation | Mobile device as a local server |
US20170060610A1 (en) * | 2015-08-28 | 2017-03-02 | Vmware, Inc. | Dynamic content disk |
US20170118247A1 (en) * | 2015-10-26 | 2017-04-27 | Amazon Technologies, Inc. | Providing fine-grained access remote command execution for virtual machine instances in a distributed computing environment |
US9811363B1 (en) * | 2015-12-16 | 2017-11-07 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US9830175B1 (en) * | 2015-12-16 | 2017-11-28 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US20170371703A1 (en) * | 2016-06-28 | 2017-12-28 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11561811B2 (en) | 2014-09-30 | 2023-01-24 | Amazon Technologies, Inc. | Threading as a service |
US11263034B2 (en) | 2014-09-30 | 2022-03-01 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US11467890B2 (en) | 2014-09-30 | 2022-10-11 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US11360793B2 (en) | 2015-02-04 | 2022-06-14 | Amazon Technologies, Inc. | Stateful virtual compute system |
US11461124B2 (en) | 2015-02-04 | 2022-10-04 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US11354169B2 (en) | 2016-06-29 | 2022-06-07 | Amazon Technologies, Inc. | Adjusting variable limit on concurrent code executions |
US11875173B2 (en) | 2018-06-25 | 2024-01-16 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US11836516B2 (en) | 2018-07-25 | 2023-12-05 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
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 |
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 |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11714675B2 (en) | 2019-06-20 | 2023-08-01 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
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 |
Also Published As
Publication number | Publication date |
---|---|
CN112513813B (zh) | 2024-10-08 |
JP7197612B2 (ja) | 2022-12-27 |
WO2020005764A1 (en) | 2020-01-02 |
JP2021529386A (ja) | 2021-10-28 |
EP3811209A1 (en) | 2021-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112513813B (zh) | 在按需网络代码执行系统中执行辅助功能 | |
US11875173B2 (en) | Execution of auxiliary functions in an on-demand network code execution system | |
US10817331B2 (en) | Execution of auxiliary functions in an on-demand network code execution system | |
CN112513811B (zh) | 按需网络代码执行系统中的操作系统定制 | |
US11467890B2 (en) | Processing event messages for user requests to execute program code | |
US10437629B2 (en) | Pre-triggers for code execution environments | |
US10942795B1 (en) | Serverless call distribution to utilize reserved capacity without inhibiting scaling | |
US10203990B2 (en) | On-demand network code execution with cross-account aliases | |
US10277708B2 (en) | On-demand network code execution with cross-account aliases | |
US10564946B1 (en) | Dependency handling in an on-demand network code execution system | |
US9760387B2 (en) | Programmatic event detection and message generation for requests to execute program code | |
CN113243005A (zh) | 按需网络代码执行系统中的基于性能的硬件仿真 | |
US11119813B1 (en) | Mapreduce implementation using an on-demand network code execution system | |
WO2018005829A1 (en) | On-demand code execution using cross-account aliases | |
US10318347B1 (en) | Virtualized tasks in an on-demand network code execution system | |
US11144359B1 (en) | Managing sandbox reuse in an on-demand code execution system | |
US11614957B1 (en) | Native-hypervisor based on-demand code execution system | |
US20230315543A1 (en) | Tightly coupled parallel applications on a serverless computing system |
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 |