您在Function Compute建立的函數,預設可以通過公網調用,無法通過VPC調用。如果您需要函數能夠訪問VPC內的資源,或允許指定的VPC來調用函數,那麼您需要手動為服務配置網路訪問能力。網路設定為服務等級,即對服務下的所有函數生效。本文介紹如何通過Function Compute控制台為服務配置網路。
注意事項
為服務綁定VPC資源時,請確保配置的服務角色包含
vpc:DescribeVSwitchAttributes
和vpc:DescribeVpcAttribute
許可權。針對使用ACR企業版執行個體容器鏡像建立的Custom Container函數,為該函數所在服務配置訪問VPC的能力時,專用網路和交換器的選擇必須遵循以下原則。
如果ACR企業版執行個體的存取控制頁面的訪問 IP存在預設解析標識,則服務的專用網路和交換器必須設定為預設解析的IP地址對應的專用網路和交換器。
如果ACR企業版執行個體的存取控制頁面的訪問 IP不存在預設解析標識,則服務的專用網路和交換器可以設定為該執行個體綁定的任意一組。
網路訪問能力
使用VPC功能會降低Function Compute的冷啟動效率,建議非必要勿配置該功能。您可優先選擇使用RAM授權方式訪問資源,例如Table StoreTablestore。
通過網路地址訪問函數或通過函數訪問網路地址時,會產生流量。流量可分為以下類型。
公網流量:訪問Internet地址,例如阿里雲官網、淘寶網和雲端服務的公網地址。
VPC內網流量:訪問使用者VPC內的地址,例如RDS地址、NAS地址和VPC中ECS的內網地址。
根據對網路的不同設定,函數有以下網路訪問能力,您可按需設定。
函數出流量:是否允許函數訪問公網或VPC內資源的出流量,對應的配置包含允許訪問 VPC和允許函數訪問公網。
表 1. 函數出流量
網路設定
說明
僅允許函數訪問公網
通過函數網路訪問公網和內網,禁止通過使用者VPC訪問。所需的網路設定如下:
設定允許訪問 VPC為否。
設定允許函數訪問公網為是。
僅允許函數訪問VPC
僅通過使用者VPC訪問公網和內網,適用於PrivateZone、NAT Gateway和函數綁定VPC等情境。所需的網路設定如下:
設定允許訪問 VPC為是,並配置允許函數訪問的VPC資訊。
設定允許函數訪問公網為否。
允許函數既能訪問公網,也能訪問VPC
通過函數網路訪問公網和通過使用者VPC訪問內網。所需的網路設定如下:
設定允許訪問 VPC為是,並配置允許函數訪問的VPC資訊。
設定允許函數訪問公網為是。
既不允許函數訪問公網,也不允許訪問VPC
通過函數網路訪問內網,禁止訪問公網和禁止通過使用者VPC訪問。所需的網路設定如下:
設定允許訪問 VPC為否。
設定允許函數訪問公網為否。
函數入流量:是否允許通過公網地址或VPC地址訪問函數的入流量,對應的配置為僅允許指定 VPC 調用函數。
表 2. 函數入流量
網路設定
說明
允許通過公網和VPC同時訪問函數
函數建立完成後,預設可以通過公網和VPC調用函數。預設的網路設定如下:
設定僅允許指定 VPC 調用函數為否。
僅允許通過VPC訪問函數
允許通過指定的VPC調用函數,並禁止通過公網調用函數。所需的網路設定如下:
設定僅允許指定 VPC 調用函數為是,並配置允許調用函數的VPC資訊。
Function Compute支援的可用性區域
關於各地區最新支援的可用性區域,您可以在OpenAPI Explorer調用APIGetAccountSettings - 擷取可用性區域擷取。
如果您的資源所在的可用性區域不在Function Compute支援的可用性區域中,可以通過在您的VPC環境中建立一個Function Compute支援的可用性區域內的交換器,並在Function Compute的服務的VPC配置中設定此交換器ID。由於同一VPC內不同交換器之間私網互連,因此Function Compute可以通過該交換器訪問在其他可用性區域的VPC內的資源。具體步驟,請參見遇到vSwitch is in unsupported zone的錯誤怎麼辦?。
前提條件
(可選)建立網路資源
如果您未建立相關資源,可在具體配置時,選擇自動設定。否則,需按以下文檔操作指導提前建立相關資源:
配置網路和角色
Function Compute訪問VPC的配置和許可權的配置是服務等級的,為一個服務配置了訪問VPC的能力後,此服務下的所有函數都可以訪問VPC。
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務操作列的配置。
在編輯服務頁面的角色配置地區,選擇服務角色,授予服務訪問VPC的許可權。
推薦您按照最小許可權原則為您提供的角色授權。如需更細粒度的許可權管控,請參見權限原則及樣本。
在網路設定地區,根據實際情況修改以下配置項。
允許訪問 VPC:是否允許函數訪問VPC內資源。取值說明如下。
是:允許函數訪問VPC內資源。選擇是後,需選擇配置方式,取值說明如下:
(推薦)自動設定:Function Compute會為您自動建立專用網路、交換器和安全性群組等資源,無需您手動建立。建立完成後,也可再次按需修改。
說明自動建立的網路資源均以fc.auto.create開頭。
自訂配置:您需手動選擇已有的網路資源,請確保您已提前建立好相關資源。
專用網路:在列表中選擇要訪問的VPC ID。
交換器:在列表中選擇交換器ID,至少需選擇一個交換器ID。
該欄位限定了Function Compute可以訪問的子網,建議設定兩個或多個交換器ID。當一個可用性區域出現故障或IP地址不足時,您的函數可以在其他子網下運行。
安全性群組:在列表中選擇安全性群組ID。
此安全性群組是Function Compute所在的安全性群組,安全性群組限定了Function Compute在VPC中的出入站規則。需要設定您的VPC所在安全性群組的入站規則為允許Function Compute所在的安全性群組訪問。否則,Function Compute無法順暢地訪問您的VPC內資源。
否:不允許函數訪問VPC內資源。
固定公網 IP:是否通過NAT Gateway和Elastic IP Address地址獲得一個固定的公網出口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調用函數,僅允許通過公網調用函數。
單擊儲存。
常見問題
為什麼Function Compute無法成功接入VPC調試?
如果您的服務中已經設定允許函數訪問VPC,卻無法成功接入VPC,可能原因如下。
交換器所在的子網故障或子網中的IP地址已用盡,您可以在配置VPC時提供兩個或者多個交換器ID,如果一個可用性區域出現故障,您的函數可以在其他可用性區域運行,提高容錯能力。
安全性群組配置錯誤,請您按照以下要求配置安全性群組。
需要設定VPC中的安全性群組的入站規則為允許Function Compute所在的安全性群組訪問。
安全性群組出口方向需要允許ICMP協議,Function Compute會通過ICMP協議檢查VPC網路聯通性。
安全性群組的具體配置步驟,請參見添加安全性群組規則。
新增網路資源時,發現資源不足該怎麼辦?
如果您在建立VPC網路資源時,自動設定提供的網路前置長度為24,可用IP地址數量是252個,如果執行個體數量過多,有可能會超出限制。此時,您需手動調整交換器IP地址網段,以及對應的安全性群組。
故障排查
Function Compute無法在設定vpcConfig時對訪問VPC的許可權進行檢測,而需要在執行函數時檢測,因此在通過InvokeFunction介面調用函數時會引入一些新的錯誤類型。下表描述了接入VPC時一些常見的錯誤,以便您迅速排查問題。
錯誤碼 | 狀態代碼 | 問題原因 | 解決方案 |
InvalidArgument | 400 | Function Compute不支援您提供的vSwitchId所在的可用性區域。 | 重新設定vSwitchId。具體資訊,請參見Function Compute支援的可用性區域。 |
未找到vpcConfig中的vpcId、vSwitchIds或securityGroupId對應的資源。 | 檢查vpcConfig參數設定。 | ||
設定的交換器或安全性群組不在相應的VPC中。 | 檢查vpcConfig參數設定,確保vSwitchId和securityGroupId對應的資源在vpcId對應的VPC中。 | ||
AccessDenied | 403 | 未提供對ENI的操作授權。 | 檢查服務的許可權。更多資訊,請參見授予Function Compute訪問其他雲端服務的許可權。 |
ResourceExhausted | 429 | 交換器的網段內可用IP不足,Function Compute無法建立更多的ENI。 | 建立一個網段更大的交換器,並更新vpcConfig的vSwitchId參數。 說明 建議您使用 |
相關文檔
如需訪問VPC內的資料庫,建議您使用配置IP地址白名單的方式訪問資料庫,白名單中填寫的IP位址區段為您在此頁面配置的交換器所屬IP位址區段。更多資訊,請參見訪問資料庫。
如需限制函數公網訪問出口流量,需使用固定IP地址來實現。具體操作,請參見配置固定公網IP地址。