您在函數計算創建的函數,默認可以通過公網調用,無法通過VPC調用。如果您需要函數能夠訪問VPC內的資源,或允許指定的VPC來調用函數,那么您需要手動為服務配置網絡訪問能力。網絡配置為服務級別,即對服務下的所有函數生效。本文介紹如何通過函數計算控制臺為服務配置網絡。
注意事項
為服務綁定VPC資源時,請確保配置的服務角色包含
vpc:DescribeVSwitchAttributes
和vpc:DescribeVpcAttribute
權限。針對使用ACR企業版實例容器鏡像創建的Custom Container函數,為該函數所在服務配置訪問VPC的能力時,專有網絡和交換機的選擇必須遵循以下原則。
如果ACR企業版實例的訪問控制頁面的訪問 IP存在默認解析標識,則服務的專有網絡和交換機必須設置為默認解析的IP地址對應的專有網絡和交換機。
如果ACR企業版實例的訪問控制頁面的訪問 IP不存在默認解析標識,則服務的專有網絡和交換機可以設置為該實例綁定的任意一組。
網絡訪問能力
使用VPC功能會降低函數計算的冷啟動效率,建議非必要勿配置該功能。您可優先選擇使用RAM授權方式訪問資源,例如表格存儲Tablestore。
通過網絡地址訪問函數或通過函數訪問網絡地址時,會產生流量。流量可分為以下類型。
公網流量:訪問Internet地址,例如阿里云官網、淘寶網和云服務的公網地址。
VPC內網流量:訪問用戶VPC內的地址,例如RDS地址、NAS地址和VPC中ECS的內網地址。
根據對網絡的不同設置,函數有以下網絡訪問能力,您可按需設置。
函數出流量:是否允許函數訪問公網或VPC內資源的出流量,對應的配置包含允許訪問 VPC和允許函數訪問公網。
表 1. 函數出流量
網絡配置
說明
僅允許函數訪問公網
通過函數網絡訪問公網和內網,禁止通過用戶VPC訪問。所需的網絡配置如下:
設置允許訪問 VPC為否。
設置允許函數訪問公網為是。
僅允許函數訪問VPC
僅通過用戶VPC訪問公網和內網,適用于PrivateZone、NAT網關和函數綁定VPC等場景。所需的網絡配置如下:
設置允許訪問 VPC為是,并配置允許函數訪問的VPC信息。
設置允許函數訪問公網為否。
允許函數既能訪問公網,也能訪問VPC
通過函數網絡訪問公網和通過用戶VPC訪問內網。所需的網絡配置如下:
設置允許訪問 VPC為是,并配置允許函數訪問的VPC信息。
設置允許函數訪問公網為是。
既不允許函數訪問公網,也不允許訪問VPC
通過函數網絡訪問內網,禁止訪問公網和禁止通過用戶VPC訪問。所需的網絡配置如下:
設置允許訪問 VPC為否。
設置允許函數訪問公網為否。
函數入流量:是否允許通過公網地址或VPC地址訪問函數的入流量,對應的配置為僅允許指定 VPC 調用函數。
表 2. 函數入流量
網絡配置
說明
允許通過公網和VPC同時訪問函數
函數創建完成后,默認可以通過公網和VPC調用函數。默認的網絡配置如下:
設置僅允許指定 VPC 調用函數為否。
僅允許通過VPC訪問函數
允許通過指定的VPC調用函數,并禁止通過公網調用函數。所需的網絡配置如下:
設置僅允許指定 VPC 調用函數為是,并配置允許調用函數的VPC信息。
函數計算支持的可用區
地域 | 地域ID | 函數計算支持的可用區 |
華東1(杭州) | cn-hangzhou |
|
華東2(上海) | cn-shanghai |
|
華北1(青島) | cn-qingdao | cn-qingdao-c |
華北2(北京) | cn-beijing |
|
華北3(張家口) | cn-zhangjiakou |
|
華北5(呼和浩特) | cn-huhehaote |
|
華南1(深圳) | cn-shenzhen |
|
西南1(成都) | cn-chengdu |
|
中國香港 | cn-hongkong |
|
新加坡 | ap-southeast-1 |
|
馬來西亞(吉隆坡) | ap-southeast-3 | ap-southeast-3a |
印度尼西亞(雅加達) | ap-southeast-5 |
|
日本(東京) | ap-northeast-1 |
|
英國(倫敦) | eu-west-1 | eu-west-1a |
德國(法蘭克福) | eu-central-1 |
|
美國(硅谷) | us-west-1 |
|
美國(弗吉尼亞) | us-east-1 |
|
關于各地域最新支持的可用區,您可以在OpenAPI Explorer調用APIGetAccountSettings - 獲取可用區獲取。
如果您的資源所在的可用區不在函數計算支持的可用區中,可以通過在您的VPC環境中創建一個函數計算支持的可用區內的交換機,并在函數計算的服務的VPC配置中設置此交換機ID。由于同一VPC內不同交換機之間私網互通,因此函數計算可以通過該交換機訪問在其他可用區的VPC內的資源。具體步驟,請參見遇到vSwitch is in unsupported zone的錯誤怎么辦?。
前提條件
(可選)創建網絡資源
如果您未創建相關資源,可在具體配置時,選擇自動配置。否則,需按以下文檔操作指導提前創建相關資源:
配置網絡和角色
函數計算訪問VPC的配置和權限的配置是服務級別的,為一個服務配置了訪問VPC的能力后,此服務下的所有函數都可以訪問VPC。
- 登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
- 在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務操作列的配置。
在編輯服務頁面的角色配置區域,選擇服務角色,授予服務訪問VPC的權限。
推薦您按照最小權限原則為您提供的角色授權。如需更細粒度的權限管控,請參見權限策略及示例。
在網絡配置區域,根據實際情況修改以下配置項。
允許訪問 VPC:是否允許函數訪問VPC內資源。取值說明如下。
是:允許函數訪問VPC內資源。選擇是后,需選擇配置方式,取值說明如下:
(推薦)自動配置:函數計算會為您自動創建專有網絡、交換機和安全組等資源,無需您手動創建。創建完成后,也可再次按需修改。
說明自動創建的網絡資源均以fc.auto.create開頭。
自定義配置:您需手動選擇已有的網絡資源,請確保您已提前創建好相關資源。
專有網絡:在列表中選擇要訪問的VPC ID。
交換機:在列表中選擇交換機ID,至少需選擇一個交換機ID。
該字段限定了函數計算可以訪問的子網,建議設置兩個或多個交換機ID。當一個可用區出現故障或IP地址不足時,您的函數可以在其他子網下運行。
安全組:在列表中選擇安全組ID。
此安全組是函數計算所在的安全組,安全組限定了函數計算在VPC中的出入站規則。需要設置您的VPC所在安全組的入站規則為允許函數計算所在的安全組訪問。否則,函數計算無法順暢地訪問您的VPC內資源。
否:不允許函數訪問VPC內資源。
固定公網 IP:是否通過NAT網關和彈性公網IP地址獲得一個固定的公網出口IP地址。具體信息,請參見配置固定公網IP地址。
允許函數訪問公網:是否允許函數訪問公網。取值說明如下。
是:允許函數訪問公網。
否:不允許函數訪問公網。
僅允許指定 VPC 調用函數:是否允許指定的VPC調用函數。取值說明如下。
是:允許指定的VPC調用函數。需注意以下事項。
同一個服務最多綁定20個VPC。
設置僅允許指定VPC調用函數后,使用觸發器調用函數不受影響。
VPC綁定后對服務的所有版本和別名生效。
設置允許指定VPC調用函數后,會拒絕來自公網和其他VPC的調用請求,
StatusCode
為403,ErrorCode
為AccessDenied
,錯誤信息為Resource access is bound by VPC: VPC ID
。只允許使用私網HTTP接入點綁定VPC,不允許使用公網接入點和私網HTTPS接入點綁定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參數。 說明 建議您使用 |
相關文檔
如需訪問VPC內的數據庫,建議您使用配置IP地址白名單的方式訪問數據庫,白名單中填寫的IP地址段為您在此頁面配置的交換機所屬IP地址段。更多信息,請參見訪問數據庫。
如需限制函數公網訪問出口流量,需使用固定IP地址來實現。具體操作,請參見配置固定公網IP地址。