用跨账户别名执行按需网络代码的制作方法

文档序号:17123667发布日期:2019-03-16 00:05阅读:183来源:国知局
用跨账户别名执行按需网络代码的制作方法

计算装置可利用通信网络来交换数据。许多公司和组织运营将多个计算装置加以互连以支持操作或者向第三方提供服务的计算机网络。计算系统可位于单个地理位置中或者位于多个不同的地理位置中(例如,通过专用或公共通信网络加以互连)。具体地,数据中心或数据处理中心(在本文中总体称为“数据中心”)可包括多个互连的计算系统,以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或代表公众运营或者为了公众的利益运营的公共数据中心。

为了提高数据中心资源的利用率,虚拟化技术允许单个物理计算装置托管虚拟机的一个或多个实例,所述虚拟机作为数据中心的用户的独立计算装置出现和操作。通过虚拟化,单个物理计算装置能够以动态方式创建、维持、删除或以其他方式管理虚拟机。进而,用户可从数据中心请求计算机资源,包括单个计算装置或联网计算装置的配置,并且配备有不同数量的虚拟机资源。

在一些情境下,虚拟机实例可根据多种虚拟机实例类型来配置以提供特定功能。例如,各种计算装置可与操作系统或操作系统配置、虚拟化硬件资源和软件应用程序的不同组合相关联,以使得计算装置能够提供不同的所需功能,或者更有效地提供类似功能。这些虚拟机实例类型配置通常包含在装置镜像(image)内,所述装置镜像包括包含虚拟机一旦启动就将运行的软件(例如,os和应用程序及其配置和数据文件等)的静态数据。装置镜像通常存储在用来创建或初始化实例的磁盘上。因此,计算装置可处理装置镜像以便实现所需的软件配置。

附图说明

图1是描绘其中按需代码执行环境可操作的说明性环境的框图,所述按需代码执行环境包括用于使得能够代表第二账户执行由第一账户创建、拥有或维持的任务的账户管理器;

图2描绘提供图1的账户管理器的计算装置的一般体系结构;

图3是描绘用于生成图1的按需代码执行环境上的账户与由不同账户创建的任务之间的跨账户关联的说明性交互的流程图;

图4是描绘用于向图1的按需代码执行环境提交执行跨账户任务的调用的说明性交互,以及按需代码执行环境对该调用的处理的流程图;

图5是描绘用于生成访问信息的说明性例程的流程图,所述访问信息使得第一账户能够调用以便执行与第二账户相关联的任务;并且

图6是描绘用于生成访问信息的说明性例程的流程图,所述访问信息使得第一账户能够调用以便执行与第二账户相关联的任务。

具体实施方式

一般来讲,本公开的各方面涉及管理按需代码执行环境上的代码的执行,并且更具体地,涉及使得多个实体能够执行由单个实体创建或维持的代码,同时确保关于每个实体的执行的安全性。此外,本公开的各方面涉及基于与代码执行相关联的实体在虚拟机上分发代码执行,以提高可执行大量代码的效率,同时维持关于这些实体的执行的安全性。如本文所详细描述,按需代码执行环境可提供网络可访问服务,从而使得用户能够提交或指定要由按需代码执行环境上的虚拟机实例执行的计算机可执行代码。按需代码执行环境上的每组代码可限定“任务”,并且当在按需代码执行环境的虚拟机实例上执行时实现与该任务相对应的特定功能。按需代码执行环境上的任务的各个实现方式可称为任务的“执行”。按需代码执行环境可进一步使得用户能够基于各种潜在事件触发任务的执行,所述各种潜在事件诸如应用程序编程接口(“api”)调用或特殊格式的超文本传输协议(“http”)分组的传输。因此,用户可利用按需代码执行环境来“按需”执行任何指定的可执行代码,而无需配置或维持在其上执行代码的底层硬件或基础结构。另外,按需代码执行环境可被配置来以快速方式(例如,在100毫秒[ms]内)执行任务,从而使得能够“实时”执行任务(例如,对最终用户具有很少或没有明显的延迟)。为了实现这种快速执行,按需代码执行环境可包括一个或多个虚拟机实例,所述一个或多个虚拟机实例被“预热”或预初始化(例如,引导到操作系统中并执行完整或基本上完整的运行时环境),并且被配置来实现用户限定的代码的执行,使得可响应于执行代码的请求而迅速执行代码,而没有由初始化虚拟机实例引起的延迟。因此,当触发任务的执行时,可在非常短的时间内在预初始化的虚拟机内执行与该任务相对应的代码。

通常,按需代码执行环境可维持每个用户的任务之间的分离,以确保用于这些任务的代码的保密性和安全性(其可包括诸如密码、加密密钥、访问代码、api密钥等的敏感信息)。此外,按需代码执行环境可维持这些任务的执行之间的分离。例如,可在虚拟机内根据任务的底层“所有者”(例如,对任务具有完全访问的账户,通常是最初创建任务的账户)对任务的执行进行分组,以确保该执行的安全性(鉴于在虚拟机上执行的代码访问其他虚拟机上的数据或影响其他虚拟机的处理的本身有限的能力)。然而,在一些情况下,可能期望允许第一账户所“拥有”的任务被调用用于由第二账户执行。例如,这可使得任务的所有者能够与其他用户共享对任务的访问。因此,根据本公开的实施方案,本文所公开的按需代码执行环境被配置来允许跨账户访问任务(例如,由第一账户访问由第二账户拥有的任务),同时维持任务底层的代码的安全性以及任务的执行之间的安全性。因为任务的执行与按需代码执行环境上的资源使用相关联(并且因此可能与成本相关联),所以本文所公开的按需代码执行环境可进一步监视和跟踪关于各个账户的任务的执行,以便能够实现与每个账户相关联的资源使用的记账。此外,因为任务在被执行时可能需要访问账户特定的资源或参数(例如,个人账户专用的数据),所以按需代码执行环境可用于根据所需的执行上下文(例如,任务的执行应当与之相关联的账户)来定制对任务的调用,并修改与任务的执行相关联的许可,以便使得能够访问所需的资源(同时防止访问未经授权的资源)。更进一步地,按需代码执行环境可用于根据每次执行所需的许可在虚拟机上分发任务执行集,以便用减少执行所需要的总体计算资源的方式对这些执行进行分组。

为了实现对任务的跨账户访问,可将按需代码执行环境配置来生成任务“别名”。这些别名可与第一账户或用户相关联,并且充当其他用户的任务的“快捷方式”或“指针”。例如,在与第一账户相关联的第一用户创建任务“task”的情况下,与第二账户相关联的第二用户可创建该任务的别名,并将别名命名为“task_alias”。此后,第二用户可触发别名“task_alias”的执行,从而导致执行与“task”相关联的代码。然而,因为第二用户的第二账户与任务“task”的别名相关联,所以按需代码执行环境可确保第二用户不被允许访问该任务底层的代码。因此,可使得用户能够跨账户“共享”任务,而不损害这些任务的保密性和安全性。此外,通过使用别名,按需代码执行环境可确保任务的每次执行与正确的“上下文”(这可指示例如与触发任务的执行相关联的账户或用户)相关联。例如,当第二用户触发“task_alias”的执行时,按需代码执行环境可确保将底层任务“task”的执行归属到第二用户。如下文将描述的,按需代码执行环境因此可利用与第二用户相关联的虚拟机实例来执行任务,将第二用户与用于执行任务的计算资源(以及可能的成本)相关联,或者应用与第二用户相关联的规则或其他逻辑来处理任务的执行(例如,通过根据第二用户的要求使任务的执行入列或延迟等)。在一些情况下,按需代码执行环境可根据第二用户的要求进一步将“定制”应用于任务的执行。例如,按需代码执行环境可修改传递给与任务相对应的代码的参数,修改执行任务的许可,或者在执行期间修改任务可用的资源。

在一些情况下,按需代码执行环境的用户可利用共享任务来实现对该用户资源(例如,包括按需代码执行环境上的数据或任务和/或按需代码执行环境之外的数据、服务或资源)的有限访问。例如,用户可选择共享提供特定功能集的任务,并且向其他用户通知该任务的可能进行定制的(例如,通过创建别名和相关联的定制)各种参数。在一些情况下,共享任务的执行(例如,通过别名)本身可触发其他任务的执行,所述其他任务可能在按需代码执行环境上共享或者没有共享,并且可能提供对初始用户的资源(任务所有者的资源)的受限的访问。通过共享各种这样的任务,按需代码执行环境上的用户可创建他们自己的api,通过所述api,按需代码执行环境的其他用户可以受控方式访问该用户的资源。因此,通过将用于各种api功能的代码提交到按需代码执行环境并且与其他用户共享这些api功能,按需代码执行环境可使得用户能够快速且容易地生成用于任何基于网络的服务的api。因为按需代码执行环境可被配置来跟踪用于每个任务的资源,并将每个任务与特定用户相关联,所以api的创建者可不需要跟踪api的用户,将这种使用记账,或者管理api所需要的任何计算资源。因此,按需代码执行环境可大大降低创建基于网络的api的成本和复杂性。

如本文所用,术语“虚拟机实例”旨在指代软件或其他可执行代码的执行,其仿真硬件以提供软件可在其上执行的环境或平台(“执行环境”)。虚拟机实例通常由硬件装置执行,所述硬件装置可与由虚拟机实例仿真的物理硬件不同。例如,虚拟机在第二类型的处理器和存储器上执行时可仿真第一类型的处理器和存储器。因此,虚拟机可用来执行旨在用于正在执行第二执行环境(例如,第二操作系统)的物理装置上的第一执行环境(例如,第一操作系统)的软件。在一些情况下,由虚拟机实例仿真的硬件可与底层装置的硬件相同或相似。例如,具有第一类型处理器的装置可实现多个虚拟机实例,每个虚拟机实例仿真该第一类型处理器的实例。因此,虚拟机实例可用来将装置分成多个逻辑子装置(每个逻辑子装置称为“虚拟机实例”)。虽然虚拟机实例通常可提供偏离底层物理装置的硬件的抽象层次,但并不需要这种抽象。例如,假设装置实现多个虚拟机实例,每个虚拟机实例仿真与由该装置提供的硬件完全相同的硬件。在这种情境下,每个虚拟机实例可允许软件应用程序在没有转换的情况下在底层硬件上执行代码,同时维持在其他虚拟机实例上运行的软件应用程序之间的逻辑分离。此过程(通常称为“本地执行”)可用来提高虚拟机实例的速度或性能。也可使用允许直接利用底层硬件的其他技术,诸如硬件直通技术。

虽然在本文中将执行操作系统的虚拟机描述为执行环境的一个实例,但其他执行环境也是可能的。例如,任务或其他过程可在软件“容器”内执行,所述软件“容器”提供运行时环境而其本身不提供硬件的虚拟化。容器可在虚拟机内实现以提供另外的安全性,或者可在虚拟机实例之外运行。

