最佳实践

私有网络通信

最近更新时间:2020-06-08 16:03:07

操作场景

腾讯云云函数默认部署在公共网络中,本文介绍了通过私有网络配置实现云函数访问内网中的资源,例如 TencentDB、CVM、Redis、Kafka 等,确保了数据安全及连接安全。

注意事项

在进行私有网络配置时,需注意以下几点:

  • 部署在 VPC 中的云函数默认隔离外网。若想使云函数同时具备内网访问和外网访问能力,可通过以下两种方式实现:
  • 云函数目前不支持对接到基础网络里的资源。

前提条件

创建云函数

操作步骤

修改网络配置

  1. 登录云函数控制台,单击左侧导航栏中的【函数服务】。
  2. 在页面上方选择地域,单击需要配置的函数名。
  3. 在“函数配置”页面中,单击右上角的【编辑】。
  4. 开启【私有网络】功能,选择需要接入的 VPC 网络和所需要的使用的子网。

使用 VPC 网络

在云函数完成内网访问配置,并开始使用 VPC 网络时,云函数将从当前独立的网络环境切换至已配置的 VPC 中。云函数启动时,将占用用户 VPC 子网中的 IP 地址作为云函数运行环境的 IP 地址。为了降低云函数对子网的 IP 地址占用,运行中的云函数实例会共享一组 proxy 对,并根据网络带宽使用率对 proxy 对进行扩缩容。

云函数启动后,可通过代码及内网 IP 地址访问 VPC 中的资源,例如 云数据库 TencentDB for Redis云关系型数据库、用户配置在 VPC 中的 CVM 等各种访问入口位于 VPC 中的资源。
以下为访问 云数据库 TencentDB for Redis 的示例代码,其中 Redis 实例在 VPC 内的 IP 地址为 10.0.0.86

# -*- coding: utf8 -*-
import redis
def 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 配置

在云函数完成内网访问配置后,若需要在 VPC 网络中使用域名方式访问网络内的自建服务,通常需要使用自定义 name server 实现域名解析。
为了支持云函数环境内的自定义 name server 配置,目前可以通过配置 OS_NAMESERVER 环境变量来实现自定义 name server。如下表:

环境变量名 值设置规则 作用
OS_NAMESERVER
  • 可以为一个或多个 IP 地址、或域名,多个地址时使用;分号分隔。
  • 最多可以支持配置5个自定义 name server
配置自定义 name server

验证配置

如下例代码,可通过打印输出 /etc/resolv.conf 文件检查配置生效情况。

with open("/etc/resolv.conf") as f:
    print(f.readlines())

相关操作

查看网络配置

  1. 登录云函数控制台,单击左侧导航栏中的【函数服务】。
  2. 在页面上方选择地域,并单击已配置内网访问的函数名,即可通过所属网络所属子网了解到具体配置。
目录