分享方式:


在 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 上建立您的第一個容器化函式 (預覽)

必要條件

在您的本機電腦上:

安裝 Azure Functions Core Tools

安裝 Core Tools 的建議方式取決於本機開發電腦的作業系統。

下列步驟使用 Windows 安裝程式 (MSI) 來安裝 Core Tools v4.x。 如需其他套件型安裝程式的詳細資訊,請參閱 Core Tools 讀我檔案

根據您的 Windows 版本,下載並執行 Core Tools 安裝程式:

如果您之前使用 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 中,函數專案是一或多個個別函數的部署和執行單位,且每個函數會回應特定的觸發程序。 專案中的所有函式會共用相同的本機和裝載設定。 在本節中,您將建立包含單一函式的函式專案。

  1. 執行 func init 命令,以使用指定的執行階段在名為 LocalFunctionProj 的資料夾中建立函式專案:

    func init LocalFunctionProj --dotnet
    
  2. 瀏覽至專案資料夾:

    cd LocalFunctionProj
    

    此資料夾會包含專案的各種檔案,包括名為 local.settings.jsonhost.json 的組態檔。 依預設,已將 local.settings.json 檔案從 .gitignore 檔案中的原始檔控制中排除。 此排除是因為檔案可以包含從 Azure 下載的祕密。

  3. 使用下列命令,將函式新增至您的專案,其中 --name 引數是函式的唯一名稱 (HttpExample),而 --template 引數可指定函式的觸發程序 (HTTP)。

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

在本機執行函式

  1. LocalFunctionProj 資料夾啟動本機 Azure Functions 執行階段主機以執行您的函式。

    func start
    

    在輸出的結尾處,必須出現下列幾行:

    在本機執行函式時終端視窗輸出的螢幕擷取畫面。

    注意

    如果 HttpExample 未如上顯示,表示您可能不是從專案的根資料夾啟動主機。 在此情況下,請使用 Ctrl+C 來停止主機並前往專案的根資料夾,然後再次執行先前的命令。

  2. 從此輸出中,將 HTTP 函數的 URL 複製到瀏覽器,並附加查詢字串 ?name=<YOUR_NAME>,以製作完整的 URL,如 http://localhost:7071/api/HttpExample?name=Functions。 瀏覽器應該會顯示回應訊息,以回應您的查詢字串值。 您在其中啟動專案的終端機,也會在您提出要求時顯示記錄輸出。

  3. 當您完成時,請按 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 之類的工具。

將發佈命令的輸出中顯示的完整叫用 URL 複製到瀏覽器網址列中 (請附加查詢參數 ?name=Functions)。 瀏覽器應該會顯示與您在本機執行函式時類似的輸出。

使用瀏覽器在 Azure 上執行函式的輸出

下一步

既然您已在已啟用 Azure Arc 的 App Service Kubernetes 環境容器中執行函數應用程式,您可以藉由新增佇列儲存體輸出繫結,將其連線到 Azure 儲存體。