现在将讨论在按需任务执行环境上执行任务。具体地,为了执行任务,本文所描述的按需代码执行环境可维持预初始化的虚拟机实例池,一旦接收到用户请求,所述预初始化的虚拟机实例池就可投入使用。由于这些虚拟机的预初始化性质,与执行用户代码相关联的延迟(有时称为等待时间)(例如,实例和语言运行时启动时间)可显著减少,通常减少到亚100毫秒的水平。说明性地,按需代码执行环境可在一个或多个物理计算装置上维持虚拟机实例池,其中每个虚拟机实例在其上加载有一个或多个软件组件(例如,操作系统、语言运行时、库等)。当按需代码执行环境接收到执行用户程序代码(“任务”)的指定用于执行用户程序代码的一个或多个计算约束的请求时,按需代码执行环境可基于由所述请求指定的一个或多个计算约束来选择用于执行用户程序代码的虚拟机实例,并且致使用户程序代码在所选择的虚拟机实例上执行。程序代码可在虚拟机实例上创建的隔离容器中执行。由于池中的虚拟机实例已经被启动并且在接收到请求时加载有特定的操作系统和语言运行时,所以与发现可处理请求(例如,通过在虚拟机实例上创建的一个或多个容器中执行用户代码)的计算容量相关联的延迟显著减少。

按需代码执行环境可包括虚拟机实例管理器,所述虚拟机实例管理器被配置来接收用户代码(以各种编程语言中的任何一种编写的线程、程序等),并以高度可伸缩、低等待时间的方式执行代码,而无需用户配置虚拟机实例。具体地,虚拟机实例管理器可在接收用户代码之前以及在从用户接收有关任何特定虚拟机实例配置的任何信息之前,根据预先确定的配置集来创建和配置虚拟机实例,每个配置对应于各种运行时环境处的任何一个或多个。此后,虚拟机实例管理器接收用户发起的执行代码的请求,并基于与所述请求相关联的配置信息标识预先配置的虚拟机实例以执行代码。虚拟机实例管理器可进一步分配所标识的虚拟机实例以至少部分地通过在所分配的虚拟机实例内创建和配置容器来执行用户的代码。用于实现虚拟机实例管理器和在虚拟机实例上执行用户代码的各种实施方案在标题为“programmaticeventdetectionandmessagegenerationforrequeststoexecuteprogramcode”并且于2014年9月30日提交的美国专利号9,323,556(“所述‘556申请”)中加以更详细的描述,其全部内容特此以引入方式并入。

如本领域技术人员将明白,本文所描述的实施方案用于通过使得计算装置能够在按需代码执行环境内迅速执行许多用户的代码来改进这些装置的功能。此外,在按需代码执行环境的上下文中,本公开使得能够有效地将代码执行分配给执行环境(例如,虚拟机实例、容器等),同时维持代码的保密性或安全性。更进一步地,本公开使得用户能够快速修改与代码执行相关联的参数、资源或许可,从而提供比现有技术的系统更高的灵活性和功能性。在一些情况下,本公开的实施方案可提供一种机制,通过所述机制可创建和提供定制api,从而使得能够对基于网络的计算资源进行编程控制,而无需用户部署、管理或掌管提供定制api的计算资源。因此,本领域技术人员将凭借本公开内容而明白,本文所描述的实施方案大体上代表对虚拟机使用管理、基于网络的代码执行技术领域和计算装置的重大贡献。

当结合附图参阅以下详细描述时,可更好地理解本公开的上述方面和许多伴随的优点,因此将更易于了解所述方面和优点。

图1是说明性操作环境100的框图,其中按需代码执行环境110可基于与用户计算装置102和辅助服务106的通信来操作。通过说明,各种示例性用户计算装置102被示出与按需代码执行环境110(包括台式计算机、膝上型计算机和移动电话)通信。一般来讲,用户计算装置102可以是任何计算装置,诸如台式计算机、膝上型计算机或平板计算机、个人计算机、可佩戴计算机、服务器、个人数字助理(pda)、混合型pda/移动电话、移动电话、电子书阅读器、机顶盒、语音命令装置、照相机、数字媒体播放器等。按需代码执行环境110可向用户计算装置102提供一个或多个用户接口、命令行接口(cli)、应用程序编程接口(api)和/或其他程序化接口,用于生成并上传用户可执行代码,召用用户提供的代码(例如,提交在按需代码执行环境110中执行用户代码的请求),调度基于事件的作业或定时作业,跟踪用户提供的代码和/或查看与其请求和/或用户代码相关的其他日志或监视信息。尽管一个或多个实施方案在本文中可描述为使用用户接口,但应当理解,这类实施方案能够另外地或可选地使用任何cli、api或其他程序化接口。

说明性环境100还包括一个或多个辅助服务106,所述一个或多个辅助服务106可与单一需求代码执行环境110交互以便代表用户实现所需功能。辅助服务106可对应于网络连接的计算装置(诸如服务器),所述计算装置生成单一需求代码执行环境110可访问的或以其他方式传达到单一需求代码执行环境110的数据。例如,辅助服务106可包括web服务(例如,与用户计算装置102相关联、与按需代码执行环境110相关联、或与第三方相关联)、数据库、简易信息聚合(“rss”)阅读器、社交网站或任何其他网络可访问服务源或数据源。在一些情况下,辅助服务106可与按需代码执行环境110相关联,例如以便向按需代码执行环境110提供记账服务或日志服务。在一些情况下,辅助服务106主动地将信息(诸如api调用或其他任务触发信息)传输到按需代码执行环境110。在其他情况下,辅助服务106可以是被动的,使得数据可供按需代码执行环境110访问。如下文所描述,按需代码执行环境110的组件可周期性地轮询此类被动数据源,并基于所提供的数据触发按需代码执行环境110内的任务的执行。虽然在图1中被描绘为与用户计算装置102、按需代码执行环境110不同,但在一些实施方案中,各种辅助服务106可由用户计算装置102或按需代码执行环境110实现。

用户计算装置102和辅助服务106可通过网络104与按需代码执行环境110进行通信,所述网络104可包括任何有线网络、无线网络或其组合。例如,网络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可连接到网络104,并且按需代码执行环境110的其他组件可通过前端120与虚拟环境100的其他组件通信。

在图1中,用户可通过用户计算装置102与按需代码执行环境110交互以提供可执行代码,并设立限定何时以及如何在按需代码执行环境110上执行这种代码的规则或逻辑,从而设立“任务”。例如,用户可能期望结合用户已经开发的web或移动应用程序来运行一段代码。运行代码的一种方式将是从提供基础结构作为服务的服务提供方获取虚拟机实例,配置所述虚拟机实例以适应用户的需要,并且使用配置的虚拟机实例来运行代码。为了避免该过程的复杂性,用户能够可选地将代码提供给按需代码执行环境110,并且请求按需代码执行环境110使用一个或多个预先设立的虚拟机实例来执行代码。按需代码执行环境110可基于代码执行请求来处理对计算容量(例如,容器、实例等,这些将在下文加以更详细的描述)的获取和配置,并且使用计算容量来执行代码。按需代码执行环境110可基于体积来自动放大和缩小,从而减轻用户负担使其不必担心过度利用(例如,获取太少的计算资源和遭受性能问题)或利用不足(例如,获取比运行代码所需的更多的计算资源,并且因此而多付)。

为了实现与按需代码执行环境110的交互,环境110包括前端120,所述前端120实现与按需代码执行环境110的交互。在说明性实施方案中,前端120用作由按需代码执行环境110提供的其他服务的“前门”,从而使得用户(通过用户计算装置102)能够提供计算机可执行代码、请求执行计算机可执行代码以及查看计算机可执行代码的结果。前端120包括多种组件(图1中未示出),以实现按需代码执行环境110与其他计算装置之间的交互。例如,前端120可包括请求接口,所述请求接口向用户计算装置102提供将用户指定的代码上传或以其他方式传达到按需代码执行环境110,并且此后请求执行该代码的容量。在一个实施方案中,请求接口通过图形用户接口(gui)、cli或api与外部计算装置(例如,用户计算装置102、辅助服务106等)通信。前端120处理请求并确保请求被正确地授权。例如,前端120可确定与请求相关联的用户是否被授权访问在请求中指定的用户代码。

如本文所用的用户代码可指以特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可互换使用。可例如结合由用户开发的特定web应用程序或移动应用程序来执行这种用户代码以实现特定功能。如上所述,用户代码(例如,为了实现特定功能)的单独集合在本文中称为“任务”,而该代码的特定执行称为“任务执行”或简称为“执行”。作为非限制性实例,可以javascript(例如,node.js)、java、python和/或ruby(和/或另一种编程语言)编写任务。可以各种方式“触发”任务以在按需代码执行环境110上执行。在一个实施方案中,用户或其他计算装置可发送执行任务的请求,所述请求通常可称为对执行任务的“调用”。此类调用可包括将要执行的用户代码(或其位置)和将要用于执行用户代码的一个或多个变元。例如,调用可提供任务的用户代码连同执行任务的请求。在另一个实例中,调用可通过任务的名称或标识符来标识先前上传的任务。在又一实例中,对应于任务的代码可被包括在对任务的调用中,以及在由按需代码执行环境110接收到请求之前被上传到单独的位置(例如,辅助服务106的存储库或按需代码执行环境110内部的存储系统)中。按需代码执行环境110可基于在处理对任务的调用时任务的代码可用的位置来改变其任务的执行策略。

前端120的请求接口可接收对执行任务的调用作为来自用户的超文本传输协议安全(https)请求。此外,当执行任务时,还可处理并利用包括在https请求中的任何信息(例如,标头和参数)。如以上所讨论,可使用任何其他协议(包括例如http、mqtt和coap)来将包含任务调用的消息传递到请求接口122。

对执行任务的调用可指定将要与对应于任务的用户代码一起使用的一个或多个第三方库(包括本地库)。在一个实施方案中,调用可向按需代码执行环境100提供包含与请求执行的任务相对应的用户代码和任何库(和/或其存储位置的标识)的zip文件。在一些实施方案中,调用包括指示将要执行的任务的程序代码、写入程序代码的语言、与调用相关联的用户和/或专供执行程序代码使用的计算资源(例如,存储器等)的元数据。例如,可向调用提供先前由用户上传的、由按需代码执行环境110(例如,标准例程)提供的和/或由第三方提供的任务的程序代码。在一些实施方案中,这种资源级约束(例如,将要分配多少存储器用于执行特定用户代码)被指定用于特定任务,并且可在任务的每次执行时不改变。在此类情况下,按需代码执行环境110可在接收到每个单独的调用之前访问此类资源级约束,并且单独的调用可不指定此类资源级约束。在一些实施方案中,调用可指定其他约束,诸如指示调用请求执行任务的什么种类的许可或权限的许可数据。这种许可数据可由按需代码执行环境110用来(例如,在专用网络上)访问私有资源。

在一些实施方案中,调用可指定应当被采用以用于处理所述调用的行为。在此类实施方案中,调用可包括用于启用其中执行在调用中提及的任务的一种或多种执行模式的指示符。例如,调用可包括用于指示任务是否应当以调试模式执行的标志或标头,在所述调试模式下可结合任务的执行而生成的调试和/或日志输出被(例如,通过控制台用户接口)提供回给用户。在这种实例中,按需代码执行环境110可检查调用并寻找标志或标头,并且如果标志或标头存在,那么按需代码执行环境110可修改在其中执行任务的容器的行为(例如,日志功能),并且致使输出数据将要被提供回给用户。在一些实施方案中,通过由按需代码执行环境110提供给用户的用户接口将行为/模式指示符添加到调用。还可基于调用中提供的指示来启用或禁用其他特征,诸如源代码分析、远程调试等。

