操作场景
腾讯云云函数默认部署在公共网络中,本文介绍了通过私有网络配置实现云函数访问内网中的资源,例如 TencentDB、CVM、Redis、Kafka 等,确保了数据安全及连接安全。
注意事项
在进行私有网络配置时,需注意以下几点:
部署在 VPC 中的云函数默认隔离外网。若想使云函数同时具备内网访问和外网访问能力,可通过以下两种方式实现:
通过配置云函数公网访问能力,且公网访问可控制出口地址唯一,请参见 固定公网出口 IP。
通过 VPC 添加 NAT 网关,请参见 私有网络中配置 NAT。
云函数目前不支持对接到基础网络里的资源。
前提条件
操作步骤
修改网络配置
1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。
2. 在页面上方选择地域,单击需要配置的函数名。
3. 在函数配置页面,单击右上角的编辑。
4. 开启私有网络功能,选择需要接入的 VPC 网络和所需要的使用的子网。
使用 VPC 网络
在云函数完成内网访问配置,并开始使用 VPC 网络时,云函数将从当前独立的网络环境切换至已配置的 VPC 中。云函数启动时,将占用用户 VPC 子网中的 IP 地址作为云函数运行环境的 IP 地址。
云函数启动后,可通过代码及内网 IP 地址访问 VPC 中的资源,例如 云数据库 TencentDB for Redis、云关系型数据库、用户配置在 VPC 中的 CVM 等各种访问入口位于 VPC 中的资源。
以下为访问 云数据库 TencentDB for Redis 的示例代码,其中 Redis 实例在 VPC 内的 IP 地址为
10.0.0.86
。# -*- coding: utf8 -*-import redisdef main_handler(event,context):r = redis.StrictRedis(host='10.0.0.86', port=6379, db=0,password="crs-i4kg86dg:abcd1234")print(r.set('foo', 'bar'))print(r.get('foo'))return r.get('foo')
VPC 网络中访问自定义域名
如果需要对接自定义域名解析服务器,需要在云函数环境内自定义
name server
配置,当前可通过配置 OS_NAMESERVER
环境变量来实现。实际配置如下表:环境变量名 | 值设置规则 | 作用 |
OS_NAMESERVER | 可以为一个或多个 IP 地址、或域名,多个地址时使用;分号分隔。 最多可以支持配置5个自定义 name server。 | 配置自定义 name server。 |
使用如下 Python 语言实现的示例代码,可通过打印输出
/etc/resolv.conf
文件检查配置生效情况。with open("/etc/resolv.conf") as f:print(f.readlines())
相关操作
查看网络配置
1. 登录 Serverless 控制台,单击左侧导航栏的函数服务。
2. 在页面上方选择地域,并单击已配置内网访问的函数名,即可通过所属网络和所属子网了解到具体配置。