这篇文章为大家详细介绍了为MongoDB数据库配置专有网络VPC以及Python3实现访问 MongoDB数据库的方法,文中示例代码非常详细,感兴趣的小伙伴们可以参考一下。
公共配置
创建专有网络VPC
- 登录 VPC控制台。
- 创建安全组
在安全组控制台 新建安全组,点击 创建安全组,设置安全组名称,网络类型选择 专有网络,并选择刚才创建的专有网络。
创建与配置 MongoDB 实例
- 创建成功后,在实例信息页面左侧的导航栏中单击白名单设置。
单击 default 区域框右侧的修改。
在弹出的对话框中,将函数计算所在的 VPC 网络的网段地址配置在白名单输入框中。
- 登录 VPC 控制台,在专有网络列表中找到应用所在的 VPC,单击该 VPC 的名称进入专有网络详情页面。
- 复制应用所在的 VPC 的 IPv4 网段。
- 在组内白名单设置框中粘贴该 VPC 的 IPv4 网段地址,然后单击确定。
最后访问 MongoDB 数据库 host 为实例的内网地址,可以登录阿里云控制台查看
函数计算配置 VPC
- 在 函数计算控制台 创建服务。
- 创建服务步骤请参考文章 服务的增删改查
- 【专有网络配置】选项中,选择您在步骤一中创建的 VPC 网络,交换机、安全组。
- 【权限配置】选项中,选择【新建角色】,点击【点击授权】,在角色快速创建页面,点击【同意授权】。
- 这步的操作是授予函数计算对 ENI 的操作权限,函数计算访问 VPC 中资源需要的权限请参考文章 配置函数计算访问 VPC 内的资源
- 点击确定,新建服务完毕。
###函数编写与调试
下面演示 函数示例创建:
- 建立一个目录,用于存放代码和依赖模块,在该目录下新建 template.yml文件,例如/tmp/代码/模板。yml,内容为:
<代码> ROSTemplateFormatVersion: & # 39; 2015 - 09 - 01 & # 39; 变换:& # 39;王坚:serverless - 2018 - 04 - 03 & # 39; 资源: MongoDB-test: ,类型:& # 39;王坚:Serverless:服务# 39; ,属性: ,描述:这是MongoDB服务 ,,角色:& # 39;acs:内存:XXXX:角色/fc-public-test& # 39; ,,LogConfig: ,,项目:XXX ,,Logstore: XXX ,,VpcConfig: ,,VpcId: vpc-XXXX ,,,VSwitchIds: ,,,,- vsw-XXX ,,SecurityGroupId: sg-XXXX ,互联网:没错 ,python测试: ,,类型:& # 39;王坚:Serverless:函数# 39; ,,属性: ,,,处理程序:& # 39;index.handler& # 39; ,,运行时:python3 ,,超时:10 ,,MemorySize: 128 ,,CodeUri: & # 39;。/& # 39; 代码>
李> <李>在该目录下创建Funfile文件内容为:<代码>运行时python3 代码运行fun-install pip安装pymongo >
李> <李>执行<代码>有趣安装代码> 命令安装依赖:
<代码>美元有趣的安装 使用模板:template.yml 没有码头工人开始安装函数依赖关系 安装过程.... 安装成功代码>
李> <李>在函数根目录下新建代码文件,例如/tmp/代码/索引。py,在代码中使用pymongo:
<代码> # - * -编码:utf - 8 - * 进口uuid 从pymongo进口MongoClient def处理程序(事件、上下文): ,,CONN_ADDR1=& # 39; dds-XXX.mongodb.rds.aliyuncs.com: 3717 & # 39; ,,CONN_ADDR2=& # 39; dds-XXXX.mongodb.rds.aliyuncs.com: 3717 & # 39; ,,REPLICAT_SET=& # 39; xxx # 39; ,,用户名=& # 39;xxx # 39; ,,密码=& # 39;xxxx # 39; ,,#获取mongoclient ,,客户=MongoClient ([CONN_ADDR1 CONN_ADDR2], replicaSet=REPLICAT_SET) ,,#授权。这里的用户基于管理数据库授权 ,client.admin。验证(用户名、密码) ,,#使用测试数据库的集合:testColl做例子,插入医生,然后根据演示名查找 ,,demo_name=& # 39; python & # 39;+ str (uuid.uuid1 ()) ,,打印(& # 39;demo_name: & # 39; + demo_name) ,,医生=dict(演示=demo_name MESG=澳愫肁psaraDB MongoDB") ,,doc_id=client.test.testColl.insert (doc) ,,在client.test.testColl.find d (dict(演示=demo_name)): ,,,,打印(& # 39;找到文档:& # 39;+ str (d)) ,,返回& # 39;成功# 39;
为MongoDB数据库配置专有网络VPC以及Python3实现访问MongoDB数据库