为了管理对代码执行的请求,前端120还可包括执行队列(图1中未示出),其可维持对用户请求的任务执行的记录。说明性地,按需代码执行环境110同时执行任务的数量是有限的,并且因此,在按需代码执行环境110中发起的新任务执行(例如,通过api调用)可被置于执行队列上并且例如以先入先出顺序处理。在一些实施方案中,按需代码执行环境110可包括多个执行队列,诸如用于每个用户账户的单独执行队列。例如,按需代码执行环境110的用户可能期望限制按需代码执行环境110上的任务执行的速率(例如,出于成本原因)。因此,按需代码执行环境110可利用帐户特定的执行队列来限制特定用户帐户同时执行任务的速率。在一些情况下,按需代码执行环境110可对任务执行进行优先级排序,使得特定帐户的或指定优先级的任务执行绕过或优先于执行队列。在一些情况下,可基于在按需代码执行环境110处接收到的预触发通知(例如,基于根据预触发通知要接收的后续任务调用的预计数量)来修改执行队列的数量和配置。在其他情况下,按需代码执行环境110可在接收到对该任务的调用之后立即或基本上立即执行任务,因此,可省略执行队列。

如上所述,可基于来自用户计算装置102的显式调用(例如,当在请求接口120处接收到时)来触发任务以在按需代码执行环境110处执行。可选地或另外地,可基于从一个或多个辅助服务106检索到的数据来触发任务以在按需代码执行环境110处执行。为了促进与辅助服务106的交互,前端120可包括轮询接口(图1中未示出),所述轮询接口操作以轮询辅助服务106以获取数据。说明性地,轮询接口可周期性地向一个或多个用户指定的辅助服务106传输请求以检索任何新的可用数据(例如,社交网络“帖子”、新闻文章等),并确定该数据是否对应于触发在按需代码执行环境110上执行任务的用户设立的标准。说明性地,用于任务执行的标准可包括但不限于辅助服务106处是否有新数据、数据的类型或内容、或者与数据相对应的定时信息。除了基于显式用户调用和来自辅助服务106的数据执行的任务之外,在一些情况下,按需代码执行环境110可操作以独立地触发任务的执行。例如,按需代码执行环境110可(基于来自用户的指令)操作以在多个指定时间间隔(例如,每10分钟)的每一个处触发任务的执行。

前端120还可包括被配置来在按需代码执行环境110上输出有关任务的执行的信息的输出接口(图1中未示出)。说明性地,输出接口可将有关任务执行(例如,任务的结果、与任务执行相关的错误、或诸如完成执行所需的总时间、通过执行处理的总数据的任务执行的细节等)或预触发通知(接收到的预触发通知、基于预触发通知采取的动作、所确定的预触发通知与后续任务执行之间的相关性等)的数据传输到用户计算装置102或辅助服务106(其可包括例如记账服务或日志服务)。输出接口可进一步使得能够将数据(诸如服务调用)传输到辅助服务106。例如,可在执行任务期间利用输出接口将api请求传输到外部服务106(例如,以存储在任务执行期间生成的数据)。

虽然未在图1中示出,但在一些实施方案中,按需代码执行环境110可包括多个前端120。在此类实施方案中,可提供负载均衡器以例如以循环方式将传入的调用分发给多个前端120。在一些实施方案中,负载均衡器将传入的调用分发给多个前端120的方式可基于预热池130a和/或活动池140a的状态。例如,如果认为预热池130a中的容量足够,那么可基于前端120的单独容量(例如,基于一个或多个负载平衡限制)将调用分发给多个前端120。在另一方面,如果预热池130a中的容量小于阈值量,那么可去除此类负载平衡限制中的一个或多个,使得可以减少或最小化从预热池130a取出的虚拟机实例的数量的方式来将调用分发给多个前端120。例如,即使根据负载平衡限制,调用将要被引导至前端a,如果前端a需要从预热池130a中取出实例以服务所述调用但前端b可使用其活动池中的一个实例来服务同一个调用,那么所述调用可被引导至前端b。

为了执行任务,按需代码执行环境110包括预热池管理器130,所述预热池管理器130“预热”(例如,初始化)虚拟机实例以使得任务能够被快速执行,而没有由虚拟机的初始化引起的延迟。按需代码执行环境110还包括工作者管理器140,所述工作者管理器140管理活动的虚拟机实例(例如,当前被指派以响应于任务调用而执行任务)。

当按需代码执行环境110检测到触发按需代码执行环境110上的任务执行的事件时,预热池管理器130确保虚拟机实例已准备好供工作者管理器140使用。在图1所示的实例中,预热池管理器130管理预热池130a,所述预热池130a是预初始化且预配置的虚拟机实例的组(有时称为池),其可用来响应于触发那些任务而执行任务。在一些实施方案中,预热池管理器130致使虚拟机实例在按需代码执行环境110内的一个或多个物理计算机器上启动并添加到预热池130a。例如,预热池管理器130可基于预热池130a中的可用容量来致使另外的实例被添加到预热池130a,以服务传入的调用。如下文将描述的,预热池管理器130可进一步与按需代码执行环境110的其他组件(诸如工作者管理器140)相结合地工作,以基于接收到的预触发通知添加或以其他方式管理预热池中的实例和/或容器。在一些实施方案中,预热池管理器130可利用按需代码执行环境110内的物理计算装置和一个或多个虚拟机实例服务来获取并维持可用来服务由前端120接收的调用的计算容量。另外,按需代码执行环境110可包括用于控制(例如,增加或减少)预热池130a中的可用容量的一个或多个逻辑旋钮或开关。例如,系统管理员可使用这种旋钮或开关来在高峰时间期间增加预热池130a中可用的容量(例如,预启动实例的数量)。在一些实施方案中,预热池130a中的虚拟机实例可基于独立于执行任务的特定调用的预先确定的配置集来进行配置。预先确定的配置集可对应于执行任务的各种类型的虚拟机实例。预热池管理器130可基于与当前或先前任务执行相关的一个或多个度量来优化预热池130a中的虚拟机实例的类型和数量。此外,预热池管理器130可基于预触发通知(例如,通过基于根据接收到的预触发通知预期要执行的任务的要求预初始化一个或多个虚拟机实例)来设立或修改预热池130a中的虚拟机实例的类型和数量。

如图1所示,实例可在其上加载有操作系统(os)和/或语言运行时。例如,由预热池管理器130管理的预热池130a包括实例152、154。实例152包括os152a和运行时152b。实例154包括os154a。在一些实施方案中,预热池130a中的实例还可包括容器(所述容器还可包含操作系统、运行时、用户代码等的副本),这将在下文加以更详细的描述。尽管实例152在图1中被示出为包括单个运行时,但在其他实施方案中,图1中所描绘的实例可包括两个或更多个运行时,每个运行时可用于运行不同的用户代码。在一些实施方案中,预热池管理器130可维持预热池130a中的实例列表。实例列表可进一步指定实例的配置(例如,os、运行时、容器等)。

在一些实施方案中,预热池130a中的虚拟机实例可用来服务任何用户的调用。在一个实施方案中,预热池130a中的所有虚拟机实例以相同或基本相似的方式进行配置。在另一实施方案中,预热池130a中的虚拟机实例可不同地配置,以适合不同用户的需要。例如,虚拟机实例可在其上加载有不同的操作系统、不同的语言运行时和/或不同的库。在又一实施方案中,预热池130a中的虚拟机实例可以相同或基本相似的方式(例如,利用相同的os、语言运行时和/或库)来配置,但这些实例中的一些可具有不同的容器配置。例如,一个实例可具有在其中创建的用于运行以python编写的代码的容器,并且另一个实例可具有在其中创建的用于运行以ruby编写的代码的容器。在一些实施方案中,提供多个预热池130a,每个预热池130a具有相同配置的虚拟机实例。

预热池管理器130可在预热池130a中预配置虚拟机实例,使得每个虚拟机实例被配置来满足在限定任务时可由用户请求或指定的操作条件中的至少一个。在一个实施方案中,操作条件可包括其中可写入任务的潜在用户代码的程序语言。例如,这类语言可包括java、javascript、python、ruby等。在一些实施方案中,可写入任务的用户代码的语言集可限于预先确定的集合(例如,4种语言的集合,尽管在一些实施方案中提供多于或少于四种语言的集合),以便有助于可满足对执行任务的调用的虚拟机实例的预初始化。例如,当用户正通过由按需代码执行环境110提供的用户接口来配置任务时,用户接口可提示用户指定用于执行任务的预先确定的操作条件中的一个。在另一个实例中,用于利用由按需代码执行环境110提供的服务的服务级别协议(sla)可指定任务应当满足的一组条件(例如,编程语言、计算资源等),并且按需代码执行环境110可假设所述任务满足在处理请求时的所述一组条件。在另一个实例中,由任务指定的操作条件可包括:将要用于执行任务的计算功率的量;任务的触发事件的类型(例如,api调用、http分组传输、辅助服务106处的特定数据的检测);任务的超时(例如,在其后可终止任务的执行的阈值时间);和安全策略(例如,可控制预热池130a中的哪些实例可由哪个用户使用),以及其他指定的条件。

工作者管理器140管理用于服务对执行任务的传入调用的实例。在图1所展示的实例中,工作者管理器140管理活动池140a,所述活动池140a是由一个或多个物理托管计算装置实现的当前分配给一个或多个用户的虚拟机实例的组(有时称为池)。尽管本文将虚拟机实例描述为分配给特定用户,但在一些实施方案中,可将实例分配给一组用户,以使得实例被绑定到用户组,并且所述组的任何成员可利用所述实例上的资源。例如,同一组中的用户可属于同一个安全组(例如,基于他们的安全证书),使得在一个成员的任务已经在特定实例上的一个容器中执行之后,在同一个实例上的另一个容器中执行另一个成员的任务不造成安全风险。类似地,工作者管理器140可根据规定哪些请求可在哪些容器中执行以及哪些实例可被分配给哪些用户的一个或多个策略来分配实例和容器。示例性策略可指定将实例分配给共享同一个帐户(例如,用于访问由按需代码执行环境110提供的服务的帐户)的用户集合。在一些实施方案中,与同一个用户组相关联的请求可共享同一个容器(例如,如果与其相关联的用户代码相同)。在一些实施方案中,任务不在所述组的不同用户之间进行区分,而是简单地指示与任务相关联的用户所属的组。

如图1所示,实例可具有操作系统(os)、语言运行时和容器。容器可在其上加载有os的单独副本、运行时以及对应于各种任务的用户代码。在图1的实例中,由工作者管理器140管理的活动池140a包括实例156、158。实例156具有os156a,运行时156b、156c和容器156d、156e。容器156d包括os156a的副本、运行时156b的副本和代码156d-1的副本。容器156e包括os156a的副本、运行时156c的副本和代码156e-1的副本。实例158具有os158a、运行时158b、158c、158e、158f、容器158d和代码158g、158h。容器158d具有os158a的副本、运行时158b的副本和代码158d-1的副本。如图1所示,实例可在其上加载有用户代码,并且那些实例内的容器也可具有加载在其中的用户代码。在一些实施方案中,工作者管理器140可维持活动池140a中的实例列表。实例列表可进一步指定实例的配置(例如,os、运行时、容器等)。在一些实施方案中,工作者管理器140可访问预热池130a中的实例列表(例如,包括实例的数量和类型)。在其他实施方案中,工作者管理器140从预热池管理器130请求计算容量,而无需知道预热池130a中的虚拟机实例。

