我们已经从Web控制台测试了函数,但当有需要时,函数是否可以以Web界面之外的方式被使用呢?实际上,所有的Lambda函数都可以通过AWS Lambda调用API来被执行。要执行这样的操作,你需要使用AWS命令行界面。
安装和配置AWS CLI
为了安装和配置AWS CLI命令行工具,请参照AWS网站http://aws.amazon.com/cli/所提供的针对Windows、Mac和Linux的安装指导。
建议从文档中的Getting Started链接开始,为CLI创建一个AWS IAM用户。以下是本书例子需要的安全策略:
·AWSLambdaFullAccess
·AmazonAPIGatewayAdministrator
·AmazonCognitoPowerUser
当使用aws configure命令配置CLI时,需要将当前的AWS region设为默认值。否则,需要在每一个AWS CLI命令中通过--region的方式显式指定每条命令执行所针对的region。
同时也建议你启用文档中所描述的CLI自动命令完成功能。
为了测试AWS CLI的安装和配置是否正确,你可以尝试执行aws lambda list-functions命令来获取你账户下已经创建的AWS Lambda函数的一个列表,连同每个函数的配置信息,如内存大小、超时、执行角色等等。
CLI的默认输出格式是JSON,但是在初始配置CLI时可以使用--output选项进行更改。
为了调用我们刚才创建的函数,在命令行使用如下的语法(请注意JSON事件在单引号中):
警告
如果你使用Windows下的AWS CLI来执行Lambda函数调用,需要把上述的单引号更改为双引号,并重复一次
。例如,--payload'<JSON event>'应该更改为--payload"{""name"":""John""}"。
函数的输出被写入一个本地文件。例如,如果要问候“John”,就在命令行输入如下的命令:
警告
如果在配置AWS CLI时没有指定你创建和运行AWS Lambda的region的话,你必须在命令结尾通过--region参数指定,否则上述的命令会报错。
在命令行执行如下命令,可以测试没有name作为输入时函数的执行结果,返回的信息是Hello World!
在每次调用后,可以在output.txt中获取函数执行的其他有关信息。这个文件被保存在命令执行所在的目录。如果有必要,你可以指定一个其他的路径保存文件,如/tmp/output.txt或C:/Temp/output.txt。
提示
这个output文件在每次CLI调用后都会被覆盖,可以指定不同的文件名以避免输出信息被覆盖。
AWS CLI内置了一个帮助系统,可以进一步提供有关函数调用方法的详细信息。为了查阅帮助,在命令行执行如下命令:
在第1章我们讨论过,可以直接通过AWS Lambda Invoke API调用函数,而AWS CLI就是这样的客户端应用(图2-7)。
AWS CLI可以调用和执行Lambda函数,同时,AWS SDK为各类编程语言也提供了相同的调用语法,在复杂的应用中集成Lambda调用。具体而言,AWS Mobile SDK中有可用来调用Lambda函数的具体语法。我们会在第5章讨论如何用JavaScript SDK和Mobile SDK来调用Lambda函数。
客户端应用程序所使用的编程语言与开发函数所用的编程语言可以是不同的,因为在这类解耦的场景下,通信是以AWS Lambda Invoke API的方式完成的。实际上,每个函数的运行时都可以是不一样的,我们可以从语法、类库的可用程度等多个角度选择每个函数的运行时(编程语言),这样函数的开发变得更为简单。
图2-7 通过AWS CLI以Invoke API的方式调用AWS Lambda函数
提示
我们已经了解了使用AWS CLI调用Lambda函数,同样,使用AWS CLI还可以创建或配置甚至编写Lambda函数的代码。使用aws lambda help命令了解更多选项。