配置固定公网IP地址

函数计算系统默认的出口IP是动态的,无固定网段。而函数计算访问数据库、微信小程序或其他第三方服务时,需通过配置白名单来访问,此时您可以使用函数计算的固定公网IP功能绑定一个固定IP公网地址,然后将其添加到白名单列表中。本文介绍如何在函数计算控制台配置函数出口方向的固定公网IP地址。

注意事项

  • 固定IP地址功能需配合专有网络VPC的公网NAT网关来完成。通过创建一个公网NAT网关,并为其绑定一个弹性公网IP地址和添加一个SNAT条目,允许VPC内的实例通过此弹性公网IP地址访问公网。此时,在公网接收端查询到的客户端IP地址为该NAT网关绑定的弹性公网IP地址。

  • NAT网关和弹性公网IP地址均只能在某个地域的固定可用区购买。如果NAT网关、弹性公网IP与函数计算的服务所在的可用区不一致,您必须通过设置交换机来实现跨可用区公网互通。更多信息,请参见函数计算支持的可用区

  • 弹性公网IP地址在同一地域下的所有服务间共享。

  • RAM用户使用固定IP地址功能前,需先登录RAM 访问控制为其授予AliyunECSFullAccessAliyunVPCFullAccessAliyunEIPFullAccessAliyunNATGatewayFullAccess权限。

计费说明

配置固定公网IP地址可能会创建NAT网关和弹性公网IP地址,产生一定的费用。具体信息,请参见公网NAT网关计费弹性公网IP地址计费

首次配置固定公网IP地址

前提条件

  • 已完成函数访问VPC资源相关权限和网络的配置。具体操作,请参见配置网络和角色

  • 已配置允许访问 VPC。具体操作,请参见配置网络

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务操作列的配置
  3. 网络配置区域,参数固定公网 IP选择,参数允许函数访问公网选择为

    fixed-ip

    说明

    为保证函数正常访问外部网络,您可以先配置允许函数访问公网,固定IP生效之后再配置允许函数访问公网,平滑迁移流量。

  4. 单击保存,在弹出的固定公网 IP 配置对话框,仔细阅读提示信息,勾选复选框,然后单击确定

    1~2分钟后,页面将跳转至服务详情页面。您可以查看到刚才保存的网络配置信息,也可以前往专有网络控制台,查看刚才关联或自动创建的公网NAT网关相关资源信息。fixed-IP-result

结果验证

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 函数管理页面,单击目标函数名称,然后在函数详情页面,单击函数代码页签。
  4. 函数代码页签的代码编辑器中,编写代码。

    本文以Python代码为例。

    # -*- coding: utf-8 -*-
    import logging
    import requests
    
    def handler(event, context):
      logger = logging.getLogger()
      try:
        r = requests.get('https://myip.ipip.net')
        clientIP = r.content.split()[1]
        logger.info('Client IP: ' + clientIP)
      except:
        r = requests.get('http://ipinfo.io')
        clientIP = r.json()['ip']
        logger.info('Client IP: ' + clientIP)
      return clientIP
  5. 完成函数编写后,单击部署代码,然后单击测试函数

    执行成功后,查看返回结果返回的客户端IP地址,即配置的固定IP地址。

增加固定公网IP地址

如您需要增加其他的固定IP地址,操作步骤如下。

  1. 网络配置区域,单击固定公网 IP配置项下方的创建新的弹性公网IP

    fixed-ip-edit

    页面自动跳转到专有网络控制台

  2. 专有网络控制台,手动创建一个弹性公网IP地址并绑定到对应的NAT网关。具体步骤,请参见申请EIP

    绑定成功后,前往服务详情页面,您可查看到刚才保存的服务配置信息。fixed-2-IP

相关操作

如您需要关闭固定IP地址功能或删除已配置的固定IP地址,请先配置允许函数访问公网,然后前往专有网络控制台手动删除VPC对应的所有NAT实例。

常见问题

我在函数计算中访问数据库时,白名单如何配置?