在图1所展示的实例中,在称为容器(例如,容器156d、156e、158d)的隔离的按需代码执行环境中执行任务。容器是在虚拟机实例内使用该实例上可用的资源创建的逻辑单元。例如,工作者管理器140可基于在对执行任务的调用中指定的信息来创建新容器或者定位活动池140a中的实例之一中的现有容器,并将所述容器分配给所述调用以处理任务的执行。在一个实施方案中,此类容器被实现为linux容器。

一旦前端120成功处理了执行任务的触发事件,工作者管理器140就具有在按需代码执行环境110上执行任务的容量。例如,如果在活动池140a中存在具有其中已加载有任务的用户代码(例如,在容器156d中示出的代码156d-1)的容器的特定虚拟机实例,那么工作者管理器140可将容器分配给所述任务并致使所述任务在容器中被执行。可选地,如果任务的用户代码在虚拟机实例中的一个的本地缓存中可用(例如,存储在实例158上但不属于任何单独的容器的代码158g、158h),那么工作者管理器140可在这种实例上创建新容器,将所述容器分配给任务,并且致使任务的用户代码在容器中被加载并执行。

如果工作者管理器140确定在活动池140a中的实例中的任何一个(例如,在实例的容器或实例的本地缓存中)上未发现与触发的任务相关联的用户代码,那么工作者管理器140可确定活动池140a中的实例中的任何一个当前是否被分配给与触发的任务相关联的用户,并且是否具有处理所触发任务的计算容量。如果存在这种实例,那么工作者管理器140可在实例上创建新容器并分配所述容器以执行触发的任务。可选地,工作者管理器140可进一步配置实例上分配给用户的现有容器,并将所述容器分配给触发的任务。例如,如果由任务所要求的特定库被加载在现有容器上,那么工作者管理器140可确定所述现有容器可用来执行任务。在这种情况下,工作者管理器140可将特定库和任务的代码加载到容器上,并使用容器来执行任务。

如果活动池140不包含当前分配给用户的任何实例,那么工作者管理器140从预热池130a中拉出新虚拟机实例,将所述实例分配给与触发的任务相关联的用户,在所述实例上创建新容器,将所述容器分配给触发的任务,并且致使任务的用户代码在容器上被下载并执行。

在一些实施方案中,按需代码执行环境110适于在(例如,由前端120)接收到任务之后不久开始执行任务。时间段可被确定为发起(例如,在与用户相关联的虚拟机实例上的容器中的)任务的执行与检测触发任务的执行的事件(例如,由前端120接收到的调用)之间的时间差。按需代码执行环境110适于在小于预先确定的持续时间的时间段内开始执行任务。在一个实施方案中,预先确定的持续时间是500ms。在另一个实施方案中,预先确定的持续时间是300ms。在另一个实施方案中,预先确定的持续时间是100ms。在另一个实施方案中,预先确定的持续时间是50ms。在另一个实施方案中,预先确定的持续时间是10ms。在另一个实施方案中,预先确定的持续时间可以是选自10ms至500ms的范围内的任何值。在一些实施方案中,如果满足一个或多个条件,那么按需代码执行环境110适于在小于预先确定的持续时间的时间段内开始执行任务。例如,一个或多个条件可包括以下中的任何一个:(1)在接收到请求时,任务的用户代码被加载在活动池140中的容器上;(2)在接收到对任务的调用时,任务的用户代码被存储在活动池140中的实例的代码高速缓存中;(3)活动池140a包含在接收到调用时分配给与所述调用相关联的用户的实例;或者(4)在检测到触发任务的执行的事件时,预热池130a具有处理任务的容量。

一旦工作者管理器140定位到预热池130a中可用来执行任务的虚拟机实例中的一个,预热池管理器130或工作者管理器140就将所述实例从预热池130a中取出并将其分配给与请求相关联的用户。将所分配的虚拟机实例从预热池130a中取出并置于活动池140a中。在一些实施方案中,一旦虚拟机实例已被分配给特定用户,那么同一个虚拟机实例不能用来执行任何其他用户的任务。这通过防止用户资源的可能的混合存放来向用户提供安全益处。可选地,在一些实施方案中,属于不同用户(或分配给与不同用户相关联的请求)的多个容器可共存于单个虚拟机实例上。这种方法可改善可用计算容量的利用。

在一些实施方案中,按需代码执行环境110可维持单独的高速缓存,其中存储任务代码以用作虚拟机实例的本地缓存与账户数据存储库164(图1中未示出的其他基于网络的存储库)之间的中间级高速缓存系统。工作者管理器140在服务调用时可能遇到的各种情境将在上面以引用方式并入的所述‘556专利中(例如,在所述‘556专利的图4中)加以更详细的描述。

在已经执行任务之后,工作者管理器140可拆除用来执行任务的容器以释放其占用的资源,以用于实例中的其他容器。可选地,工作者管理器140可保持容器运行以使用所述容器来服务来自同一用户的另外的调用。例如,如果另一个调用与已经加载在容器中的同一个任务相关联,那么所述调用可被分配给同一个容器,从而消除与创建新容器并在容器中加载任务代码相关联的延迟。在一些实施方案中,工作者管理器140可拆除其中创建用来执行任务的容器的实例。可选地,工作者管理器140可保持实例运行以使用所述实例来服务来自同一用户的另外的调用。在任务完成执行之后是否保持容器和/或实例运行的确定可基于阈值时间、用户类型、用户的平均任务执行量和/或其他操作条件。例如,在没有任何活动(例如,任务执行)的情况下已过去阈值时间(例如,5分钟、30分钟、1小时、24小时、30天等)之后,容器和/或虚拟机实例被关闭(例如,删除、终止等),并且分配给其的资源被释放。在一些实施方案中,在容器被拆除之前所经过的阈值时间比在实例被拆除之前所经过的阈值时间更短。

在一些实施方案中,按需代码执行环境110可在其响应于触发事件执行任务时向辅助服务106中的一个或多个提供数据。例如,前端120可与包括在辅助服务106内的监视/日志/记账服务通信。监视/日志/记账服务可包括:监视服务,其用于管理从按需代码执行环境110接收的监视信息,诸如按需代码执行环境110上的容器和实例的状态;日志服务,其用于管理从按需代码执行环境110接收的日志信息,诸如由按需代码执行环境110上的容器和实例执行的活动;以及记账服务,其用于(例如基于由监视服务和日志服务管理的监视信息和/或日志信息)生成与在按需代码执行环境110上执行用户代码相关联的记账信息。除了可由所述监视/日志/记账服务(例如,代表按需代码执行环境110)执行的系统级活动之外,监视/日志/记账服务还可提供代表在按需代码执行环境110上执行的任务的应用级服务。例如,监视/日志/记账服务可代表在按需代码执行环境110上执行的任务来监视和/或日志记录各种输入、输出或其他数据和参数。如下文将更详细描述的,前端120可另外与辅助服务106交互以接收预触发通知,所述预触发通知指示在按需代码执行环境110上执行任务的后续调用的可能性。

在一些实施方案中,工作者管理器140可对由工作者管理器140管理的实例和容器(例如,活动池140a中的那些)执行健康检查。例如,由工作者管理器140执行的健康检查可包括确定由工作者管理器140管理的实例和容器是否具有任何以下问题:(1)错误配置的联网和/或启动配置、(2)耗尽的存储器、(3)损坏的文件系统、(4)不兼容的内核和/或可能损害实例和容器的性能的任何其他问题。在一个实施方案中,工作者管理器140定期(例如每5分钟、每30分钟、每小时、每24小时等)执行健康检查。在一些实施方案中,健康检查的频率可基于健康检查的结果自动调整。在其他实施方案中,健康检查的频率可基于用户请求来调整。在一些实施方案中,工作者管理器140可对预热池130a中的实例和/或容器执行类似的健康检查。预热池130a中的实例和/或容器可与活动池140a中的那些实例和容器一起或分开管理。在一些实施方案中,在预热池130a中的实例和/或容器的健康与活动池140a分开管理的情况下,预热池管理器130而不是工作者管理器140可对预热池130a中的实例和/或容器执行上述健康检查。

工作者管理器140可包括用于发现用来服务传入的代码执行请求的计算容量(例如,容器)的实例分配单元以及用于有助于在那些容器上执行用户代码的用户代码执行单元。工作者管理器140的示例性配置将在上面以引用方式并入的所述‘556专利中(例如,在所述‘556专利的图2中)加以更详细的描述。在一些情况下,可基于预期传入的代码执行请求来修改实例分配单元的操作,如基于接收到的预触发通知所预测的那样。例如,在按需代码执行环境110利用或可访问动态供应的计算资源(诸如动态供应的基于网络的存储空间,对处理能力的可缩放访问等)的情况下,实例分配单元可被配置来修改这些动态供应的计算资源中的一个或多个的量。例如,实例分配单元可与动态分配的网络存储服务(图1中未示出)交互,以增加可用于虚拟机实例的数据存储量。

在所描绘的实例中,虚拟机实例(“实例”)152、154在由预热池管理器130管理的预热池130a中示出,并且实例156、158在由工作者管理器140管理的活动池140a中示出。按需代码执行环境110内的各种组件的图示在本质上是逻辑的,并且组件中的一个或多个可由单个计算装置或多个计算装置实现。例如,实例152、154、156、158可在不同的各种地理区域中的一个或多个物理计算装置上实现。类似地,前端120、预热池管理器130和工作者管理器140中的每一个可跨多个物理计算装置实现。可选地,前端120、预热池管理器130和工作者管理器140中的一个或多个可在单个物理计算装置上实现。在一些实施方案中,按需代码执行环境110可包括多个前端、多个预热池管理器和/或多个工作者管理器。尽管在图1的实例中示出四个虚拟机实例,但本文所描述的实施方案不限于此,并且本领域技术人员将理解,按需代码执行环境110可包括使用任何数量的物理计算装置实现的任何数量的虚拟机实例。类似地,尽管在图1的实例中示出单个预热池130a和单个活动池140a,但本文所描述的实施方案不限于此,并且本领域技术人员将理解,按需代码执行环境110可包括任何数量的预热池和活动池。

根据本公开的实施方案,按需代码执行环境110还包括账户管理器160,所述账户管理器160包括用于管理用户在按需代码执行环境上的账户的组件。例如,账户管理器160可使得用户能够创建和管理账户(例如,通过设立账户的配置文件,所述配置文件可包括诸如支付信息、任务的执行或入列的偏好等的细节),创建由账户拥有的任务,提交与任务相对应的代码,查看有关任务执行的细节,指定如何触发任务等。账户和/或与账户的任务相对应的代码的细节可存储在账户数据存储库164中。账户数据存储库164可对应于任何持久性的或基本上持久性的数据储存装置,诸如硬盘驱动器(hdd)、固态驱动器(sdd)、网络附属存储(nas)、磁带驱动器或其任何组合。虽然被示出为单个数据存储库,但账户数据存储库164可包括多个底层逻辑或物理数据存储库(例如,用于保存用户账户配置文件的第一数据存储库、用于保存与任务相对应的代码的第二数据存储库等)。此外,账户管理器160可使得第一账户的用户能够与第二账户的用户共享对该第一账户的任务的访问。例如,账户管理器160可提供用户接口(例如,gui、cli、api等),从而使得第一账户的用户能够指定应当对其他账户的用户可用的任务、以及该任务的应当能够或应当不能够由其他账户定制的方面。例如,用户可指定在调用期间传递以用于由另一账户执行任务的第一参数能够针对另一账户进行定制,而第二参数则不能。类似地,用户可指定访问特定资源的任务的许可能够或不能针对另一账户进行定制。更进一步地,用户可指定共享任务的条件(例如,任务只能与特定账户、特定类型的账户、具有特定许可证的账户等共享)。用于共享任务的参数(例如,是否共享任务、可定制哪些方面、可与谁共享等)可存储在账户数据存储库164内。

