访问数据库是指在函数计算中通过函数调用数据库应用编程接口,对数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。本文以Python
3为例,介绍如何使用Serverless Devs部署函数来访问Redis数据库。
配置数据库访问IP地址白名单
请使用IP地址白名单来实现安全访问,请勿使用安全组。否则,可能会导致函数连接不稳定的情况,影响业务正常运行。
- 登录Redis管理控制台。
- 在顶部菜单栏的左上角,选择实例所属的地域。
- 在实例列表页,单击目标实例ID。
- 在左侧导航栏,单击白名单设置。
- 找到目标白名单分组,单击修改。
重要 此处填写的IP地址,需为在函数计算服务的网络配置中添加的vSwitch的IP地址段。
- 单击确定。
部署并调用函数
- 执行以下命令初始化项目。
s init start-fc-redis-python -d start-fc-redis-python
- 执行以下命令进入项目。
- 编辑s.yaml文件。
示例如下:
edition: 1.0.0
name: fcDeployApp
access: "default"
services:
fc-db-redis-python:
component: devsapp/fc
props:
region: cn-hangzhou
service:
name: fc-db-demo
description: 'demo for fc visit db'
internetAccess: true
vpcConfig:
vpcId: vpc-bp1hcg467ekqsv0zr**** # 数据库实例所在的VPC ID。
securityGroupId: sg-bp1gg2tyyzuvz8x0**** # 安全组ID。
vswitchIds:
- vsw-bp1sciqyju9qxocys**** # 请确保该vSwitch对应的网段已配置到数据库实例访问白名单中。
function:
name: redis
description: visit redis
runtime: python3
codeUri: ./code
handler: index.handler
memorySize: 256
timeout: 30
initializationTimeout: 60
initializer: index.initializer
environmentVariables:
REDIS_HOST: r-bp1v04cjj0jlr7****.redis.rds.aliyuncs.com # 数据库实例的私网地址。
REDIS_PASSWORD: Hangzhou**** # 数据库实例的密码。
REDIS_PORT: 63** # 数据库实例的私网端口。
- 执行以下命令构建项目。
- 执行以下命令部署项目。
- 执行以下命令调用函数。
s invoke -e "{}"
预期输出如下:
[2021-09-14T17:08:50.875] [INFO ] [S-CLI] - Start ...
========= FC invoke Logs begin =========
FC Initialize Start RequestId: ccd73383-048d-4c8d-834e-93da59b86a21
FC Initialize End RequestId: ccd73383-048d-4c8d-834e-93da59b86a21
FC Invoke Start RequestId: eccafc0a-493e-4f3e-9afa-45c0b84a2c0f
counter: 0
FC Invoke End RequestId: eccafc0a-493e-4f3e-9afa-45c0b84a2c0f
Duration: 27.51 ms, Billed Duration: 28 ms, Memory Size: 256 MB, Max Memory Used: 34.05 MB
========= FC invoke Logs end =========
FC Invoke Result:
0
End of method: invoke