在 Azure Arc (預覽) 上建立您的第一個函式
在本快速入門中,您會建立 Azure Functions 專案,並將其部署到在已啟用 Azure Arc 的 Kubernetes 叢集上執行的函數應用程式。 若要深入了解,請參閱 Azure Arc 上的 App Service、Functions 和 Logic Apps。此案例僅支援在 Linux 上執行的函式應用程式。
注意
在已啟用 Azure Arc 的 Kubernetes 叢集上執行函數目前的支援處於預覽狀態。
目前不支援將 PowerShell 函數專案發佈至已啟用 Azure Arc 的 Kubernetes 叢集。 如果您需要將 PowerShell 函數部署到已啟用 Azure Arc 的 Kubernetes 叢集,請在容器中建立函數應用程式。
如果您需要自訂函式應用程式在其中執行的容器,請參閱在 Azure Arc 上建立您的第一個容器化函式 (預覽)。
必要條件
在您的本機電腦上:
- .NET 6.0 SDK
- Azure CLI 2.4 版或更新版本
安裝 Azure Functions Core Tools
安裝 Core Tools 的建議方式取決於本機開發電腦的作業系統。
下列步驟使用 Windows 安裝程式 (MSI) 來安裝 Core Tools v4.x。 如需其他套件型安裝程式的詳細資訊,請參閱 Core Tools 讀我檔案。
根據您的 Windows 版本,下載並執行 Core Tools 安裝程式:
- v4.x - Windows 64 位元 (建議。Visual Studio Code 偵錯需要 64 位元。)
- v4.x - Windows 32 位元
如果您之前使用 Windows 安裝程式 (MSI) 在 Windows 上安裝 Core Tools,則應該先從 [新增移除程式] 解除安裝舊版本,再安裝最新版本。
建立 App Service Kubernetes 環境
開始之前,您必須為已啟用 Azure Arc 的 Kubernetes 叢集建立 App Service Kubernetes 環境。
注意
當您建立環境時,請務必記下包含自訂位置的自訂位置名稱和資源群組名稱。 您可以使用這些識別碼來尋找自訂位置識別碼,而您在環境中建立函數應用程式時需要此識別碼。
如果您未建立環境,則請洽詢叢集管理員。
新增 Azure CLI 延伸模組
在 Azure Cloud Shell 中啟動 Bash 環境。
由於這些 CLI 命令還不屬於核心 CLI 集合,因此使用下列命令予以新增:
az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
建立本地函數專案
在 Azure Functions 中,函數專案是一或多個個別函數的部署和執行單位,且每個函數會回應特定的觸發程序。 專案中的所有函式會共用相同的本機和裝載設定。 在本節中,您將建立包含單一函式的函式專案。
執行
func init
命令,以使用指定的執行階段在名為 LocalFunctionProj 的資料夾中建立函式專案:func init LocalFunctionProj --dotnet
瀏覽至專案資料夾:
cd LocalFunctionProj
此資料夾會包含專案的各種檔案,包括名為 local.settings.json 和 host.json 的組態檔。 依預設,已將 local.settings.json 檔案從 .gitignore 檔案中的原始檔控制中排除。 此排除是因為檔案可以包含從 Azure 下載的祕密。
使用下列命令,將函式新增至您的專案,其中
--name
引數是函式的唯一名稱 (HttpExample),而--template
引數可指定函式的觸發程序 (HTTP)。func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
在本機執行函式
從 LocalFunctionProj 資料夾啟動本機 Azure Functions 執行階段主機以執行您的函式。
func start
在輸出的結尾處,必須出現下列幾行:
注意
如果 HttpExample 未如上顯示,表示您可能不是從專案的根資料夾啟動主機。 在此情況下,請使用 Ctrl+C 來停止主機並前往專案的根資料夾,然後再次執行先前的命令。
從此輸出中,將 HTTP 函數的 URL 複製到瀏覽器,並附加查詢字串
?name=<YOUR_NAME>
,以製作完整的 URL,如http://localhost:7071/api/HttpExample?name=Functions
。 瀏覽器應該會顯示回應訊息,以回應您的查詢字串值。 您在其中啟動專案的終端機,也會在您提出要求時顯示記錄輸出。當您完成時,請按 Ctrl + C 並輸入
y
以停止函數主機。
取得自訂位置
若要能夠在自訂位置建立函數應用程式,您必須取得環境的相關資訊。
向叢集管理員取得關於自訂位置的下列資訊 (請參閱建立自訂位置)。
customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"
取得下一個步驟的自訂位置識別碼。
customLocationId=$(az customlocation show \
--resource-group $customLocationGroup \
--name $customLocationName \
--query id \
--output tsv)
建立 Azure 資源
您必須先建立兩個資源,才能將函數程式碼部署至新的 App Service Kubernetes 環境:
- 一個儲存體帳戶。 雖然本文會建立儲存體帳戶,但在某些情況下,可能不需要儲存體帳戶。 如需詳細資訊,請參閱儲存體考量一文中的已啟用 Azure Arc 的叢集。
- 函數應用程式,可提供用來執行函數程式碼的內容。 函數應用程式會在 App Service Kubernetes 環境中執行,並對應至本地函數專案。 函式應用程式可讓您將多個函式以邏輯單位分組,以方便您管理、部署和共用資源。
注意
函數應用程式會在專用 (App Service) 方案中的 App Service Kubernetes 環境中執行。 當您在沒有現有方案的情況下建立函數應用程式時,會為您建立正確的方案。
建立儲存體帳戶
使用 az storage account create 命令,在資源群組和區域中建立一般用途的儲存體帳戶:
az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS
注意
在某些情況下,可能不需要儲存體帳戶。 如需詳細資訊,請參閱儲存體考量一文中的已啟用 Azure Arc 的叢集。
在上述範例中,請將 <STORAGE_NAME>
取代為適合您且在 Azure 儲存體中是唯一的名稱。 名稱只能包含 3 到 24 個字元的數字和小寫字母。 Standard_LRS
會指定受 Functions 支援的一般用途帳戶。 --location
值是標準 Azure 區域。
建立函數應用程式
執行 az functionapp create 命令,在環境中建立新的函數應用程式。
az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet
在此範例中,將 <CUSTOM_LOCATION_ID>
取代為您為 App Service Kubernetes 環境所決定的自訂位置識別碼。 也請將 <STORAGE_NAME>
取代為您在上一個步驟中使用的帳戶名稱,並將 <APP_NAME>
取代為適合您的全域唯一名稱。
將函式專案部署至 Azure
在 Azure 中成功建立函式應用程式之後,您就可以開始使用 func azure functionapp publish
命令來部署本機函式專案。
在您的根專案資料夾中,執行此 func azure functionapp publish
命令:
func azure functionapp publish <APP_NAME>
在此範例中,使用您的應用程式名稱取代 <APP_NAME>
。 成功的部署會顯示類似下列輸出的結果 (為了簡單起見,已將其截斷):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
因為完整部署可能需要一些時間才能在已啟用 Azure Arc 的 Kubernetes 叢集上完成,所以您可能想要重新執行下列命令來驗證已發佈的函數:
func azure functionapp list-functions
在 Azure 上叫用函式
由於您的函式會使用 HTTP 觸發程序,因此您在叫用函式時,可以在瀏覽器中對其 URL 提出 HTTP 要求,或使用 curl 之類的工具。
下一步
既然您已在已啟用 Azure Arc 的 App Service Kubernetes 環境容器中執行函數應用程式,您可以藉由新增佇列儲存體輸出繫結,將其連線到 Azure 儲存體。