账户管理器160可进一步被配置来使得用户能够请求访问从另一账户共享的任务。在一些情况下,账户管理器160可提供使得用户能够浏览、搜索和请求访问其他账户的共享任务的功能。在其他情况下,这种功能可单独从按需代码执行环境110提供,或者由按需代码执行环境110的图1中未示出的其他组件提供。一旦用户找到另一账户的任务,用户就可以将访问所述任务的请求提交给账户管理器160。账户管理器160可包括有助于检索和处理此类请求的跨账户控制器162。在一个实施方案中,跨账户控制器162可验证用户是否具有访问其他账户的任务的许可(例如,已经满足用于共享任务的参数),然后在所述用户的账户上创建任务的别名。说明性地,在用户账户内别名可用作任务的“占位符”或“快捷方式”。以此方式,别名可与任务共享某些相似性,因为任务可被用户“调用”以引起底层代码的执行。但是,与任务不同,与别名相关联的用户可能不能访问或查看底层代码本身。相反,账户管理器160可简单地使用户能够指定别名应当引用什么底层任务(例如,在按需代码执行环境110的另一账户上)。此后,可使用对别名的调用来执行由别名引用的任务的底层代码。

在一些情况下,账户管理器160可进一步使得用户能够将别名与定制相关联,所述定制影响如何通过按需代码执行环境110执行由别名引用的任务。例如,账户管理器160可使得用户能够指定对所引用的任务的参数的“覆盖”,使得对别名的调用致使任务以与用于直接对任务的调用的参数不同的参数或另外的参数来执行。作为另一实例,账户管理器160可使得用户能够指定在通过别名调用时应当执行任务的许可、在通过别名执行时应当对任务可用的资源、或用于选择要在其上执行任务的虚拟机实例的标准。这些定制可连同别名的记录一起存储在账户数据存储库164中,这样调用别名(例如,在具有用于与别名相关联的账户的适当证书的情况下)可致使任务是使用定制来执行的。

图2描绘计算系统(称为服务器200)的一般体系结构,其实现本公开的实施方案以便使得能够对按需代码执行环境110上的任务进行跨账户访问。图2中描绘的服务器200的一般体系结构包括可用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可用物理电子装置来实现,如下文更详细地讨论的。服务器200可包括比图2所示的那些元件多得多(或更少)的元件。然而,没有必要示出所有这些通常的常规元件以便提供可用的公开内容。另外,图2所示的一般体系结构可用于实现图1所示的其他组件中的一个或多个。如图所示,服务器200包括处理单元210、网络接口212、计算机可读介质驱动器214、输入/输出装置接口216,它们全部都可通过通信总线彼此通信。网络接口212可提供到一个或多个网络或计算系统的连接性。因此,处理单元210可通过网络104从其他计算系统或服务接收信息和指令。处理单元210还可与存储器220进行来回通信,并且进一步通过输入/输出装置接口216提供用于任选显示器(未示出)的输出信息。输入/输出装置接口216还可接受来自任选输入装置(未示出)的输入。

存储器220可包含计算机程序指令(在一些实施方案中被分组成模块),处理单元210执行所述计算机程序指令以便实现本公开的一个或多个方面。存储器210通常包括ram、rom和/或其他持久性、辅助性或非暂时性计算机可读介质。存储器210可存储操作系统224,所述操作系统224提供计算机程序指令以供服务器200的一般管理和操作中的处理单元210使用。存储器220还可包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器220包括用户接口单元222,所述用户接口单元222生成用于例如通过导航和/或浏览接口(诸如安装在计算装置上的浏览器或应用程序)在计算装置上显示的用户接口(和/或其指令)。另外,存储器220可包括和/或与一个或多个数据储存库(诸如数据存储库202)通信,所述一个或多个数据储存库可对应于任何持久性的或基本上持久性的数据存储装置,诸如硬盘驱动器(hdd)、固态驱动器(sdd)、网络附属存储(nas)、磁带驱动器或其任何组合。

除了用户接口单元222之外和/或与用户接口单元222组合,存储器220可包括对应于计算机可执行指令的账户管理软件226,所述计算机可执行指令在由服务器200执行时实现上面关于账户管理器160所描述的功能。虽然账户管理软件226在图2中被示出为服务器200的一部分,但在其他实施方案中,账户管理器160的全部或一部分可由按需代码执行环境110的其他组件和/或另一个计算装置实现。例如,在本公开的某些实施方案中,与按需代码执行环境110通信的另一个计算装置可包括与被展示为账户管理器160的一部分的模块和组件类似地操作的若干模块或组件。

虽然将图2的计算装置描述为实现账户管理器160,但相同的或类似的计算装置能够另外地或可选地用来实现按需代码执行环境110的其他组件。例如,这种计算装置可独立地或与其他组件(例如,数据存储库)相结合地使用以实现图1的预热池管理器130或工作者管理器140。可修改置于存储器180内的软件或计算机可执行指令,以使得能够执行本文关于预热池管理器130或工作者管理器140所描述的功能。

参考图3,描绘了用于向按需代码执行环境110提交代码以创建与第一账户相关联的任务以及为该任务创建别名以使得第二账户能够对任务进行跨账户访问的说明性交互。图3的交互在(1)处开始,其中与按需代码执行环境110上的第一账户相关联的用户装置102a向前端120提交用于在按需代码执行环境110上创建任务的信息。说明性地,所提交的信息可包括可被执行以实现任务的功能的代码以及有关任务或代码的元数据,诸如编写代码的语言、传递给代码函数的参数、执行代码所需的许可、代码所需的或优选的执行环境(例如依赖关系、所需的操作系统等)、使得按需代码执行环境110能够执行代码的其他数据、或用于触发任务的所需机制(例如http分组、api调用等)。所述信息还可包括与任务相关联的许可,诸如是否可与其他账户共享任务、以及在任务被其他账户调用的情况下可修改的任务执行的各方面(例如,包括以上所讨论的元数据的任何方面)。

在(2)处,前端120可将由用户装置102a提交的信息传递给账户管理器160。在(3)处,账户管理器160进而可利用所述信息来生成(与用户装置102a相关联的)第一账户的任务。例如,账户管理器160可将代码以及相关联的元数据和许可存储在账户数据存储库164内。虽然在图3中未示出,但账户管理器160和/或前端120可将有关所创建的任务的信息(诸如已经创建了任务的确认)、或用于触发任务的访问信息(例如,可传输触发任务的http分组的url、在触发任务时使用的证书等)返回给用户装置102a。

此后,在(4)处,与第二账户相关联的用户装置102b可向前端120提交访问由用户装置102a创建(且与第一账户相关联)的任务的请求。如图3所示,在一些情况下,用户装置102b可进一步提交针对所述任务的定制。这些定制通常可修改或覆盖与任务或代码相关联的任何元数据,包括(但不限于)传递给代码函数的参数、执行代码所需的许可、代码所需的或优选的执行环境、或用于触发任务的所需机制。例如,当代表第二用户账户执行任务时,定制可请求将另外的或不同的参数、而非在代表第一账户执行时传递的参数传递给底层代码。作为另一实例,当代表第二用户账户执行任务时,定制可请求应当为底层代码提供与在代表第一账户执行时提供的不同的许可(例如,访问与第二账户相关联的资源的许可)。

在(5)处,前端120可将访问任务的请求以及任何请求的定制传递给账户管理器160。在(6)处,账户管理器160进而可验证(与第二账户相关联的)用户装置102b具有为任务创建使得第二账户的用户能够执行任务的别名的许可。例如,账户管理器160可检查与用户装置102a的任务相关联的许可,以验证第二账户有资格进行任务的跨账户访问。如上所述,这种跨账户访问可能需要例如第二账户与指定的许可证、特定账户类型或由用户装置102a(例如,结合上述的交互(1))指定的其他标准相关联。在验证第二账户有资格对任务进行跨账户访问之后,在(7)处,账户管理器160可生成任务的别名,并将所述别名与第二账户相关联。说明性地,账户管理器160可以类似于生成与第二账户相关联的任务的方式创建别名。然而,别名可引用第一账户的任务,而非直接指定底层代码和元数据。因此,别名可用作第一账户上的任务的“快捷方式”或“引用”,所述“快捷方式”或“引用”使得用户装置102b能够修改有关别名的某些元数据,而不是查看任务的底层代码或修改除了用户装置102所允许的之外的元数据。因此,可允许第二账户有限地访问第一账户的任务,同时维持任务的保密性和安全性。虽然在图3中未示出,但账户管理器160和/或前端120可将有关所创建的别名的信息(诸如已经创建了别名的确认)、或用于通过别名触发任务的访问信息(例如,可传输触发任务的http分组的url、在通过别名触发任务时使用的证书等)返回给用户装置102b。

本领域技术人员将理解,图3的交互可包括上述那些交互的另外的或替代的交互。例如,在一些情况下,一组任务的所有者(例如,第一账户的用户)可将那些任务指定为相互关联的,并且将用于所述一组任务的许可指定为集合。说明性地,用户可将任务集合指定为形成用户服务的api(例如,如由在按需代码执行环境110上执行的其他任务、由辅助服务106等所提供的)。在按需代码执行环境110提供使得用户能够浏览和搜索不同账户的任务的功能的情况下,按需代码执行环境110可进一步使此类任务集合在浏览和搜索期间变得可用。此外,除了提交访问其他账户的单独任务的请求之外,按需代码执行环境110可被配置来接收和处理访问任务集合的请求。通过利用任务集合,用户可例如在按需代码执行环境110上创建“基于云的api”,由此用户可将api内的功能提交作为按需代码执行环境110上的任务,并且使得其他用户能够执行这些任务。因此,用户可创建和启用api,而无需控制处理功能的底层硬件、监视所使用的计算资源、控制对此类资源的使用的记账等。在某些情况下,用户可指定用于api的许可,使得需要特定许可证来从其他账户调用api内的任务,从而使得用户能够维持对api的控制,即使在按需代码执行环境110上实现api内的功能的执行时也是如此。

在某些情况下,图3的交互可进一步实现对任务(或任务集合)的更新或修改。例如,虽然参考新提交的任务描述了交互(1)至(3),但这些交互还可用于提交当前任务的修改(例如,以便修改任务的底层代码)。在此类情况下,账户管理器160可修改现有任务的属性(例如,通过修改用于任务的代码、许可等),而非生成新任务。在一些情况下,账户管理器160还可验证或修改与经修改的任务相关联的别名(例如,以便验证这些别名是否符合更新的许可,通过别名应用的定制是否符合更新的代码或许可等)。

