函数创建完成后,默认可以通过公网调用函数,无法通过VPC调用。如果您想让函数能够访问VPC内的资源,或允许指定的VPC来调用函数,则需手动为服务配置网络和权限。网络配置是服务级别的,即对该服务下的所有函数生效。本文介绍如何在函数计算控制台为服务配置网络。
网络访问能力
使用VPC功能会降低函数计算的冷启动效率,建议非必要请勿配置该功能。您可优先选择使用RAM授权方式访问资源,例如表格存储Tablestore。
- 公网流量:访问Internet地址,例如阿里云官网、淘宝网和云服务的公网地址。
- 私网流量:访问云产品内网地址,例如OSS内网Endpoint、ECS默认DNS的地址。
- VPC流量:访问用户VPC内的地址,例如RDS地址、NAS地址和VPC中ECS的内网地址。
根据对网络的不同设置,函数有以下网络访问能力,您可按需设置:
- 函数出流量:是否允许函数访问公网或VPC内资源的出流量,对应的配置包含允许访问 VPC和允许函数访问公网。
表 1. 函数出流量 网络配置 说明 仅允许函数访问公网 通过函数网络访问公网和内网,禁止访问VPC流量。所需的网络配置如下: - 设置允许访问 VPC为否。
- 设置允许函数访问公网为是。
仅允许函数访问VPC 通过用户VPC访问公网、内网和VPC流量,适用于PrivateZone、NAT网关和函数绑定VPC等场景。所需的网络配置如下: - 设置允许访问 VPC为是,并配置允许函数访问的VPC信息。
- 设置允许函数访问公网为否。
允许函数既能访问公网,也能访问VPC 通过函数网络访问公网和内网,通过用户VPC访问VPC流量。所需的网络配置如下: - 设置允许访问 VPC为是,并配置允许函数访问的VPC信息。
- 设置允许函数访问公网为是。
既不允许函数访问公网,也不允许访问VPC 通过函数网络访问内网,禁止访问公网和VPC流量。所需的网络配置如下: - 设置允许访问 VPC为否。
- 设置允许函数访问公网为否。
- 函数入流量:是否允许通过公网地址或VPC地址访问函数的入流量,对应的配置为仅允许指定 VPC 调用函数。
表 2. 函数入流量 网络配置 说明 允许通过公网和VPC同时访问函数 函数创建完成后,默认可以通过公网和VPC调用函数。默认的网络配置如下: - 设置仅允许指定 VPC 调用函数为否。
仅允许通过VPC访问函数 允许通过指定的VPC调用函数,并禁止通过公网调用函数。所需的网络配置如下: - 设置仅允许指定 VPC 调用函数为是,并配置允许调用函数的VPC信息。
函数计算支持的可用区
地域 | 地域ID | 函数计算支持的可用区 |
---|---|---|
华东1(杭州) | cn-hangzhou | cn-hangzhou-f、cn-hangzhou-g、cn-hangzhou-h |
华东2(上海) | cn-shanghai | cn-shanghai-b、cn-shanghai-e、cn-shanghai-g、cn-shanghai-f |
华北1(青岛) | cn-qingdao | cn-qingdao-c |
华北2(北京) | cn-beijing | cn-beijing-h、cn-beijing-c、cn-beijing-e、cn-beijing-f |
华北3(张家口) | cn-zhangjiakou | cn-zhangjiakou-b、cn-zhangjiakou-a |
华北5(呼和浩特) | cn-huhehaote | cn-huhehaote-a、cn-huhehaote-b |
华南1(深圳) | cn-shenzhen | cn-shenzhen-e、cn-shenzhen-d |
西南1(成都) | cn-chengdu | cn-chengdu-a、 cn-chengdu-b |
中国香港 | cn-hongkong | cn-hongkong-c |
新加坡 | ap-southeast-1 | ap-southeast-1a、ap-southeast-1b |
澳大利亚(悉尼) | ap-southeast-2 | ap-southeast-2a、ap-southeast-2b |
马来西亚(吉隆坡) | ap-southeast-3 | ap-southeast-3a |
印度尼西亚(雅加达) | ap-southeast-5 | ap-southeast-5a、ap-southeast-5b |
日本(东京) | ap-northeast-1 | ap-northeast-1b、ap-northeast-1a |
英国(伦敦) | eu-west-1 | eu-west-1a |
德国(法兰克福) | eu-central-1 | eu-central-a、eu-central-1a、eu-central-1b |
美国(硅谷) | us-west-1 | us-west-1a、us-west-1b |
美国(弗吉尼亚) | us-east-1 | us-east-1b、us-east-1a |
印度(孟买) | ap-south-1 | ap-south-1a、ap-south-1b |
如果您的资源所在的可用区不在以上列表中,可以通过在您的VPC环境中创建一个与函数计算支持的可用区的交换机,并在函数计算的服务的VPC配置中设置此交换机ID。由于同一VPC内不同交换机之间私网互通,因此函数计算可以通过该交换机访问在其他可用区的VPC内的资源。具体步骤,请参见遇到vSwitch is in unsupported zone的错误怎么办?。
注意事项
- 如果ACR企业版实例的访问控制页面的访问 IP存在默认解析标识,则服务的专有网络和交换机必须设置为默认解析的IP地址对应的专有网络和交换机。
- 如果ACR企业版实例的访问控制页面的访问 IP不存在默认解析标识,则服务的专有网络和交换机可以设置为该实例绑定的任意一组。
前提条件
- 创建服务
- (可选)创建网络资源
如果您未创建相关资源,可在具体配置时,选择自动配置。否则,需按以下文档操作指导提前创建相关资源:
配置网络和角色
函数计算访问VPC的配置和权限的配置是服务级别的,为一个服务配置了访问VPC的能力后,此服务下的所有函数都可以访问VPC。
常见问题
- 为什么函数计算无法成功接入VPC调试?
如果您的服务中已经设置允许函数访问VPC,却无法成功接入VPC,可能是以下原因:
- 交换机所在的子网故障或子网中的IP地址用尽,您可以在配置VPC时提供两个或者多个交换机ID,如果一个可用区出现故障,您的函数可以在其他可用区运行,提高容错能力。
- 安全组配置错误,请您按照以下要求配置安全组:
- 需要设置VPC中的安全组的入站规则为允许函数计算所在的安全组访问。
- 安全组出口方向需要允许ICMP协议,函数计算会通过ICMP协议检查VPC网络联通性。
安全组的具体配置步骤,请参见添加安全组规则。
- 新增网络资源时,发现资源不足该怎么办?
如果您在创建VPC网络资源时,自动配置提供的网络前缀长度为24,可用IP地址数量是252个,如果实例数量过多,有可能会超出限制。此时,您需手动调整交换机IP地址网段,以及对应的安全组。
故障排查
函数计算无法在设置vpcConfig时对访问VPC的权限进行检测,而需要在执行函数时检测,因此在通过InvokeFunction接口调用函数时会引入一些新的错误类型。下表描述了接入VPC时一些常见的错误,以便您迅速排查问题。
错误码 | 状态码 | 问题原因 | 解决方案 |
---|---|---|---|
InvalidArgument | 400 | 函数计算不支持您提供的vSwitchId所在的可用区。 | 重新设置vSwitchId。具体信息,请参见函数计算支持的可用区。 |
未找到vpcConfig中的vpcId、vSwitchIds或securityGroupId对应的资源。 | 检查vpcConfig参数设置。 | ||
设置的交换机或安全组不在相应的VPC中。 | 检查vpcConfig参数设置,确保vSwitchId和securityGroupId对应的资源在vpcId对应的VPC中。 | ||
AccessDenied | 403 | 未提供对ENI的操作授权。 | 检查服务的权限。更多信息,请参见授予函数计算访问其他云服务的权限。 |
ResourceExhausted | 429 | 交换机的网段内可用IP不足,函数计算无法创建更多的ENI。 | 创建一个网段更大的交换机,并更新vpcConfig的vSwitchId参数。
说明 建议您使用
/24 或/16 网段。
|
后续步骤
如需访问VPC内的数据库,具体步骤,请参见访问数据库。