共用方式為


在 Azure 容器應用程式中使用 Azure Functions

本文說明如何在 Azure Container Apps 中建立 Azure Functions 應用程式,並完成預先設定的自動調整規則。

先決條件

資源 說明
Azure 帳戶 具有有效訂閱的 Azure 帳戶。

如果您沒有,可以免費建立一個
Azure 記憶體帳戶 用於儲存 Azure Functions 狀態的 Blob 儲存體帳戶
Azure 應用程式深入解析 Azure Application Insights 的實例,用來收集容器應用程式的相關數據。

建立「Functions」應用程式

下列步驟示範如何使用範例容器映像來建立容器應用程式。 如果您想要搭配自定義容器映像使用此程式,請參閱 在 Azure Container Apps 中建立您的第一個函式應用程式

  1. 移至 Azure 入口網站,然後在搜尋列中搜尋 容器應用程式

  2. 選取 [容器應用程式]

  3. 選取 ,創建

  4. 選取 容器應用程式

  5. 在 [ 基本] 區 段中,輸入下列值。

    在 [項目詳細資料] 底下

    房產 價值觀
    訂閱 選取您的 Azure 訂用帳戶。
    資源群組 選取 [建立新的資源群組],將它命名為 my-aca-functions-group,然後選取 [ 確定]。
    容器應用程式名稱 輸入 my-aca-functions-app
  6. 勾選 [針對 Azure Functions 進行最佳化] 旁的核取方塊。

    當您建立針對 Azure Functions 預先設定的容器應用程式時,Azure 入口網站的螢幕擷取畫面。

  7. 在 [容器應用程式環境] 底下,輸入:

    房產 價值觀
    區域 選取最靠近您的區域。
    容器應用程式環境 選取 [建立新環境]。
  8. 在 [環境設定] 視窗中,輸入:

    房產 價值觀
    環境名稱 輸入 my-aca-functions-environment
    區域備援 選取 [已停用]
  9. 選取 [建立] 以儲存您的值。

  10. 選取 [下一步:容器 ] 以切換至 [容器] 區段。

  11. 在 [使用快速入門映像] 旁,將此方塊保持未核取。

  12. 在 [ 容器詳細數據] 區段下,輸入下列值。

    房產 價值觀
    名稱 此方塊將預先填入您在上一節的選擇。
    影像來源 選取 [Docker Hub 或其他登錄]
    訂閱 選取您的訂用帳戶。
    影像類型 選擇 公用
    登錄登入伺服器 輸入 mcr.microsoft.com
    映像和標籤 輸入 k8se/quickstart-functions:latest
  13. 在 [環境變數] 底下,輸入下列變數的值:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING

    輸入這些變數的受控識別或連接字串值。 建議使用受控識別。

    變數 AzureWebJobsStorage 是 Azure Functions 的必要 Azure 記憶體帳戶連接字串。 此記憶體帳戶會儲存函式執行記錄、管理觸發程式和系結,以及維護長期函式的狀態。

    Application Insights 是監視和診斷服務,可提供 Azure Functions 效能和使用方式的深入解析。 此監視可協助您追蹤要求率、回應時間、失敗率和其他計量。

  14. 選取 下一個 > Ingress 以切換至 [Ingress] 區段,然後輸入下列值。

    房產 價值觀
    輸入 選取 [已啟用] 核取方塊以啟用輸入。
    輸入流量 選取 [ 接受來自任何地方的流量]。
    輸入類型 選取 [HTTP]
    目標連接埠 輸入 80
  15. 按一下 檢閱 + 建立

  16. 選取 ,創建

  17. 部署完成後,請選取 [移至資源]。

  18. 從 [ 概觀] 頁面中,選取 [應用程式 URL ] 旁的連結,以在新瀏覽器索引標籤中開啟應用程式。

  19. /api/HttpExample 附加至 URL 的結尾。

    瀏覽器中會傳回訊息,指出「HTTP 觸發程式函式已處理要求」。

先決條件

建立 Functions 應用程式