参考图4,描绘了用于跨账户执行(例如,代表第二账户执行由第一账户拥有的任务)按需代码执行环境110上的任务的说明性交互。如上面关于图3所述,通过使用别名可有助于跨账户执行,所述别名可与给定账户相关联,但是引用不同账户上的任务(并且可能地定制如何执行所引用的任务)。出于描述的目的,将参考关于图3描述的相同任务别名(例如,与用户装置102b的账户相关联的任务别名,引用由用户装置102a的不同账户拥有的任务,图4中未示出)来描述图4的交互。相应地,图4的交互在(1)处开始,其中用户装置102b向前端120提交对任务别名的调用。如上所述,调用的提交可包括向前端120传输专用数据,诸如引用任务别名的http分组或api调用。虽然图4的交互被描述为包括由用户装置102b进行对任务别名的显式调用,但是对任务别名的调用可以与对任务本身的调用相同的各种方式发生,包括由辅助服务106提交调用(图4中未示出)或由按需代码执行环境110生成调用(例如,基于在满足特定标准(诸如经过一段时间或检测到辅助服务106上的数据)时调用别名的规则)。调用可包括执行任务所需的任何信息,诸如用于执行的参数、用于执行任务或在任务执行期间使用的认证信息等。

此后,在(2)处,前端120确定与调用相关联的账户。说明性地,可基于调用的源(例如,源地址)、调用内的信息或两者来确定“调用”账户(例如,请求执行所调用任务的账户)。例如,用户装置102b可在调用内包括用于与用户装置102b相关联的账户的认证信息。可通过参考诸如图1的账户数据存储库164的数据存储库(图4中未示出)来确定“自有”账户(例如,最初创建或以其他方式拥有任务的账户)。如下文所描述,与调用相关联的账户可影响任务执行的许可、以及执行所归属的账户(例如,出于监视计算资源的消耗的目的等)。

另外,在(3)处,前端120验证调用被允许通过任务别名执行任务。例如,这种验证可包括:验证别名调用中包括适当的证书、验证别名的使用符合别名所引用的任务的许可(例如,用户装置102b被允许通过别名调用任务)、或者验证用户装置102b或相关联账户的其他属性(例如,账户在按需代码执行环境上有良好信誉)。虽然在图4中未示出,交互(3)(连同前端120的其他交互)可包括与按需代码执行环境的账户管理器160的通信,诸如检索有关别名的信息、由别名引用的任务、与别名或所引用任务相关联的账户的账户数据等。

在(4)处,前端120确定与别名相关联的对由别名引用的任务进行的任何定制。例如,前端120可确定在执行所引用的任务时由用户装置102b指定的任何修改,诸如参数添加、修改或覆盖、执行环境的改变、执行许可或可用资源的改变等。如上面参考图3所描述的,在某些情况下,这些定制可在创建别名时由用户装置102b指定。因此,交互(4)可涉及从数据存储库(例如,账户数据存储库164,图4中未示出)检索此类定制。另外地或可选地,可在对别名本身的调用内由用户装置102b指定定制。

在(5)处,前端120生成用于由别名引用的任务的执行指令,如可能基于与别名相关联的定制而修改的那样。这些执行指令可包括工作者管理器140成功执行任务所需要的任何信息,包括(但不限于):对任务的引用、任务的参数、任务所需要的许可、在任务执行期间要使用的或传递给任务的认证信息(例如,如在任务调用中提交的或与任务的定制相关联的)、要提供给执行任务的虚拟机实例的资源、与任务的执行相关联的账户的标识(例如,与任务别名相关联的账户、与别名中所引用的任务相关联的账户等)、或任务的执行应当归属到的账户的标识。虽然在图4中未示出,但在某些情况下前端120可在提交用于任务的执行指令之前实现另外的功能,诸如使任务执行指令入列以防止过度使用计算资源。

在(6)处,前端120将执行指令提交给工作者管理器140。工作者管理器140进而选择活动池140a内的要在其上执行任务的虚拟机实例。虚拟机实例的选择可包括各种标准,诸如满足用于执行任务的要求或偏好(例如,所需许可、资源访问、依赖关系、执行环境等)的虚拟机实例在活动池140a内是否可用。在这种机器在活动池140a内不可用的情况下,工作者管理器140可与预热池管理器130(图4中未示出)交互,以将这种虚拟机实例添加到活动池140a,如在'556专利中所描述的。在满足用于执行任务的要求或偏好的多个虚拟机实例在活动池140内可用的情况下,工作者管理器140可基于多个标准(包括但不限于虚拟机实例的负载平衡)在虚拟机之间进行选择。

在一些情况下,按需代码执行环境110可对可执行任务的虚拟机实例施加限制。说明性地,在大多数情况下,工作者管理器140可被要求将由给定账户拥有的且在该账户的上下文中执行的任务置于与该账户相关联的虚拟机实例内(但所述虚拟机实例不执行与其他账户相关联的任务)。以此方式,可提高任务以及由任务管理的数据的安全性和保密性。然而,在实现任务的跨账户执行时,可在虚拟机实例的使用方面为工作者管理器140提供更多的灵活性。例如,因为任务的跨账户执行在某些情况下可能涉及对自有账户(例如,拥有所引用任务的账户)和调用账户(例如,与执行所引用任务的调用相关联的账户)两者的数据的访问,所以可将工作者管理器140配置为允许虚拟机实例上的任务的执行与自有账户或调用账户相关联。在选择虚拟机实例方面的这种提高的灵活性可提高工作者管理器140在使用底层计算资源时的效率(例如,通过将更多任务执行分组到单个底层硬件装置上)。在其他情况下,实现任务的跨账户执行可降低工作者管理器140在选择用于执行任务的虚拟机实例方面的灵活性,以便提高任务执行期间的安全性。例如,在请求跨账户执行任务的情况下,工作者管理器140可选择(或创建)与任务的自有账户和调用账户两者相关联的虚拟机实例,使得可在所述实例上仅仅执行与自有账户和调用账户两者相关联的跨账户任务。虽然此配置可提高安全性,但是它还可与底层硬件的增加的资源使用(例如,由于维持与两个账户相关联的单独虚拟机实例所需的开销)相关联。在一个实施方案中,工作者管理器140(例如,由按需代码执行环境110的管理员)配置来根据静态规则选择虚拟机实例(例如,以便选择与自有账户、调用账户、自有账户或调用账户、自有账户或调用账户两者等相关联的实例)。在另一个实施方案中,与任务别名或由别名引用的任务相关联的用户可指定如何选择用于执行任务的虚拟机实例。例如,自有账户或调用账户中的一者或两者可指定,该任务通过别名的执行可能或必须发生在与自有账户相关联的虚拟机上、可能或必须发生在与调用账户相关联的虚拟机上优选地发生在指定类型的虚拟机实例上等。

在选择要在其上执行任务的虚拟机实例之后,在(8)处,工作者管理器140可根据需要配置虚拟机实例,以便根据执行指令(例如,包括由用户装置102b指定的定制)执行任务。例如,工作者管理器140可在虚拟机实例上创建在其中执行任务的容器,授予虚拟机实例(或容器)许可或对执行任务所需要的资源的访问,并且向虚拟机实例提供任务底层的代码、形成该代码的依赖关系的数据等。此后,在(9)处,工作者管理器140可指示虚拟机实例执行任务。说明性地,指示虚拟机执行任务可包括将任务的参数传递给虚拟机,诸如任务调用内的由任务本身指定的那些参数、或通过对任务的定制指定的那些参数。例如,参数可包括用于在执行任务时使用的认证信息(例如,呈认证令牌、密码等的形式),所述认证信息可对可在执行任务期间使用的各种资源(例如,诸如数据库、服务等的网络可访问资源)设立许可。因为此类参数可由拥有任务的账户、调用任务的账户或两者设立,所以在虚拟机上执行的任务可类似地被授予对自有账户、调用账户或两者的网络资源的访问。虽然在图4中未示出,但工作者管理器140可与按需代码执行环境110的其他组件交互,以便将有关任务的执行的数据(诸如任务是否成功执行的指示)、以及通过执行任务返回的数据等返回给用户装置102b。另外,工作者管理器140可采取任何必要的动作来维持活动池140a,诸如对执行任务的容器或虚拟机解除分配,如在'556专利中更详细地描述的。

此外,在(10)处,工作者管理器140可记录执行的各方面,以便将执行归属到按需代码执行环境上的适当账户。例如,工作者管理器140可记录执行任务所花费的时间量、执行任务所使用的计算资源(例如,cpu周期、存储器、网络带宽等)、或任务执行的其他属性,以便有助于按需代码执行环境的操作(例如,资源管理、配额控制、记账等)。在一个实施方案中,执行应当归属到的账户是调用账户(例如,召用执行的账户)。在另一个实施方案中,执行应当归属到的账户是自有账户、或调用账户和自有账户的组合(例如,使得执行归属到自有账户和调用账户两者,或者在自有账户和调用账户之间划分)。例如,可由按需代码执行环境110根据由自有账户设置的任务的许可、由调用账户设置的任务的定制及其任何组合来指定执行应当归属到的账户。

本领域技术人员将理解,图4的交互可包括上述那些交互的另外的或替代的交互。例如,虽然参考预先存在的别名描述了图4,但在某些情况下可修改图4的交互,使得按需代码执行环境110可处理对跨账户任务执行的“即时”请求。例如,前端120可被配置来从用户装置获得执行与不同账户相关联的任务的请求,即使在该任务的别名尚未创建的情况下也是如此。前端120可通过以下方式来处理请求:首先创建任务的别名(例如,假设这样做的许可已得到验证),然后处理请求以通过新创建的别名执行任务。在某些情况下,创建的别名可以是临时的,这样创建的别名在执行引用任务的单个调用之后不会被存储(或被删除)。以此方式,即使没有预先设立的别名,也可使得用户能够召用任务的跨账户执行。

参考图5,将描述描绘用于生成别名的说明性例程500的框图,所述别名允许跨账户执行按需代码执行环境110上的任务。例程500在框502处开始,其中按需代码执行环境110(例如,通过前端120)接收创建任务别名的请求,从而引用与按需代码执行环境110上的不同账户相关联的任务。说明性地,所述请求可由用户通过由按需代码执行环境110提供的gui提交,或者以编程方式(例如,通过由按需代码执行环境110提供的api)提交。请求可指定例如由别名引用所需的任务、以及别名与之相关联的账户。

在框504处,当通过别名执行时,按需代码执行环境110(例如,通过gui、api等)接收要应用于任务的执行的定制。如上所述,定制可修改如何在按需代码执行环境处执行任务的各个方面,诸如像参数添加、修改或覆盖、执行环境的改变、执行许可或可用资源的改变等。在一些情况下,按需代码执行环境110可使得用户能够仅指定关于别名要引用的任务所允许的定制(例如,符合通过任务所有者应用于任务的许可的定制)。在其他情况下,按需代码执行环境110可使得用户能够指定对任务的任何定制,并返回任何非允许的定制的错误。

