
# 配置函数的网络环境
本章节介绍如何通过函数工作流控制台，配置函数访问公网或访问VPC内资源。
#### 操作场景
函数的网络访问能力如[表1]所示，可根据业务需求配置。
 表1网络配置说明 
| 网络配置                                                   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| [函数访问公网]  | 函数访问公网的配置方式有以下两种： - [使用默认网卡]：函数创建成功后，无需手动配置即可使用默认网卡访问公网。  - [配置VPC内固定公网IP]：通过手动配置函数访问VPC，并在VPC内配置公网NAT网关绑定EIP，分配独占公网访问带宽，以实现公网访问。   |
| [函数访问VPC] | 函数访问VPC的配置方式有以下两种： - 允许函数访问VPC内资源：函数可访问所选VPC内的资源，默认禁用公网访问权限。若需访问公网，请参考[配置VPC内固定公网IP]的方式开放公网访问。  - 仅允许指定的VPC调用函数：函数仅接受所选VPC的调用请求，禁止通过公网调用。                                           |
   
#### 约束与限制
- 在一个账号下所有的函数最多能绑定4个不同的子网。
- 开启"函数访问VPC内资源"时，函数将禁用默认网卡并使用VPC绑定的网卡，是否允许公网访问由配置的VPC决定，开关"函数访问公网"将不生效。
 
 #### 配置函数访问公网
配置函数访问公网有以下两种方式：
- [使用默认网卡]
  
  函数创建成功后，"函数访问公网"功能默认开启，无需手动配置即可使用默认网卡访问公网，允许函数访问公网上的服务。
  其公网访问带宽为用户间共享，不保证可靠性，适用于测试场景，生产环境建议[配置VPC内固定公网IP]。
