配置CFC函数以访问百度云中的RDS
更新时间:2024-07-05
关系型数据库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 实例,请跳过此步骤。
- 您可以使用百度云控制台启动百度云的RDS MySQL 实例 参见创建RDS for Mysql主实例
- 创建RDS之后,请开通公网访问和设置SSL加密
- 创建数据库exampledb
- 创建用户
- 记下数据库名称、用户名称和密码。您还需要数据库实例的公网地址和CA证书,您可以从 RDS 控制台获取该信息(您可能需要等待,直到实例状态变为可用并且终端节点值显示在控制台中)。
创建CFC函数
1.登录百度云平台官网。登录成功后,选择“产品服务>云函数计算 CFC”,进入“函数列表”页面,点击创建函数,进入创建函数界面
2.填写函数名称、描述,并根据需要选择运行语言,本教程以Nodejs 6.11的运行语言为例。
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。
测试函数
点击右上角的测试,进行函数测试
在弹窗中点击执行