函数计算CFC

    配置CFC函数以访问百度云中的RDS

    关系型数据库RDS,英文全称Relational Database Service是一个专业化的高性能、高可靠云数据库服务,支持Mysql、SQL Server、PostgreSQL引擎,提供简易方便的Web界面管理、可靠的数据备份和恢复、完备的安全管理、完善的监控等功能。 在本教程中,您将执行以下操作:

    • 创建您的百度云MySQL 数据库引擎实例(仅Mysql5.7以上支持CFC访问)。在 MySQL 实例中,您将创建一个数据库 (exampledb),其中包含一个示例表 (employee)。 关于RDS的更多信息,请参阅百度云RDS
    • 创建一个 CFC 函数来访问 ExampleDB 数据库,创建一个表 (Employee),添加几个记录,然后检索表中的记录。
    • 手动调用 CFC 函数并验证查询结果。这样您可以验证您的 CFC 函数是否可以访问 VPC 中的 RDS MySQL 实例。

    创建RDS

    在本教程中,您的CFC函数将创建一个表 (Employee),插入一些记录,然后检索这些记录。CFC函数创建的表具有以下结构:

    Employee(EmpID, Name)

    首先,您需要启动RDS Mysql5.7 实例。如果您在百度云上存在RDS Mysql5.7 实例,请跳过此步骤。

    1.png

    • 创建用户

    2.png

    • 记下数据库名称、用户名称和密码。您还需要数据库实例的公网地址和CA证书,您可以从 RDS 控制台获取该信息(您可能需要等待,直到实例状态变为可用并且终端节点值显示在控制台中)。

    3.png

    创建CFC函数

    1.登录百度云平台官网。登录成功后,选择“产品服务>云函数计算 CFC”,进入“函数列表”页面,点击创建函数,进入创建函数界面

    4.png

    2.填写函数名称、描述,并根据需要选择运行语言,本教程以Nodejs 6.11的运行语言为例。

    5.png

    3.选择“编辑类型”,编辑类型分为:在线编辑和上传.ZIP文件两种,本教程将通过上传.ZIP文件方式创建函数, 首先在创建example目录,进入此目录执行以下npm命令

       npm init 
       npm install mysql --save

    打开您的本地文本编辑器,并编写您的代码。保存文件(例如,index.js)。 在创建 cfc 函数时,您将使用此文件名指定处理程序。

    var fs = require('fs');
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host: 'mysql57.rdsm2st64lnr7lj.rds.bj.baidubce.com', //上文中的受保护地址或公网域名
        user: 'testuser',
        password: 'password',
        database: 'exampledb',
        ssl: {
            ca: fs.readFileSync(__dirname + '/ca.pem')
        }
    });
    connection.connect();
    console.log('connected!')
    exports.handler = (event, context, callback) => {
        var p = new Promise(function(resolve, reject){
            var  employeeAddSql = 'INSERT INTO employee(Name) VALUES(?)';
            var  employeeAddSqlParams = ['LiLei'];
            connection.query('CREATE TABLE IF NOT EXISTS employee ( EmpID  int NOT NULL AUTO_INCREMENT, Name varchar(255) NOT NULL, PRIMARY KEY (EmpID))', function (error, results) {
                if (error) {
                    console.log(error);
                    reject(error)
                };
            });
            connection.query(employeeAddSql,employeeAddSqlParams, function (error, results) {
                if (error) {
                    console.log(error);
                    reject(error)
                };
                console.log("success");
                resolve(results);
            });
        });
        p.then(function (value) {
            callback(null, value);
        },function (reason) {
            callback(null, reason);
        })
    };

    注意

    为了获得更好的性能,connection.connect();放在了处理程序之外执行。

    将CA证书放入同一目录,目录结构如下

    .
    ├── ca.pem
    ├── index.js
    ├── node_modules
    ├── package-lock.json
    └── package.json

    压缩文件夹的内容,即您的部署程序包(例如,example.zip)。 进入目录

    zip -r  example.zip *

    然后,在创建您的CFC函数时指定此选择上传.ZIP文件,上传此zip包

    4.环境变量,您还可以自定义函数执行时的环境变量。环境变量的总长度不能超过 4KB。

    测试函数

    点击右上角的测试,进行函数测试

    6.png

    在弹窗中点击执行

    7.png

    上一篇
    DuerOS开放平台开发者使用CFC构建一个Custom-Skill
    下一篇
    百度智能小程序使用云开发构建CFC云函数