在 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
    

    在輸出結尾,必須顯示下列幾行:

    Screenshot of terminal window output when running function locally.

    注意

    如果 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 儲存體 中是唯一的。 名稱必須包含三到 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 命令來部署本機函式專案。

在下列範例中,將 取代 <APP_NAME> 為您應用程式的名稱。

func azure functionapp publish <APP_NAME>

publish 命令會顯示類似下列輸出的結果(為了簡單起見而截斷):

...

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 之類的工具來叫用它。

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

The output of the function run on Azure in a browser

下一步

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