在框506处,按需代码执行环境110验证与请求相关联的账户是否有资格引起任务的跨账户执行。如上所述,任务的所有者可指定限制任务的跨账户执行的限制或资格标准。例如,所有者可指定仅特定账户或特定类型的账户(例如,与特定许可证相关联的账户)可引起任务的跨账户执行。在与请求相关联的账户没有资格引起任务的跨账户执行的情况下,例程500可结束。另外,框504可包括验证所请求的任何定制符合任务的许可。在不允许所请求定制的情况下,按需代码执行环境110可要求用户在例程500继续进行之前校正那些定制。

假设与请求相关联的账户有资格引起任务的跨账户执行,那么例程500继续到框508,其中在按需代码执行环境110处生成实现任务的跨账户执行的别名。说明性地,别名可与用户的账户相关联,并且在命名空间内用作与用户账户相关联的逻辑“对象”,使得引用该逻辑对象引起任务的跨账户执行。以此方式,别名可用作任务的“快捷方式”或“指针”,并且可以与该任务类似的方式被调用。然而,由于别名与不同账户而非任务相关联,并且可能与定制相关联,所以别名可使得该不同账户的用户能够根据任何请求的定制快速召用任务。

此后,在框510处,按需代码执行环境110可将别名的访问信息返回给请求用户。说明性地,访问信息可包括对别名的调用可指向的端点,诸如url。因此,通过提交根据访问信息的调用,请求的用户可在他们自己的账户的上下文中且他们所请求的定制被应用的情况下引起由另一账户拥有的任务的执行。然后,例程500在框512处结束。

参考图6,将描述描绘用于利用别名跨账户执行任务的说明性例程600的框图。例程600在框602处开始,其中按需代码执行环境110(例如,通过前端120)在引用第二账户的任务的第一账户上接收对别名(例如,如以上所描述的可通过图5的例程500创建的)的调用。说明性地,对别名的调用可以与对任务本身的调用可发生的相同或基本相似的方式发生,诸如通过将http分组传输到按需代码执行环境110、传输api调用等。

在框603处,按需代码执行环境110确定与调用相关联的账户。如上所述,按需代码执行环境110可基于调用的源(例如,源地址)、调用内的信息、或两者来确定“调用”账户(例如,请求执行所调用任务的账户)。按需代码执行环境110可通过参考数据存储库(诸如图1的账户数据存储库164,图4中未示出)来确定“自有”账户(例如,最初创建的或以其他方式拥有任务的账户)。与调用相关联的账户可影响任务执行的许可、以及执行所归属的账户(例如,出于监视计算资源的消耗的目的等)。

在框604处,按需代码执行环境110验证对别名的调用满足与该别名引用的任务相关联的许可。例如,所引用任务的所有者可指定只有特定账户或特定类型的账户可利用别名来调用任务,或者可对这些调用设置其他限制(例如,该调用只能在一天的特定时间、以指定的频率等发生)。因此,在执行任务之前,按需代码执行环境110可验证接收到的调用符合那些许可。

如果调用被验证为符合任务的许可,那么例程600继续到框606,其中按需代码执行环境110确定用于通过别名执行任务的定制(如果有的话)。说明性地,这些定制可预先设立且与别名相关联(例如,在创建别名时)、可在对别名的调用内指定、或其组合。定制可修改按需代码执行环境110如何执行任务的任何方面,受限于按需代码执行环境110和/或任务的所有者对此类定制的许可。例如,定制可修改传递到与任务相对应的代码的参数、执行任务所需的执行环境、执行期间任务可用的许可或资源等。

在框608处,按需代码执行环境110选择要在其上执行任务的虚拟机实例。虚拟机实例的选择可包括各种标准,诸如满足用于执行任务的要求或偏好(例如,所需许可、资源访问、依赖关系、执行环境等)的虚拟机实例在活动虚拟机实例池内是否可用、虚拟机实例的负载平衡或其他标准。在一些情况下,按需代码执行环境110可被配置来允许在与自有账户或调用账户相关联的虚拟机实例上执行任务,从而提高选择虚拟机实例的灵活性并因此提高工作者管理器140使用底层计算资源的效率。在其他情况下,按需代码执行环境110可选择(或创建)与任务的自有账户和调用账户两者相关联的虚拟机实例,使得可在实例上仅仅执行与自有账户和调用账户两者相关联的跨账户任务,从而提高执行任务的安全性。

在框610处,按需代码执行环境110致使所选择的虚拟机实例根据与所调用别名相关联的任何定制来执行任务。在某些情况下,这种执行可能要求在执行任务之前对虚拟机实例进行配置或修改,诸如通过在要在其中执行任务的虚拟机实例上创建容器,授予虚拟机实例(或容器)许可或对执行任务所需要的资源的访问,或者向虚拟机实例提供任务底层的代码、形成该代码的依赖关系的数据等。然后,虚拟机实例可代表与别名相关联的账户执行任务。因此,使得按需代码执行环境110的用户能够调用并执行其他账户的任务,同时维持该任务底层的代码的保密性和安全性。

在框611处,按需代码执行环境110可将执行归属到适当的账户。说明性地,将执行归属到账户可包括报告与该账户相关联的执行的各方面,诸如执行时间或执行期间所使用的计算资源。在一个实施方案中,执行应当归属到的账户是调用账户(例如,召用执行的账户)。在另一个实施方案中,执行应当归属到的账户是自有账户、或调用账户和自有账户的组合(例如,使得执行归属到自有账户和调用账户两者,或者在自有账户和调用账户之间划分)。例如,可由按需代码执行环境110根据由自有账户设置的任务的许可、由调用账户设置的任务的定制及其任何组合来指定执行应当归属到的账户。此后,例程600可在框612处结束。

以上所描述的方法和进程中的所有可在由一个或多个通用计算机或处理器执行的软件代码模块中具体化并且通过所述软件代码模块来完全自动化。所述代码模块可存储在任何类型的非暂时性计算机可读介质或其他计算机存储装置中。所述方法中的一些或全部能够可选地在专用计算机硬件中具体化。

除非另外特别说明,否则诸如“可”、“可以”、“可能”或“能够”等的条件性语言在上下文中通常应理解为用来表示:尽管其他实施方案不包括某些特征、元件和/或步骤,但某些实施方案包括某些特征、元件和/或步骤。因此,此类条件性语言通常并不意图暗示特征、元件和/或步骤是一个或多个实施方案以任何方式所要求的,或一个或多个实施方案一定包括用于在有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤被包括在任何特定实施方案中或将要在任何特定实施方案中进行的逻辑。

除非另外特别说明,否则诸如短语“x、y或z中的至少一个”的析取语言在上下文中通常应理解为用来表示项、术语等可以是x、y或z或它们的任何组合(例如,x、y和/或z)。因此,这种析取语言通常并不意图且不应暗示某些实施方案要求x中的至少一个、y中的至少一个或z中的至少一个均存在。

除非另外明确地说明,否则诸如‘一个’(‘a’或‘an’)的冠词通常应被解释为包括一个或多个所描述项。因此,诸如“被配置来……的装置”的短语意图包括一个或多个所列举的装置。此类一个或多个所列举装置也可被共同地配置来执行所陈述的列举项。例如,“被配置来执行列举项a、b和c的处理器”可包括被配置来执行列举项a的第一处理器,所述第一处理器与被配置来与执行列举项b和c的第二处理器相结合地工作。

本文所描述的流程图和/或附图中所描绘的任何例程说明、元件或方框应理解成潜在地代表包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令的代码模块、代码片段或代码部分。可选的实现方式被包括在本文所描述实施方案的范围内,其中如与本领域中的技术人员所理解的那样,元件或功能可删除、不按照所示出或所讨论的顺序执行,包括基本上同时执行或者逆序执行,具体取决于所涉及的功能。

鉴于以下条款可更好地理解上述内容:

条款1.一种用于使得能够跨账户执行按需代码执行环境上的任务的系统,所述系统包括:

非暂时性数据存储库,其被配置来存储任务,其中单独任务由所述按需代码执行环境的账户拥有并且与可执行以实现与所述单独任务相对应的功能的代码相关联,

一个或多个处理器,其配置有计算机可执行指令以:

从与第一账户相关联的用户计算装置接收使得能够执行由第二账户拥有的任务的请求,其中所述请求包括在代表所述第一账户执行所述任务时要进行的一个或多个定制,并且其中所述一个或多个定制包括要传递给执行与所述任务相对应的代码的虚拟机的用于所述第一账户的网络资源的认证信息;

生成与所述第一账户相对应的别名,其中所述别名引用由所述第二账户拥有的所述任务并指定所述一个或多个定制;

将访问信息返回给与所述第一账户相关联的所述用户计算装置,所述访问信息使得所述用户计算装置能够调用与所述第一账户相对应的所述别名,以便执行如通过所述一个或多个定制修改的由所述第二账户拥有的所述任务;

接收对与所述第一账户相对应的所述别名的所述调用;

在所述按需代码执行环境内选择要在其上执行与由所述第二账户拥有的所述任务相对应的代码的虚拟机实例,其中所述虚拟机实例专用于所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者;并且

在所述虚拟机实例内代表所述第一账户执行与由所述第二账户拥有的所述任务相对应的所述代码,其中所述代码的执行包括:将用于所述第一账户的所述网络资源的所述认证信息传递给所述虚拟机。

条款2.如条款1所述的系统,其中所述一个或多个处理器进一步配置有所述计算机可执行指令,以获得与由所述第二账户的用户设立的所述任务相关联的许可,并验证所述第一账户符合所述许可。

条款3.如条款2所述的系统,其中所述许可指示被允许生成所述任务的别名的单独账户或被允许生成所述任务的别名的账户类型中的至少一者。

条款4.如条款1所述的系统,其中所述一个或多个处理器进一步配置有所述计算机可执行指令,以在执行所述代码之前根据所述定制来修改所述虚拟机实例。

条款5.如条款1所述的系统,其中所述定制包括以下中的至少一者:对在代表所述第一账户执行时要传递给与所述任务相对应的所述代码的参数的修改或添加、对在执行所述代码时要赋予给所述虚拟机实例的许可的修改、对所述虚拟机实例内要使用的所述执行环境的修改、或对在执行所述代码时要提供给所述虚拟机实例的所述资源的修改。

条款6.一种用于使得能够跨账户执行按需代码执行环境上的任务的计算机实现的方法,所述计算机实现的方法包括:

从与所述按需代码执行环境上的第一账户相关联的用户计算装置接收限定所述按需代码执行环境上的任务的信息,所述信息包括计算机可执行代码,所述计算机可执行代码在由所述按需代码执行环境内的虚拟机实例执行时实现与所述任务相对应的功能;

从与第二账户相关联的用户计算装置接收使得能够代表所述第二账户执行所述任务的请求;

将访问信息返回给与所述第二账户相关联的所述用户计算装置,所述访问信息使得所述用户计算装置能够调用与所述第二账户相对应的所述别名,以便执行如通过所述一个或多个定制修改的由所述第一账户拥有的所述任务;

生成与所述第二账户相对应的别名,其中所述别名引用由所述第一账户拥有的所述任务;

接收对与所述第二账户相对应的所述别名的调用;

在所述按需代码执行环境内选择要在其上执行与所述任务相对应的代码的虚拟机实例,其中所述虚拟机实例与所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者相关联;以及

在所述虚拟机实例内代表所述第二账户执行与所述任务相对应的所述代码。

