函数计算+NAT网关,函数从此有IP

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
函数计算FC,每月15万CU 3个月
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 背景 函数计算(FC)作为用户逻辑执行者与传统serverful的执行者一大优势是百毫秒级别的动态伸缩。Serverless的方式在很多场景下无疑可以提高资源利用率为用户降低成本,然而高速动态的伸缩模式也带来了和传统执行方式的不同。

背景

函数计算(FC)作为用户逻辑执行者与传统serverful的执行者一大优势是百毫秒级别的动态伸缩。Serverless的方式在很多场景下无疑可以提高资源利用率为用户降低成本,然而高速动态的伸缩模式也带来了和传统执行方式的不同。FC的用户常问的一个问题是:函数计算机器的IP是什么?这个问题的出现是因为很多用户函数访问的服务有基于IP的白名单/防火墙,如微信小程序。由于FC的机器是根据用户的请求新增释放,机器的公网IP不固定,也没有机制为用户分配固定网段,这样的环境中如何去访问微信小程序这样的服务呢?之前有使用ECS/ECI proxy方式解决这类问题的文章三分钟解决函数计算访问小程序 IP 白名单问题,本文将介绍另一种使用函数计算VPC+NAT网关使得函数公网出方向有一个固定的EIP,从而实现允许函数计算去访问需要有公网IP做白名单验证的服务。

原理

解决方案的原理在本质上和阿里云用户个人VPC中不赋予实例public IP但是允许这些VPC实例可以访问公网地址的原理是一样的,简单说就是创建NAT网关 绑定公网EIP,最后添加SNAT条目,从而允许VPC内的实例通过绑定的EIP 去访问公网,公网接收端看到的client IP只有NAT上绑定的EIP。FC访问用户VPC中的资源就是通过FC Service VPC中的实例通过attach用户VPC内的弹性网卡ENI 将函数实例中的流量通过用户的弹性网卡进入用户VPC,如果用户函数通过attached ENI访问公网, 流量同样按照SNAT条目 (VSwithch/ECS -> public IP的映射),通过绑定在NAT上的EIP出向公网,client IP即EIP address.

nat_fc_invoke_vpc

配置步骤

假设用户已经有一个VPC,VSwitch,安全组 (如还没有请参考 配置VPC功能), 只需要3个步骤:

  1. 创建一个使用用户VPC的FC Service和测试函数
  2. 创建一个NAT Gateway + EIP的组合, 并绑定EIP到新创建的NAT Gateway
  3. 添加一条SNAT条目,映射FC Service 所在的switch到绑定的EIP

下文将逐步详细讲解各配置配置方法

创建FC Service/Function

  • 如图中所示创建Service时选择已有的VPC, Vswitch和SecurityGroup
  • 特别注意Internet Access 选项需要关掉,否则流量会优先从函数实例的公网IP出向internet,而不是NAT EIP
  • 服务角色(Service Role)要配置AliyunECSNetworkInterfaceManagementAccess策略, 详见配置VPC功能

nat_create_fc_service_vpc_cn

  • 服务创建好后编写一个简单的python2.7 测试函数
import logging
import requests

def handler(event, context):
  logger = logging.getLogger()

  # Ask myip.ipip.net, what is my IP?
  r = requests.get('https://myip.ipip.net')
  clientIP = r.content.split()[1]
  logger.info('Client IP ' + clientIP)
  return clientIP

配置NAT Gateway + EIP

  • NAT网关 控制台,选择 组合购买EIP, 该步骤创建NAT网关和公网EIP

    • 选择对应的VPCID
    • 示例选择新购EIP,也可以使用已有的EIP

nat_create_nat_eip_cn

  • 创建好NAT和EIP后,将EIP绑定到NAT网关

nat_bind_eip

添加SNAT条目

  • 在相关NAT网关详情中找到 SNAT列表,并 创建SNAT条目
  • 选择与FC Service绑定的Vswitch作为交换机
  • 选择与该NAT网关绑定的EIP作为公网IP地址

nat_create_snat_entry_ch

测试

完成以上三个步骤后,调用前面步骤创建好的测试函数, 访问myip.ipip.net端收到的client IP即为NAT网关绑定的EIP地址,这个地址就可以作为微信小程序等白名单验证的IP地址了。

nat_fc_invoke_ch

总结

本文介绍了使用NAT网关+EIP解决FC访问公网服务需要固定白名单IP地址的问题。相比较使用ECS/ECI代理,这个方案具有天生的高可用和无运维的优势,配置也相对简单。不足是NAT网关价格最少12元/天,比较ECI的方式 (2.28元/天) 价格略高。这个方案更适合可用性要求高,成本压力小的关键业务。至此FC访问需要IP白名单验证的
第三方服务的各个方案已经有了详细介绍,用户可根据实际情况和需求合理选择。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
高可用应用架构
欢迎来到“高可用应用架构”课程,本课程是“弹性计算Clouder系列认证“中的阶段四课程。本课程重点向您阐述了云服务器ECS的高可用部署方案,包含了弹性公网IP和负载均衡的概念及操作,通过本课程的学习您将了解在平时工作中,如何利用负载均衡和多台云服务器组建高可用应用架构,并通过弹性公网IP的方式对外提供稳定的互联网接入,使得您的网站更加稳定的同时可以接受更多人访问,掌握在阿里云上构建企业级大流量网站场景的方法。 学习完本课程后,您将能够: 理解高可用架构的含义并掌握基本实现方法 理解弹性公网IP的概念、功能以及应用场景 理解负载均衡的概念、功能以及应用场景 掌握网站高并发时如何处理的基本思路 完成多台Web服务器的负载均衡,从而实现高可用、高并发流量架构
目录
相关文章
|
1月前
|
存储 人工智能 运维
正式收官!阿里云函数计算携手优酷,用 AI 重塑影视 IP 创新边界
近日,阿里云联合优酷发起的 Create@影视 IP x AI 应用创新大赛,将网剧《少年白马醉春风》这一热门影视 IP 与阿里云 AI 技术相结合,由阿里云函数计算提供 AIGC 技术支持参赛者基于网剧《少年白马醉春风》IP 或“少年江湖”精神内核,用 AI 生成角色场景设计、手办设计、破次元合照、数字人等多样化的作品。
|
2月前
|
运维 负载均衡 Serverless
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 人工智能 搜索推荐
AI 网关基于 IP 地理位置,增强 Prompt 修饰能力
本⽂对 Prompt 的使用方式进行了简单介绍,让大家了解到 Prompt 对于 LLM 的重要性。并尝试在 Prompt 中结合用户 Geo IP 信息,实现 LLM 的个性化回复,提升问答的准确度。
|
2月前
|
运维 Serverless 网络安全
函数计算产品使用问题之函数运行时间大于24小时该如何解决
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
Serverless API 异构计算
函数计算产品使用问题之gpu实例函数该如何创建
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 运维 Serverless
函数计算产品使用问题之如何预热函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
监控 Serverless 开发者
函数计算发布功能问题之查看函数的调用日志的问题如何解决
函数计算发布功能问题之查看函数的调用日志的问题如何解决
|
2月前
|
运维 Serverless 调度
函数计算产品使用问题之怎么在HTTP触发的函数里添加或读取自定义头部
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
前端开发 Serverless Docker
函数计算产品使用问题之怎么获取客户端IP
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
存储 运维 Java
函数计算产品使用问题之怎么配置定时触发器来调用Java函数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
下一篇
无影云桌面