云函数 Node.js

Tencentcloud-Serverless-Nodejs 是腾讯云云函数 SDK,集成云函数业务流接口,简化云函数的调用方法。在使用该 SDK 的情况下,用户可以方便的从本地、云服务器(CVM)、容器、以及云端函数里快速调用某一个云函数,无需再进行公有云 API 的接口封装。

相关产品
云函数 产品页,含版本规格、价格与购买入口。

一、功能特性

Tencentcloud-Serverless-Nodejs SDK 的功能特性可分为以下几点:

·高性能,低时延的进行函数调用。

·填写必须的参数后,即可快速进行函数间的调用(SDK 会默认获取环境变量中的参数,例如 region,secretId 等)。

·支持内网域名的访问。

·支持 keepalive 能力。

·支持跨地域函数调用。

注意:函数间调用 SDK 仅适用于事件函数,Web 函数可通过在函数代码中请求 Web 函数对应路径的方式发起调用。

二、开发准备

·开发环境
已安装 Node.js 8.9 及以上版本。

·运行环境
已安装 tencentcloud-serverless-nodejs SDK,支持 Windows、Linux 和 Mac 操作系统。

·建议使用 Serverless Cloud Framework,可快速部署本地云函数。

三、通过 npm 安装(推荐)

1. 根据实际需求,选择目录路径,并在该路径下创建新的目录。
例如,创建一个名称为 testNodejsSDK 的项目目录,项目路径为 /Users/xxx/Desktop/testNodejsSDK。

2. 进入 testNodejsSDK 目录,并依次执行以下命令,安装 tencentcloud-serverless-nodejs SDK。

npm init -ynpm install tencentcloud-serverless-nodejs

安装完成后,在 testNodejsSDK 目录下可以查看到 node_modules,package.json 和 package-lock.json。

四、通过源码包安装

前往 Github 代码托管地址 下载最新源码包,解压源码包后进行安装。

五、使用云函数在线依赖安装

使用 云函数在线依赖安装,在 package.json 中执行以下命令并进行安装。

{ "dependencies": { "tencentcloud-serverless-nodejs":"*" }}

六、示例

1. 创建一个地域为北京,名称为 “FuncInvoked”,并用于被调用的 Node.js 云函数。该云函数内容如下:

'use strict';exports.main_handler = async (event, context, callback) => { console.log("\\n Hello World from the function being invoked\\n") console.log(event) console.log(event["non-exist"]) return event};

2. 在 testNodejsSDK 目录下新建文件 index.js,并输入如下示例代码,创建发起调用的 Node.js 云函数。

const { SDK, LogType } = require('tencentcloud-serverless-nodejs')exports.main_handler = async (event, context) => { context.callbackWaitsForEmptyEventLoop = false const sdk = new SDK({ region:'ap-beijing' }) //如果在云函数中运行并且绑定了有SCF调用资格的运行角色,会默认取环境变量中的鉴权信息 const res = await sdk.invoke({ functionName: 'FuncInvoked', logType: LogType.Tail, data: { name: 'test', role: 'test_role' } }) console.log(res) // return res}

其中主要参数获取途径如下:

·region:被调用云函数所在地域,这篇以 步骤1 中的北京地域为例。

·functionName:被调用云函数名称,这篇以 步骤1 中已创建的 FuncInvoked 函数为例。

·qualifier:被调用云函数版本,如未指定则默认使用 $LATEST。详情请参见 查看版本。

·namespace:被调用云函数所在命名空间, 如未指定则默认 default。详情请参见 命名空间管理。

·data:传递给被调用云函数的数据,被调用的云函数可以从 event 入参中读取此数据。

3. 创建一个地域为成都,名称为 “NodejsInvokeTest”,并用于调用的 Node.js 云函数。该云函数主要设置信息如下:

·执行方法:选择index.main_handler。

·代码提交方式:选择本地上传 zip 包。
将 testNodejsSDK 目录下的所有文件压缩为 zip 格式,并上传到云端。

4. 在 Serverless 控制台 单击新建的云函数,进入函数管理的代码编辑页面,然后单击测试,运行函数。输出结果如下:

"Already invoked a function!"

七、示例

1. 创建一个地域为北京,名称为 “FuncInvoked”,并且用于被调用的 Node.js 云函数。该云函数内容如下:

'use strict';exports.main_handler = async (event, context, callback) => { console.log("\\n Hello World from the function being invoked\\n") console.log(event) console.log(event["non-exist"]) return event};

2. 在 testNodejsSDK 目录下新建文件 index.js,作为发起调用的 Node.js 云函数,并输入如下示例代码:

const { SDK, LogType } = require('tencentcloud-serverless-nodejs')exports.main_handler = async (event, context) => { context.callbackWaitsForEmptyEventLoop = false const sdk = new SDK({ region:'ap-beijing', secretId: 'AKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxj', secretKey: 'WtxxxxxxxxxxxxxxxxxxxxxxxxxxxxqL' }) //如果在云函数中运行并且绑定了有SCF调用资格的运行角色,会默认取环境变量中的鉴权信息 const res = await sdk.invoke({ functionName: 'FuncInvoked', logType: LogType.Tail, data: { name: 'test', role: 'test_role' } }) console.log(res) // return res}

注意:secretId 及 secretKey:指云 API 的密钥 ID 和密钥 Key。你可以通过登录 访问管理控制台,选择访问密钥 > API 密钥管理,获取相关密钥或创建相关密钥。

3. 进入 index.js 所在文件目录,执行以下命令,查看结果。

·Linux 及 Mac 操作系统,执行以下命令:

export NODE_ENV=development && node index.js

·Windows 操作系统执行以下命令:

set NODE_ENV=development && node index.js

输出结果如下:

prepare to invoke a function!{"key":"value"}Already invoked a function!

八、API Reference

·Init

·Invoke

九、Init

在使用 SDK 前,建议执行 npm init 命令进行初始化 SDK。

参数信息:

参数名 是否必填 类型 描述
region 否 String 地域
secretId 否 String 默认会取 process.env.TENCENTCLOUD_SECRETID
secretKey 否 String 默认会取 process.env.TENCENTCLOUD_SECRETKEY
token 否 String 默认会取 process.env.TENCENTCLOUD_SESSIONTOKEN

十、Invoke

调用函数,目前支持同步调用。

参数信息:

参数名 是否必填 类型 描述
functionName 是 String 函数名称
qualifier 否 String 函数版本,默认为 $LATEST
data 否 String 函数运行入参
namespace 否 String 命名空间,默认为 default
region 否 String 地域
secretId 否 String 默认会取 process.env.TENCENTCLOUD_SECRETID
secretKey 否 String 默认会取 process.env.TENCENTCLOUD_SECRETKEY
token 否 String 默认会取 process.env.TENCENTCLOUD_SESSIONTOKEN
赞 (0)
上一篇 4天前
下一篇 4天前