Azure Functions 網路管理
下圖來自 Azure Functions networking options 展示不同方案中可以做的網路設定。
限制可以直接存取 Function App 的 IP
在 Networking -> Access Restriction 設定 IP 及其子網路存取 Function App 的規則。每條規則的 Priority 的值越小,會越先被採納。
使用 VNet 與 NAT Gateway 限制 outbound request 的 IP
Azure Functions 的 App Service Plan 和 Premium Plan 允許開發者使用 VNet 來配置對外 IP,如此一來就方便我們去設定第三方服務的 Allow IP List。
首先登入 Azure 並創建一個測試用的 Resource Group。
> az login
> az group create --name Jack-Test --location japaneast
新增一個 Storage Account。
> az storage account create --name jack1 --location japaneast --resource-group Jack-Test --sku Standard_LRS
接著參考 az functionapp plan 新增一個最便宜的 App Service (D1) 方案、用 Windows 系統、命名為 Plan1。
> az functionapp plan create --resource-group Jack-Test --name Plan1 --min-instances 1 --sku D1
創建一個 Function App 並套用剛剛新增的 Plan1。
> az functionapp create --resource-group Jack-Test --runtime dotnet --functions-version 4 --name jack-linux --storage-account jack1 --plan Plan1
在 Azure Portal 新增一個 VNet。
啟用 jack-linux 的 VNet Integration,將剛剛創建的 VNet 啟用。
接著新增一個 Public IP Address。
新增一個 NAT Gateway,將剛剛的 Function App 所用到的 Subnet 加進去。
將 Function 推送到 Azure 上。
> func azure functionapp publish jack-nat-function
最後在 Configuration 設定環境變數 WEBSITE_VNET_ROUTE_ALL
的值為 1
,如此一來 Function App 的 outbound request 就會固定使用剛剛創建的 Public IP Address。