Node.js
本示例演示用 Node.js SDK 创建和执行您的 CFC 函数。
安装
推荐使用 npm 来安装。在终端输入如下命令:
1npm install @baiducloud/sdk --save
使用样例
示例使用当前可用的 nodejs12 运行时和 su 地域;如使用其他地域,请同步修改 endpoint 和 Region。运行示例前,请将包含 index.handler 的函数代码包保存为示例脚本同目录下的 function.zip,代码包内容需与 Handler 配置一致。`javascript
var fs = require('fs');
var path = require('path');
var CfcClient = require('@baiducloud/sdk').CfcClient;
var functionName = 'testHelloWorld';
var config = {
endpoint: 'https://cfc.su.baidubce.com',
credentials: {
ak: process.env.BCE_ACCESS_KEY_ID || '
// 还可以直接配置 ak 和 sk。
// credentials: {
// ak: '
// 创建 CFC 客户端。 var client = new CfcClient(config);
// 读取函数代码 ZIP 包并转成 Base64 编码。 var zipFile = fs.readFileSync(path.join(__dirname, 'function.zip')).toString('base64');
var body = { Code: { ZipFile: zipFile, Publish: false }, Description: 'CFC SDK Demo', Region: 'su', Timeout: 3, FunctionName: functionName, Handler: 'index.handler', Runtime: 'nodejs12', MemorySize: 128, Environment: { Variables: { a: 'b' } } };
var invokeBody = { key3: 'value3', key2: 'value2', key1: 'value1' };
var invokeOptions = { logToBody: false, invocationType: 'RequestResponse', logType: 'None', Qualifier: '$LATEST' };
client.createFunction(body).then(function (response) { // 创建函数成功。 console.log('create function:', response.body); return response; }).then(function (response) { // 执行函数。 return client.invocations(response.body.FunctionBrn, invokeBody, invokeOptions); }).then(function (response) { // 执行函数成功。 console.log('invocation result:', response.body); }).catch(function (err) { // 执行失败。 console.error('error:', err); });
1| 返回内容 | 说明 |
2|---|---|
3| `createFunction` 的 `response.body.FunctionBrn` | 创建成功后的函数 BRN,示例使用该值执行函数调用。 |
4| `createFunction` 的 `response.body.FunctionName` | 创建成功的函数名称。 |
5| `createFunction` 的 `response.body.Region` | 创建函数所在地域。 |
6| `createFunction` 的 `response.body.Runtime` | 创建函数使用的运行时。 |
7| `invocations` 的 `response.body` | 函数同步调用返回的正文,内容由函数代码决定。 |**参数说明**
8
9| 参数 | 必填 | 说明 |
10|---|---|---|
11| `endpoint` | 是 | CFC 服务访问地址,本示例使用 `https://cfc.su.baidubce.com`。 |
12| `credentials.ak` | 是 | 百度智能云 Access Key ID,建议从环境变量 `BCE_ACCESS_KEY_ID` 读取。 |
13| `credentials.sk` | 是 | 百度智能云 Secret Access Key,建议从环境变量 `BCE_ACCESS_KEY_SECRET` 读取。 |
14| `Code.ZipFile` | 是 | 函数代码 ZIP 包的 Base64 编码内容。 |
15| `Code.Publish` | 否 | 创建函数后是否发布版本,本示例为 `false`。 |
16| `Description` | 否 | 函数描述。 |
17| `Region` | 是 | 函数所属地域,需与 `endpoint` 对应,本示例为 `su`。 |
18| `Timeout` | 是 | 函数超时时间,单位为秒。 |
19| `FunctionName` | 是 | 函数名称,在当前地域内需唯一。 |
20| `Handler` | 是 | 函数入口,需与代码包内入口文件和导出方法一致,例如 `index.handler`。 |
21| `Runtime` | 是 | 函数运行时环境,本示例使用 `nodejs12`。 |
22| `MemorySize` | 是 | 函数内存大小,单位为 MB。 |
23| `Environment.Variables` | 否 | 函数环境变量。 |
24| `invokeBody` | 是 | 调用函数时传入的事件对象。 |
25| `invocationType` | 是 | 调用类型,`RequestResponse` 表示同步调用。 |
26| `logType` | 否 | 日志返回方式,本示例为 `None`。 |
27| `logToBody` | 否 | 是否在响应正文中返回日志。 |
28| `Qualifier` | 否 | 函数版本或别名,本示例调用 `$LATEST`。 |
评价此篇文章
