linux cpu占用率如何看
281
2022-10-29
Serverless 解惑——函数计算如何访问 PostgreSQL 数据库
函数计算(Function Compute):函数计算 是事件驱动的全tuoguan计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能。借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。
工作机制
访问 PostgreSQL 的原理、工作机制与访问 Mysql 数据库完全相同,本文不再重复阐述,更详细的内容请参考 访问 Mysql 数据库 中的工作机制章节。
配置与函数编写
公共配置
创建专有网络VPC
登录 VPC控制台。 参阅 VPC 搭建专有网络 创建VPC和交换机。
创建安全组
注意:设置安全组策略的时候,需要在出口方向放行 PostgreSQL 实例的端口和配置的 VPC 内网 IP 段。 创建与配置 PostgreSQL 实例 创建适合业务需求的云数据库 PostgreSQL 版实例可以参考 云数据库 PostgreSQL 版。注意:创建云数据库 PostgreSQL 版实例需要选择和函数计算配置相同的 VPC 实例,可以配置和函数计算不同的可用区的交换机,因为相同的 VPC 实例下不同可用区交换机内网是互通的。
函数计算配置 VPC
注意:函数计算服务所在区域与公共配置中创建的资源所在区域一致。
函数编写与调试
下面演示 Python3 开发语言访问 PostgreSQL 数据库。
使用 Fun 工具在建立存放代码和依赖模块目录下安装依赖和项目部署。
Python3
在本地建立一个目录,用于存放代码和依赖模块,在该目录下新建 template.yml 文件,例如 /tmp/code/template.yml,内容如下。 ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: PostgreSQL-test: Type: 'Aliyun::Serverless::Service' Properties: Description: This is PostgreSQL service Role: 'acs:ram::1986114430***:role/fc-public-test' SimpleRequest VpcConfig: VpcId: vpc-**** VSwitchIds: - vsw-*** SecurityGroupId: sg-*** InternetAccess: true python-test: Type: 'Aliyun::Serverless::Function' Properties: Handler: 'index.handler' Initializer: 'index.initializer' Runtime: python3 Timeout: 10 MemorySize: 128 CodeUri: './' EnvironmentVariables: HOST: pgm-bp1yawvyyu***.pg.rds.aliyuncs.com PASSWORD: Txd123** PORT: 1433 DATABASE: test_123 USER: *** 在该目录下创建 Funfile 文件内容如下。 RUNTIME python3 RUN fun-install pip install psycopg2 执行fun install命令安装依赖: $ fun install using template: template.yml start installing function dependencies without docker 安装过程。。。。 Install Success 在函数根目录下新建代码文件,例如 /tmp/code/index.py ,内容如下。 # -*- coding: utf-8 -*- import logging import psycopg2 import os,sys logger = logging.getLogger() def getConnection(): try: conn = psycopg2.connect( database = os.environ['DATABASE'], user = os.environ['USER'], password = os.environ['PASSWORD'], host = os.environ['HOST'], port = os.environ['PORT'], ) return conn except Exception as e: logger.error(e) logger.error("ERROR: Unexpected error: Could not connect to PostgreSQL instance.") sys.exit() def conditionallyCreateUsersTable(): conn = getConnection() cur = conn.cursor() cur.execute('''CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') conn.commit() conn.close() def initializer(context): conditionallyCreateUsersTable() def handler(event, context): try: conn = getConnection() cur = conn.cursor() cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 )"); conn.commit() return 'successfully' finally: conn.close() 执行以下命令部署函数。 $ fun deploy -y using template: template.yml using region: cn-hangzhou using accountId: ***********3743 using accessKeyId: ***********Ptgk using timeout: 60 部署过程。。。 function python-test deploy success service PostgreSQL-test deploy success 登录控制台,即可看到相关的服务、函数被创建成功,且触发执行可以返回正确的结果。
总结
通过本文介绍可以快速实现函数计算访问 PostgreSQL 数据库。
使用函数计算带来的优势:
无需采购和管理服务器等基础设施,只需专注业务逻辑的开发,可以大幅缩短项目交付时间和人力成本; 提供日志查询、性能监控、报警等功能快速排查故障; 免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异; 成本极具竞争力;
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~