若要從 CLI 登入 Azure,請執行下列命令並遵循提示來完成驗證流程。

  1. 登入 Azure。

    az login
    
  2. 若要確定您執行的是最新版本 CLI,請執行升級命令。

    az upgrade
    
  3. 安裝或更新 CLI 的 Azure Container Apps 擴充功能。

    如果您在 Azure CLI 中執行 az containerapp 命令或 PowerShell 模組中的 Cmdlet Az.App 時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure Container Apps 擴充功能。

    az extension add --name containerapp --allow-preview true --upgrade
    
    
    

    現在已安裝目前的延伸模組或模組,請註冊 Microsoft.AppMicrosoft.OperationalInsights 命名空間。

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. 建立環境變數。

    RESOURCE_GROUP_NAME="my-aca-functions-group"
    CONTAINER_APP_NAME="my-aca-functions-app"
    ENVIRONMENT_NAME="my-aca-functions-environment"
    LOCATION="westus"
    STORAGE_ACCOUNT_NAME="storage-account-name"
    STORAGE_ACCOUNT_SKU="storage-account-sku"
    APPLICATION_INSIGHTS_NAME="application-insights-name"
    
  5. 建立資源群組。

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. 建立容器應用程式環境。

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. 建立儲存帳號

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. 取得儲存帳戶連接字串

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Azure 應用程式洞察的建立

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. 獲取 Application Insights 連接字串

    $APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \
      --app $APPLICATION_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  11. 建立 Azure Functions 容器應用程式。

    az containerapp create \
      --resource-group $RESOURCE_GROUP_NAME \
      --name $CONTAINER_APP_NAME \
      --environment $ENVIRONMENT_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --ingress external \
      --target-port 80 \
      --kind functionapp \
      --query properties.outputs.fqdn
    

    此命令會傳回 Functions 應用程式的 URL。 複製此 URL,並將其貼到網頁瀏覽器中。

  12. 建立一個 Azure Functions 容器應用程式,並使用 --revisions-mode multiple 來處理多修訂情境

    az containerapp create \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $CONTAINERAPPS_ENVIRONMENT \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --target-port 80 \
      --ingress external \
      --kind functionapp \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --env-vars AzureWebJobsStorage="$STORAGE_ACCOUNT_CONNECTION_STRING" APPLICATIONINSIGHTS_CONNECTION_STRING="$APPLICATION_INSIGHTS_CONNECTION_STRING"
    
  13. 在多重版本情境下,升級容器應用程式並分割流量

    az containerapp update \
      --resource-group $RESOURCE_GROUP \
      --name $CONTAINERAPP_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:latest
    
    az containerapp ingress traffic set -resource-group \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --revision-weight {revision1_name}=50 \
      --revision-weight {revision2_name}=50
    
  14. /api/HttpExample 附加至 URL 的結尾。

    瀏覽器中會傳回訊息,指出「HTTP 觸發程式函式已處理要求」。

管理功能

你可以使用 Azure CLI 在 Azure 容器應用程式中管理已部署的功能。 以下指令幫助你列出、檢查並與容器化環境中執行的函式互動。

備註

在處理多重修訂情境時,可以在指令中加入 --revision <REVISION_NAME> 參數來鎖定特定版本。

清單函式

查看您的容器應用程式中部署的所有函式:

# List all functions
az containerapp function list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME

顯示功能細節

獲取特定功能的詳細資訊:

az containerapp function show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --function-name <FUNCTIONS_APP_NAME>

監控函式調用

監控你的功能應用程式對於了解其效能並診斷問題至關重要。 以下指令說明如何透過 Azure CLI 取得函式網址、觸發調用,以及查看詳細的遙測與調用摘要。 在呼叫追蹤前,務必先呼叫數次該函式curl -X POST "fqdn/api/HttpExample"

  1. 要查看調用痕跡,請取得詳細的函式調用痕跡。

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. 查看祈禱摘要以檢視成功與失敗的祈禱。

    az containerapp function invocations summary \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h
    

管理函式金鑰

Azure Functions 使用 金鑰來進行認證和授權。 你可以管理以下不同類型的鑰匙:

  • 主機金鑰:存取應用程式中的任何功能
  • 主金鑰:提供管理權限
  • 系統金鑰:Azure 服務使用
  • 功能鍵:存取特定功能

以下指令會教你如何管理主機的金鑰。 要執行同一指令給特定的 Functions 應用程式,請在你的指令中加入該 --function-name <FUNCTIONS_APP_NAME> 參數。

列出金鑰

請使用以下指令列出在容器應用程式中執行的 Azure 函式的主機層級及函式專屬金鑰。

備註

至少要維持一個副本在執行,才能執行以下的金鑰管理指令。

az containerapp function keys list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-type hostKey

顯示特定鍵

用以下指令顯示你函式應用程式特定主機層金鑰的值:

az containerapp function keys show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-type hostKey

設定一把鑰匙

用以下指令為你的函式應用程式設定特定的主機層金鑰:

az containerapp function keys set \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-value <KEY_VALUE> \
  --key-type hostKey