访问数据库是指在函数计算中通过函数调用数据库应用编程接口,对数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。本文以Python 3为例,介绍如何使用Serverless Devs部署函数来访问RDS PostgreSQL数据库。
前提条件
- 创建RDS PostgreSQL实例注意
-
请确保您所创建的数据库实例与需要访问该数据库实例的函数在同一地域。
-
建议您在函数计算支持的可用区创建数据库实例。
如果您的资源所在的可用区不在以下列表中,可以通过在您的VPC环境中创建一个与函数计算相同可用区的vSwitch,并在函数计算的服务的VPC配置中设置此vSwitch ID。由于同一VPC内不同vSwitch之间私网互通,因此函数计算可以通过该vSwitch访问在其他可用区的VPC内的资源。具体步骤,请参见遇到vSwitch is in unsupported zone的错误怎么办?。
地域 地域ID 函数计算支持的可用区 华东1(杭州) cn-hangzhou cn-hangzhou-f、cn-hangzhou-g、cn-hangzhou-h 华东2(上海) cn-shanghai cn-shanghai-b、cn-shanghai-e、cn-shanghai-g、cn-shanghai-f 华北1(青岛) cn-qingdao cn-qingdao-c 华北2(北京) cn-beijing cn-beijing-h、cn-beijing-c、cn-beijing-e、cn-beijing-f 华北3(张家口) cn-zhangjiakou cn-zhangjiakou-b、cn-zhangjiakou-a 华北5(呼和浩特) cn-huhehaote cn-huhehaote-a、cn-huhehaote-b 华南1(深圳) cn-shenzhen cn-shenzhen-e、cn-shenzhen-d 西南1(成都) cn-chengdu cn-chengdu-a、 cn-chengdu-b 中国香港 cn-hongkong cn-hongkong-c 新加坡 ap-southeast-1 ap-southeast-1a、ap-southeast-1b 澳大利亚(悉尼) ap-southeast-2 ap-southeast-2a、ap-southeast-2b 马来西亚(吉隆坡) ap-southeast-3 ap-southeast-3a 印度尼西亚(雅加达) ap-southeast-5 ap-southeast-5a、ap-southeast-5b 日本(东京) ap-northeast-1 ap-northeast-1b、ap-northeast-1a 英国(伦敦) eu-west-1 eu-west-1a 德国(法兰克福) eu-central-1 u-central-a、eu-central-1a、eu-central-1b 美国(硅谷) us-west-1 us-west-1a、us-west-1b 美国(弗吉尼亚) us-east-1 us-east-1b、us-east-1a 印度(孟买) ap-south-1 ap-south-1a、ap-south-1b
-
- 创建名为COMPANY的表,并插入ID、NAME、AGE、ADDRESS和SALARY列。
本示例中,
s init
初始化的模板代码中的代码逻辑为向名为COMPANY的数据库表插入一条数据,表的Schema包含ID、NAME、AGE、ADDRESS和SALARY列。因此,需提前创建该表与相应列。 - 安装Serverless Devs和Docker
- 配置Serverless Devs
- 创建安全组
在数据库部署的VPC内创建一个默认的安全组。如果使用已有的安全组,请确保该安全组的出口方向已放行数据库的端口和私网IP段(一般来说都是默认允许所有访问)。
配置数据库IP访问白名单
请使用IP地址白名单来实现安全访问,请勿使用安全组。否则,可能会导致函数连接不稳定的情况,影响业务正常运行。
部署并调用函数
更多信息