本文介绍Node.js事件请求处理程序的结构特点和示例。
Event Handler签名
一个简单的Event Handler签名定义如下。
exports.handler = function(event, context, callback) {
callback(null, 'hello world');
};
Event Handler的示例解析如下:
handler
:方法名称。与函数计算控制台配置的请求处理程序(函数入口)相对应。例如,为FC函数配置的请求处理程序(函数入口)为index.handler
,那么函数计算会去加载index.js
中定义的handler
函数,并从handler
函数开始执行。event
:您调用函数时传入的参数。在Node.js运行环境中,取值类型为Buffer。context
:为您的FC函数调用提供在调用时的运行上下文信息。callback
:回调函数,用于标识函数执行结束并返回结果。其签名是function(error, data)
,error
为null
时表示正常返回,返回内容为data
。否则为异常返回,错误信息为error
。说明 根据data
的类型,函数计算会对返回结果做相应转换。- Buffer类型:不转换,原样返回。
- Object类型:转换为JSON格式后返回。
- 其他类型:转换为字符串后返回。
您也可以使用异步函数签名,具体示例如下所示。
exports.handler = async function(event, context, callback) {
callback(null, 'hello world');
};
示例一:解析JSON格式参数
示例代码
当你传入JSON格式参数时,函数计算会透传参数内容,需要您在代码中自行解析。下面是解析JSON格式事件的代码示例。
exports.handler = function(event, context, callback) {
var eventObj = JSON.parse(event.toString());
callback(null, eventObj['key']);
};
前提条件
操作步骤
- 登录函数计算控制台,在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
- 在函数管理页面,单击目标函数名称,然后在函数详情页面,单击函数代码页签。
- 在函数代码页签,在代码编辑器中输入上述示例代码,然后单击部署代码。说明 上述示例代码中函数的请求处理程序是
index.js
中的handler
方法。如果您的函数的请求处理程序配置不同,请获取对应的文件和方法进行更新。 - 在函数代码页签,单击测试函数右侧的
图标,从下拉列表中选择配置测试参数,输入如下示例测试参数,然后单击确定。
{ "key": "value" }
- 单击测试函数。函数执行成功后,查看返回结果,您可以看到返回结果为
value
。
示例二:通过临时密钥安全读写OSS的资源
示例代码
您可以使用函数计算为您提供的临时密钥访问对象存储OSS,代码示例如下所示。
var OSSClient = require('ali-oss');
exports.handler = function (event, context, callback) {
console.log(event.toString());
var ossClient = new OSSClient({
accessKeyId: context.credentials.accessKeyId,
accessKeySecret: context.credentials.accessKeySecret,
stsToken: context.credentials.securityToken,
region: 'oss-cn-shenzhen',
bucket: 'my-bucket',
});
ossClient.put('myObj', Buffer.from('hello, fc', "utf-8")).then(function (res) {
callback(null, 'put object');
}).catch(function (err) {
callback(err);
});
};
示例代码解析如下:
context.credentials
:表示从context
参数中获取临时密钥,避免在代码中硬编码密码等敏感信息。myObj
:OSS对象名称。Buffer.from('hello, fc', "utf-8")
:上传的对象的内容。callback(null, 'put object')
:上传成功正常返回put object
。callback(err)
:上传失败时返回err
。
前提条件
- 为服务配置具有访问对象存储OSS的权限的角色。具体操作,请参见授予函数计算访问其他云服务的权限。
- 创建运行环境为Node.js的函数。具体操作,请参见创建函数。
操作步骤
- 登录函数计算控制台,在左侧导航栏,单击服务及函数。
- 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
- 在函数管理页面,单击目标函数名称,然后在函数详情页面,单击函数代码页签。
- 在函数代码页签,在代码编辑器中输入上述示例代码,然后单击部署代码。说明 上述示例代码中函数的请求处理程序是
index.js
中的handler
方法。如果您的函数的请求处理程序配置不同,请获取对应的文件和方法进行更新。 - 单击测试函数。函数执行成功后,查看返回结果,您可以看到返回结果为
put object
。
示例三:调用外部命令
您的Node.js程序也可以创建fork
进程,调用外部命令。例如,您可以使用child_process
模块调用Linux的ls -l
命令,输出当前目录下的文件列表。代码示例如下:
'use strict';
var exec = require('child_process').exec;
exports.handler = (event, context, callback) => {
console.log('start to execute a command');
exec("ls -l", function(error, stdout, stderr){
callback(null, stdout);
});
}