访问Lindorm云数据库是指在函数计算中通过函数调用数据库应用编程接口,对Lindorm云数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库的形式可以将结构化的数据持久化以实现状态共享。本文介绍如何通过Funcraft工具部署函数来访问Lindorm数据库。
编写函数
本文以Python 3开发语言的函数示例为例,介绍如何通过Funcraft工具编写函数访问数据库。
- 在本地建立一个目录,用于存放代码和依赖模块,在该目录下新建template.yml文件,例如/tmp/code/template.yml,示例内容如下。
ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
service:
Type: 'Aliyun::Serverless::Service'
Properties:
Description: This is Lindorm service
Policies:
- AliyunECSNetworkInterfaceManagementAccess
VpcConfig:
VpcId: vpc-XXXX
VSwitchIds:
- vsw-XXX
SecurityGroupId: sg-XXXX
InternetAccess: true
function:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: 'index.handler'
Runtime: python3
Timeout: 100
MemorySize: 1024
CodeUri: './'
代码中的关键参数含义如下:
- 声明了一个名为service的服务。
- Policies:授予函数计算管理ECS弹性网卡的权限,实现函数服务访问已创建的VPC内的资源。
- VpcConfig:为服务绑定已创建的VPC。您需要将以下参数值替换成自己的VPC相关信息:
- VpcId:专有网络ID。
- VSwitchIds:交换机ID。
- SecurityGroupId:安全组ID。
- 声明了一个名为function的函数。
- 在template.yml文件的同级目录下创建Funfile文件,示例内容如下。
RUNTIME python3
RUN fun-install pip install cassandra-driver
- 执行fun install命令安装依赖。
当代码编辑器出现以下打印内容时,说明安装成功。
Install Success
- 在template.yml文件的同级目录下新建代码文件,例如/tmp/code/index.py,示例内容如下。
# -*- coding: utf-8 -*-
import logging
import sys
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
logger = logging.getLogger()
def handler(event, context):
logger.info("start to test Lindorm ")
cluster = Cluster(
# 配置连接地址。
contact_points=["ld-bp10ljb1mxae5****-proxy-lindorm.lindorm.rds.aliyuncs.com"],
# 配置用户名和密码。
auth_provider=PlainTextAuthProvider("XXX", "XXX"))
session = cluster.connect()
session.execute("CREATE KEYSPACE IF NOT EXISTS testKeyspace WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};");
session.execute("CREATE TABLE IF NOT EXISTS testKeyspace.testTable (id int PRIMARY KEY, name text,age int,address text);");
session.execute("INSERT INTO testKeyspace.testTable (id, name, age, address) VALUES ( 1, 'testname', 11, 'hangzhou');");
rows = session.execute( "SELECT * FROM testKeyspace.testTable ;");
for row in rows:
logger.info("# row: {}".format(row))
session.shutdown()
cluster.shutdown()
- 执行以下命令,使用Funcraft工具部署。
当代码编辑器出现以下打印内容时,说明部署成功。
function <function-name> deploy success
service <service-name> deploy success
部署成功后,您可以登录函数计算控制台,在服务及函数页面看到刚部署的服务和函数。
调试函数
部署成功后,您可以在函数计算控制台调试函数。
- 登录函数计算控制台。
- 在顶部菜单栏,选择地域。
- 在左侧导航栏单击服务及函数,在服务列表区域,单击目标服务。
- 在函数列表页签,单击目标函数名称。
- 在代码执行页签下,单击执行。
执行完成后您可以查看执行结果和执行日志。