更新时间:2025-07-31 GMT+08:00
分享

Node.js函数开发概述

FunctionGraph当前支持以下Node.js运行环境:

  • Node.js 6.10
  • Node.js 8.10
  • Nodejs 10.16
  • Nodejs 12.13
  • Node.js 14.18
  • Node.js 16.17
  • Node.js 18.15
  • Node.js 20.15

Node.js函数接口定义

Node.js 6.10函数接口定义

export.handler = function(event, context, callback)
  • 入口函数名(handler):入口函数名称, 需和函数执行入口处用户自定义的入口函数名称一致。
  • 执行事件(event):函数执行界面由用户输入的执行事件参数, 格式为JSON对象。
  • 上下文环境(context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。
  • 回调函数(callback):callback方法完整声明为callback(err, message),用户通过此方法可以返回err和message至前台结果显示页面。具体的err或message内容需要用户自己定义,如字符串。

Node.js 8.10及以后版本Runtime函数接口定义

Node.js 8.10及以后版本Runtime除了兼容Node.js 6.10 Runtime函数的接口定义规范,还支持使用async的异步形式作为函数入口。通过return进行返回。

exports.handler = async (event, context, callback[可选]) => { return data;}

Node.js函数的函数执行入口参数格式为:[文件名].[函数名],请通过FunctionGraph控制台进行函数执行入口配置。例如创建函数时设置函数执行入口为index.handler,那么FunctionGraph会去加载index.js中定义的handler函数。

Node.js的Initializer入口介绍

关于函数初始化入口Initializer的具体介绍请参考函数初始化入口Initializer

Node.js的Initializer入口格式为:[文件名].[initializer]

示例:实现initializer接口时指定的Initializer入口为“index.initializer”,那么函数工作流服务会去加载index.js中定义的initializer函数。

在函数工作流服务中使用Node.js编写initializer逻辑,需要定义一个Node.js函数作为initializer入口,以下为initializer的简单示例。

exports.initializer = function(context, callback) {
    callback(null, '');
    };
  • 函数名

    exports.initializer需要与实现initializer接口时的Initializer字段相对应。

    示例:创建函数时指定的Initializer入口为index.initializer,那么FunctionGraph会去加载index.js中定义的initializer函数。

  • context参数

    context参数中包含一些函数的运行时信息。例如:request id、临时AccessKey、function meta等。

  • callback参数

    callback参数用于返回调用函数的结果,其签名是function(err, data),与Nodejs中惯用的callback一样,它的第一个参数是error,第二个参数data。如果调用时error不为空,则函数将返回HandledInitializationError,由于屏蔽了初始化函数的返回值,所以data中的数据是无效的,可以参考上文的示例设置为空。

Node.js Runtime集成的三方件

表1 Node.js Runtime集成的三方件

名称

功能

版本号

q

异步方法封装。

1.5.1

co

异步流程控制。

4.6.0

lodash

常用工具方法库。

4.17.10

esdk-obs-nodejs

OBS SDK。

2.1.5

express

极简web开发框架。

4.16.4

fgs-express

在FunctionGraph和API Gateway之上使用现有的Node.js应用程序框架运行无服务器应用程序和REST API 。提供的示例允许您使用Express框架轻松构建无服务器Web应用程序/服务和RESTful API 。

1.0.1

request

简化HTTP调用,支持HTTPS并默认遵循重定向

2.88.0

SDK接口

Context类中提供了上下文方法供您在函数代码中使用,其声明和功能如表2所示。

表2 Context类上下文方法说明

方法名

方法说明

getRequestID()

获取请求ID。

getRemainingTimeInMilliSeconds ()

获取函数剩余运行时间。

getAccessKey()

获取用户委托的AccessKey(有效期24小时),使用该方法需要为函数配置委托。

当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。

getSecretKey()

获取用户委托的SecretKey(有效期24小时),使用该方法需要为函数配置委托。

当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。

getSecurityAccessKey()

获取用户委托的SecurityAccessKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

getSecuritySecretKey()

获取用户委托的SecuritySecretKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

getSecurityToken()

获取用户委托的SecurityToken(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。

getUserData(string key)

通过key获取用户通过环境变量传入的值。

getFunctionName()

获取函数名称。

getRunningTimeInSeconds ()

获取函数超时时间。

getVersion()

获取函数的版本。

getMemorySize()

分配的内存。

getCPUNumber()

获取函数占用的CPU资源。

getPackage()

获取函数组。

getToken()

获取用户委托的Token(有效期24小时),使用该方法需要为函数配置委托。

getLogger()

获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。

如调用info方法输出日志:

logg = context.getLogger()

logg.info("hello")

getAlias()

获取函数的别名。

图1所示,可在函数工作流控制台代码编辑器中使用context类。

图1 使用context类

相关文档

相关文档