- [配置VPC内固定公网IP]
  
  在生产环境中如需配置函数访问公网，以及在函数访问公网服务时需要固定公网出口IP的场景（例如被访问服务需要白名单验证），可通过在VPC内配置公网NAT网关绑定EIP的方式实现。开启是否允许公网访问将由配置的VPC决定，**开关"允许函数访问公网"将不再生效**。
  **前提条件**：
  1. 已创建虚拟私有云和子网，请参见[创建虚拟私有云基本信息及默认子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
  
  2. 已申请弹性公网IP，请参见[申请弹性公网IP](https://support.huaweicloud.com/usermanual-eip/eip_0008.html)。
  
  3. 已[配置函数访问VPC]。
  
  
  **创建公网NAT网关步骤：**
  1. 在服务控制台左侧导航栏，选择" 网络\> NAT网关"进入NAT网关控制台，单击"购买公网NAT网关"。
  
  2. 在公网NAT网关购买页面，参考[购买公网NAT网关](https://support.huaweicloud.com/usermanual-natgateway/zh-cn_topic_0150270259.html)输入相关信息，确认规格信息后提交，完成购买。
  
  3. 购买完成后，单击公网NAT网关名称进入详情页面，选择"[添加SNAT规则](https://support.huaweicloud.com/usermanual-natgateway/zh-cn_topic_0127489529.html)"，单击"确定"完成配置。
   
 #### 配置函数访问VPC
FunctionGraph支持函数访问自行创建的VPC内资源，或配置其他用户共享的VPC子网，共享VPC的相关介绍请参考[共享VPC]。
在函数工作流控制台中，配置函数访问VPC有以下两种选项：
- 允许函数访问VPC内资源：允许函数访问所选VPC内的资源，不再具有默认的公网访问权限。如需访问公网，请先开启此功能，再参见[配置VPC内固定公网IP]进行公网访问配置。
- 仅允许指定的VPC调用函数：仅允许通过指定的VPC调用函数，并禁止通过公网调用。此配置适用于需严格控制函数调用来源的场景，确保函数只能通过特定网络环境访问。
**前提条件**：
需在默认"default"安全组中配置如下要求的入方向规则和出方向规则，添加规则详情请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。
- 入方向规则：配置"策略"为"允许"、"协议端口"为"ICMP"、"源地址"设置的最小范围为函数所选VPC网段的规则。
  例如[图1]所示，函数的VPC网段为192.168.x.x/24，安全组的入方向需增加一个规则："策略"选择"允许"、"协议端口"选择"ICMP"、"源地址"设置最小范围的网段为192.168.x.x/24。
  图1入方向规则   
  ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002312922498.png "点击放大") 
- 出方向规则：配置"策略"为"允许"的相关业务端口规则。
 
**步骤一：配置函数的委托权限**
函数使用VPC访问能力时，必须为函数配置VPC管理权限的委托，配置委托权限的操作步骤请参见[配置委托权限](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0920.html)。以下为涉及的委托权限：
- VPC Administrator：使用VPC功能需要为函数配置"VPC Administrator"委托权限，或参见[表2]和[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)授予访问VPC需要配置的最小权限，确保函数能操作相关云服务。
   表2最小授权项配置 
  | 权限    | 授权项              |
  |:---|:---|
  | 删除端口  | vpc:ports:delete |
  | 查询端口  | vpc:ports:get    |
  | 创建端口  | vpc:ports:create |
  | 查询VPC | vpc:vpcs:get     |
  | 查询子网  | vpc:subnets:get  |
     
  
- DNS ReadOnlyAccess：如VPC中配置了内网域名，需要为函数配置"DNS ReadOnlyAccess"委托权限以解析内网域名。
**步骤二：开启函数访问VPC内资源**
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 选择待配置的函数，单击函数名称进入函数详情页。
3. 选择"设置 \> 网络设置"，如[图2]所示，开启"函数访问VPC内资源"，并参考[表3]配置参数。
   
   **开启时，函数将使用配置的VPC所绑定的网卡进行网络访问，同时禁用函数工作流的默认网卡。**
   图2配置VPC   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002179448837.png "点击放大")
    表3网络配置参数说明 
   | 参数        | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | VPC       | 必选参数。 选择需要访问的虚拟私有云VPC。创建虚拟私有云VPC和子网请参见[创建虚拟私有云基本信息及默认子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 子网        | 必选参数。 选择VPC下的子网。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 域名        | 可选参数。 如果函数需要通过内网域名访问VPC内的服务，可配置和VPC绑定的域名，复选框中域名可以配置多个。 以下为与配置域名相关的操作，请根据业务需求参考使用： - 创建内网域名请参见[创建内网域名](https://support.huaweicloud.com/usermanual-dns/zh-cn_topic_0057773658.html)。  - 函数如何访问VPC内的Redis请参见[函数访问VPC内的Redis](https://support.huaweicloud.com/bestpractice-functiongraph/functiongraph_05_1136.html)。   |
   | VPC对等连接网段 | 可选参数。 您可以声明函数代码中使用到的VPC网段，用以检测是否与服务使用的VPC网段冲突。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 开启IPv6    | 可选参数。**当前仅"华东二"区域支持函数VPC配置开启IPv6。** 在创建虚拟私有云VPC时，确保默认子网配置中支持开启IPv6，此处将自动开启，具体详情请参见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。 开启IPv6功能后，将自动为子网分配IPv6网段，暂不支持自定义设置IPv6网段。**该功能一旦开启，将不能关闭** ，更多介绍请参见[IPv6网络](https://support.huaweicloud.com/usermanual-vpc/vpc_0002.html)**。**                                                                                                                                                                                                                                                |
      
   
   
 
 #### 共享VPC
共享VPC是基于资源访问管理（Resource Access Manager，简称RAM）服务的机制，VPC的所有者可以将VPC内的子网共享给其他账号使用，实现网络资源跨租户共享。有关VPC子网共享的更多信息，请参见《虚拟私有云用户指南》的"[共享VPC](https://support.huaweicloud.com/usermanual-vpc/vpc_share_0001.html)"相关内容。
在函数中可以配置其他用户共享的子网，从而能够在函数中访问该子网下的资源。如需在函数中访问其他用户共享给您的子网，请先确保该子网的拥有者已经为您配置了子网共享，配置步骤请参考[VPC子网共享给其他账号](https://support.huaweicloud.com/usermanual-vpc/vpc_share_0002.html)。成功配置子网共享后，参考[配置函数访问VPC]，在函数的网络配置中选择共享的子网即可。如果后续VPC子网拥有者取消了共享，将无法在函数中访问该子网。