条款7.如条款6所述的计算机实现的方法,其中所述请求还包括:在代表所述第一账户执行所述任务时要进行的一个或多个定制。

条款8.如条款7所述的计算机实现的方法,其还包括:在执行所述代码之前根据所述定制修改所述虚拟机实例。

条款9.如条款7所述的计算机实现的方法,其还包括:从所述用户计算装置接收与所述第二账户的网络资源相关联的认证信息,其中在所述虚拟机实例内代表所述第二账户执行与所述任务相对应的所述代码包括:将所述认证信息传递给所述虚拟机。

条款10.如条款6所述的计算机实现的方法,其中所述请求还包括:在选择所述虚拟机实例时要应用的选择标准,并且其中选择所述虚拟机实例包括:根据所述选择标准来选择所述虚拟机实例。

条款11.如条款6所述的计算机实现的方法,其还包括:在执行所述代码期间监视所述虚拟机实例的计算资源使用,并将所述计算资源使用归属到所述第二账户。

条款12.如条款6所述的计算机实现的方法,其还包括;

从与所述第一账户相关联的所述用户计算装置接收修改所述任务的信息;

将所述信息应用于所述任务以产生经修改的任务;以及

验证所述别名符合所述经修改的任务。

条款13.如条款6所述的计算机实现的方法,其还包括:从与所述第一账户相关联的所述用户计算装置获得与所述任务相关联的许可,并验证所述别名的生成符合所述许可。

条款14.如条款6所述的计算机实现的方法,其还包括:从与所述第一账户相关联的所述用户计算装置获得与所述任务相关联的许可,并验证代表所述第二账户执行与所述任务相对应的所述代码符合所述许可。

条款15.如条款14所述的计算机实现的方法,其中所述许指定在代表所述第二账户执行所述任务之前必须与所述第二账户相关联的许可证。

条款16.一种包括计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令在由计算系统执行时致使所述计算系统:

从与按需代码执行环境上的第一账户相关联的用户计算装置接收限定所述按需代码执行环境上的任务的信息,所述信息包括计算机可执行代码,所述计算机可执行代码在由所述按需代码执行环境内的虚拟机实例执行时实现与所述任务相对应的功能;

从与第二账户相关联的用户计算装置接收对执行所述任务的调用;

生成与所述第二账户相对应的别名,其中所述别名引用由所述第一账户拥有的所述任务;

在所述按需代码执行环境内选择要在其上执行与所述任务相对应的代码的虚拟机实例,其中所述虚拟机实例与所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者相关联;并且

在所述虚拟机实例内代表所述第二账户执行与所述任务相对应的所述代码。

条款17.如条款16所述的非暂时性存储介质,其还包括:从与所述第二账户相关联的所述用户计算装置接收使得能够代表所述第二账户执行所述任务的请求,其中生成与所述第二账户相对应的所述别名是响应于接收到所述请求。

条款18.如条款16所述的非暂时性存储介质,其还包括:将与所述代码的执行相关联的计算资源归属到所述第一账户或所述第二账户中的至少一者。

条款19.如条款16所述的非暂时性存储介质,其中所述请求还包括:在代表所述第一账户执行所述任务时要进行的一个或多个定制,并且其中所述计算机可执行指令进一步致使所述计算系统:至少部分地通过应用所述一个或多个定制来执行所述代码。

条款20.如条款6所述的计算机实现的方法,其中所述计算机可执行指令进一步致使所述计算系统:在执行所述代码期间监视所述虚拟机实例的计算资源使用,并将所述计算资源使用归属到所述第二账户。

条款21.如条款6所述的计算机实现的方法,其中所述计算机可执行指令进一步致使所述计算系统:从与所述第一账户相关联的所述用户计算装置获得与所述任务相关联的许可,并验证所述别名的生成符合所述许可。

条款22.一种用于使得按需代码执行环境上的任务能够用作应用程序编程接口的系统,所述系统包括:

非暂时性数据存储库,其被配置来存储任务,其中单独任务由所述按需代码执行环境的账户拥有并且与可执行以实现与所述单独任务相对应的功能的代码相关联,

一个或多个处理器,其配置有计算机可执行指令以:

从与第一账户相关联的用户计算装置接收将由所述按需代码执行环境上的所述第一账户拥有的任务集指定为用于网络可访问服务的应用程序编程接口(“api”)的请求;

从与第二账户相关联的第二用户计算装置接收访问所述api的请求;

使得所述第二用户计算装置能够调用由所述按需代码执行环境上的所述第一账户拥有的所述任务集;

从所述第二用户计算装置接收对应于所述任务集中的至少一个任务的api调用;

在所述按需代码执行环境内选择要在其上执行与所述至少一个任务相对应的代码的虚拟机实例,其中所述虚拟机实例专用于所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者;

在所述虚拟机实例内代表所述第二账户执行与所述至少一个任务相对应的所述代码;

监视与所述代码的所述执行相关联的计算资源;并且

将与所述代码的所述执行相关联的计算资源归属到所述第二账户。

条款23.如条款22所述的系统,其中所述一个或多个处理器进一步配置有所述计算机可执行指令,以获得与所述第一账户的用户的所述api相关联的许可,以便验证所述第二账户符合所述许可。

条款24.如条款23所述的系统,其中所述许可指示被允许生成所述任务的别名的单独账户或被允许生成所述任务的别名的账户类型中的至少一者。

条款25.如条款22所述的系统,其中所述一个或多个处理器配置有所述计算机可执行指令,以使得所述第二用户计算装置能够至少部分地通过生成与所述第一账户相关联且引用所述任务集中的至少一个的别名来调用由所述按需代码执行环境上的所述第一账户拥有的所述任务集。

条款26.如条款25所述的系统,其中生成与所述第一账户相关联且引用所述任务集中的至少一个的所述别名包括:对所述任务集中的每个任务生成不同的别名或生成共同引用所述任务集的别名中的至少一者。

条款27.一种用于使得按需代码执行环境上的任务能够用作应用程序编程接口的计算机实现的方法,所述计算机实现的方法包括:

从与所述按需代码执行环境上的第一账户相关联的第一计算装置接收与任务集相对应的可执行代码,其中与单独任务相对应的所述可执行代码的执行实现与网络可访问服务相关联的功能;

从所述第一计算装置接收将所述任务集指定为用于所述网络可访问服务的应用程序编程接口(“api”)的请求;

从与第二账户相关联的第二计算装置接收与所述任务集中的一个任务相对应的api调用;

在所述按需代码执行环境内选择要在其上执行与所述任务相对应的代码的虚拟机实例,其中所述虚拟机实例与所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者相关联;

在所述虚拟机实例内代表所述第二账户执行与所述任务相对应的所述可执行代码;

监视与所述代码的所述执行相关联的计算资源;以及

将与所述代码的所述执行相关联的计算资源归属到所述第二账户。

条款28.如条款27所述的计算机实现的方法,其还包括:从所述第二用户计算装置接收访问所述api的请求,其中所述请求包括:在代表所述第二账户执行所述任务集中的至少一个任务时要进行的一个或多个定制。

条款29.如条款28所述的计算机实现的方法,其还包括:在执行所述代码之前根据所述定制修改所述虚拟机实例。

条款30.如条款28所述的计算机实现的方法,其还包括:从所述用户计算装置接收与所述第二账户的网络资源相关联的认证信息,其中在所述虚拟机实例内代表所述第二账户执行与所述任务相对应的所述代码包括:将所述认证信息传递给所述虚拟机。

条款31.如条款27所述的计算机实现的方法,其中将所述任务集指定为用于所述网络可访问服务的所述api的所述请求还包括:在选择所述虚拟机实例时要应用的选择标准,并且其中选择所述虚拟机实例包括:根据所述选择标准来选择所述虚拟机实例。

条款32.如条款27所述的计算机实现的方法,其还包括:生成与所述第二账户相关联且引用所述任务集中的至少一个的别名。

条款33.如条款27所述的计算机实现的方法,其还包括:

从所述第一计算装置接收用于所述任务的经修改的可执行代码;

将所述经修改的可执行代码应用于所述任务以产生经修改的任务;以及

验证所述别名符合所述经修改的任务。

条款34.一种包括计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令在由计算系统执行时致使所述计算系统:

从与按需代码执行环境上的第一账户相关联的计算装置接收对用于网络可访问服务的应用程序编程接口(“api”)的调用,其中所述api通过所述按需代码执行环境上的由第二账户拥有的任务集来实现,并且其中所述任务集中的单独任务对应于可执行代码,所述可执行代码当在所述按需代码执行环境上执行时实现与所述单独任务相对应的功能;

标识所述按需代码执行环境上与所述调用相对应的任务;

在所述按需代码执行环境内选择要在其上执行与所述任务相对应的代码的虚拟机实例,其中所述虚拟机实例与所述第一账户的任务的执行或所述第二账户的任务的执行中的至少一者相关联;

在所述虚拟机实例内代表所述第一账户执行与所述任务相对应的所述可执行代码;

监视与所述代码的所述执行相关联的计算资源;并且

将与所述代码的所述执行相关联的计算资源归属到所述第一账户。

条款35.如条款34所述的非暂时性存储介质,其中对所述api的所述调用还包括:在执行所述按需代码执行环境上的所述任务时要进行的一个或多个定制,并且其中所述计算机可执行指令致使所述计算系统:至少部分地通过应用所述一个或多个定制来执行所述代码。

条款36.如条款35所述的非暂时性存储介质,其中所述定制包括以下中的至少一者:对在代表所述第一账户执行时要传递给与所述任务相对应的所述代码的参数的修改或添加、对在执行所述代码时要赋予给所述虚拟机实例的许可的修改、对所述虚拟机实例内要使用的所述执行环境的修改、或对在执行所述代码时要提供给所述虚拟机实例的所述资源的修改。

条款37.如条款34所述的非暂时性存储介质,其中所述计算机可执行指令致使所述计算系统:生成与所述第二账户相关联且引用所述任务集中的至少一个任务的别名。

条款38.如条款34所述的非暂时性存储介质,其中所述计算机可执行指令致使所述计算系统:

从所述第二账户的计算装置接收用于所述任务的经修改的可执行代码;

将所述经修改的可执行代码应用于所述任务以产生经修改的任务;并且

验证所述别名符合所述经修改的任务。

条款39.如条款34所述的非暂时性存储介质,其中所述计算机可执行指令致使所述计算系统:获得在选择所述虚拟机实例时要应用的由所述第二账户的用户提供的选择标准,并根据所述选择标准来选择所述虚拟机实例。

条款40.如条款34所述的非暂时性存储介质,其中所述计算机可执行指令致使所述计算系统:获得与所述第二账户的用户的所述api相关联的许可,以便验证所述第一账户符合所述许可。

条款41.如条款40所述的非暂时性存储介质,其中所述许指定在代表所述第二账户执行所述任务之前必须与所述第二账户相关联的许可证。

条款42.如条款34所述的非暂时性存储介质,其中与第一账户相关联的所述计算装置是所述按需代码执行环境内的虚拟机实例。

应当强调,可对上述实施方案作出许多改变和修改,所述改变和修改的元素应被理解为包括在其他可接受的实例当中。所有此类修改和改变在本文中意图被包括在本公开的范围内,并且受以下权利要求的保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1