配置CFC函数以访问百度云中的RDS
所有文档

          函数计算 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云函数