在Web控制台输入代码后,需要指定被AWS Lambda调用的函数名称。可以通过代码中的处理程序(Handler)区域完成这个指定。因为用户可以在压缩文件中上传多个文件,处理程序的命名规则如下:
例如,Node.js处理程序的默认值是在index.js文件中导出的index.handler。Python中,默认值是指向lambda_funciton.py文件中名为lambda_handler函数的lambda_function.lambda_handler。当向Web控制台粘贴代码时,index(Node.js)和lambda_function(Python)是默认的名字,处理程序(Handler)区域已经被自动配置为使用默认的名字。当使用Node.js时,记得要提供被处理程序使用的函数名称。
如果你希望使用代码中其他的函数,需要在处理程序中更新名字(图2-4)。在Web控制台输入的代码可以包括多个函数,上传的zip文件中也可以包含多个文件和函数,但仅有在Handler中被指定的函数,才会被AWS Lambda调用。其他函数可以在代码内部被调用。
AWS Lambda支持对运行环境的严格安全控制:任何在AWS Lambda中执行的代码都需要对应操作的权限。这是通过AWS Identity and Access Management(IAM)的角色和策略实现的,我们在后续章节会详细讲解。当函数被执行时,它会担当配置中设定的角色。角色可以跟一个或多个策略匹配。策略描述了针对行为、资源或限制条件等的执行权限。担当一个角色允许函数在与其角色相关联的策略范围内执行。
Amazon CloudWatch Logs是本例中唯一涉及的资源,使用basic execution role角色即可:在Role菜单中创建一个basic execution role。
·选择创建新的角色。
·使用myBasicExecutionRole作为角色的名称。
·不用选择任何策略模版,对应的区域留空白即可。
图2-4 在提供代码后,选择代码中哪一个函数是AWS Lambda调用的入口,选择AWS IAM角色以便获取正确的权限,选择或输入内存分配、超时时间等。可以指定Amazon VPC来访问特定VPC环境中的资源
下次,如果你需要同样的角色,可以选择使用已有角色,然后从Existing role菜单中选择。没有必要创建多个相同配置的角色,而要尽可能地重用已有角色。
提示
现阶段的例子中,不需要选择任何策略模版,因为函数并未使用任何需要额外权限的外部资源。本书后续更加复杂的例子中,你会需要创建对特定资源进行读写的角色。这些角色不会被重用,因为它们是针对特定资源进行的定制角色。
现在我们需要完成Lambda函数两个重要方面的配置:
·可用内存数量。这个设定同样会影响CPU能力的分配以及函数执行所带来的成本,所以选择你需要的尽可能小的数量。在本例的简单情况下,128MB内存就已经足够。如果想缩短函数的执行时间,提升内存的数量可以获取更多的CPU计算能力。
·函数被自动中止的超时时间设定。这个设定用来避免由于错误的代码导致函数被长时间执行,这将导致无法预知的成本。就我们这个简单的例子,3秒钟就足够了。配置这个参数时,你需要确保其不要小于函数的正常执行时间。
在下一节有关函数测试的内容中,你会看到我们如何通过日志来了解函数执行的内存和时间。
在最后,可以指定一个Amazon Virtual Private Cloud(VPC),这是AWS云平台提供的一个逻辑网络隔离功能。指定VPC可以让函数具备访问隔离网络中资源的能力。例如,置于VPC网络中的EC2虚拟机或这些虚拟机之上运行的NoSQL数据库,由Amazon RDS管理的关系型数据库等等。在配置了函数的VPC网络后,函数可以直接访问这些隔离环境中的资源。目前的例子中,我们选择默认的No VPC即可,因为我们的例子不使用任何VPC中的资源。
选择下一步,检查所有的配置,然后选择创建函数。恭喜你,完成了第一个函数!