本文說明如何在 Azure Container Apps 中建立 Azure Functions 應用程式,並完成預先設定的自動調整規則。
先決條件
| 資源 | 說明 |
|---|---|
| Azure 帳戶 | 具有有效訂閱的 Azure 帳戶。 如果您沒有,可以免費建立一個。 |
| Azure 記憶體帳戶 | 用於儲存 Azure Functions 狀態的 Blob 儲存體帳戶。 |
| Azure 應用程式深入解析 | Azure Application Insights 的實例,用來收集容器應用程式的相關數據。 |
建立「Functions」應用程式
下列步驟示範如何使用範例容器映像來建立容器應用程式。 如果您想要搭配自定義容器映像使用此程式,請參閱 在 Azure Container Apps 中建立您的第一個函式應用程式。
移至 Azure 入口網站,然後在搜尋列中搜尋 容器應用程式 。
選取 [容器應用程式]。
選取 ,創建。
選取 容器應用程式
在 [ 基本] 區 段中,輸入下列值。
在 [項目詳細資料] 底下:
房產 價值觀 訂閱 選取您的 Azure 訂用帳戶。 資源群組 選取 [建立新的資源群組],將它命名為 my-aca-functions-group,然後選取 [ 確定]。 容器應用程式名稱 輸入 my-aca-functions-app。 勾選 [針對 Azure Functions 進行最佳化] 旁的核取方塊。
在 [容器應用程式環境] 底下,輸入:
房產 價值觀 區域 選取最靠近您的區域。 容器應用程式環境 選取 [建立新環境]。 在 [環境設定] 視窗中,輸入:
房產 價值觀 環境名稱 輸入 my-aca-functions-environment 區域備援 選取 [已停用]。 選取 [建立] 以儲存您的值。
選取 [下一步:容器 ] 以切換至 [容器] 區段。
在 [使用快速入門映像] 旁,將此方塊保持未核取。
在 [ 容器詳細數據] 區段下,輸入下列值。
房產 價值觀 名稱 此方塊將預先填入您在上一節的選擇。 影像來源 選取 [Docker Hub 或其他登錄] 訂閱 選取您的訂用帳戶。 影像類型 選擇 公用 。 登錄登入伺服器 輸入 mcr.microsoft.com 映像和標籤 輸入 k8se/quickstart-functions:latest 在 [環境變數] 底下,輸入下列變數的值:
AzureWebJobsStorage-
APPINSIGHTS_INSTRUMENTATIONKEY或APPLICATIONINSIGHTS_CONNECTION_STRING
輸入這些變數的受控識別或連接字串值。 建議使用受控識別。
變數
AzureWebJobsStorage是 Azure Functions 的必要 Azure 記憶體帳戶連接字串。 此記憶體帳戶會儲存函式執行記錄、管理觸發程式和系結,以及維護長期函式的狀態。Application Insights 是監視和診斷服務,可提供 Azure Functions 效能和使用方式的深入解析。 此監視可協助您追蹤要求率、回應時間、失敗率和其他計量。
選取 下一個 > Ingress 以切換至 [Ingress] 區段,然後輸入下列值。
房產 價值觀 輸入 選取 [已啟用] 核取方塊以啟用輸入。 輸入流量 選取 [ 接受來自任何地方的流量]。 輸入類型 選取 [HTTP]。 目標連接埠 輸入 80。 按一下 檢閱 + 建立。
選取 ,創建。
部署完成後,請選取 [移至資源]。
從 [ 概觀] 頁面中,選取 [應用程式 URL ] 旁的連結,以在新瀏覽器索引標籤中開啟應用程式。
將
/api/HttpExample附加至 URL 的結尾。瀏覽器中會傳回訊息,指出「HTTP 觸發程式函式已處理要求」。
先決條件
建立 Functions 應用程式
若要從 CLI 登入 Azure,請執行下列命令並遵循提示來完成驗證流程。
登入 Azure。
az login若要確定您執行的是最新版本 CLI,請執行升級命令。
az upgrade安裝或更新 CLI 的 Azure Container Apps 擴充功能。
如果您在 Azure CLI 中執行
az containerapp命令或 PowerShell 模組中的 CmdletAz.App時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure Container Apps 擴充功能。az extension add --name containerapp --allow-preview true --upgrade現在已安裝目前的延伸模組或模組,請註冊
Microsoft.App和Microsoft.OperationalInsights命名空間。az provider register --namespace Microsoft.Appaz provider register --namespace Microsoft.OperationalInsights建立環境變數。
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"建立資源群組。
az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATION \ --output none建立容器應用程式環境。
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATION \ --output none建立儲存帳號
az storage account create \ --name $STORAGE_ACCOUNT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --sku $STORAGE_ACCOUNT_SKU取得儲存帳戶連接字串
$STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \ --name $STORAGE_ACCOUNT_NAME \ --resource-group $RESOURCE_GROUP \ --query connectionString \ --output tsvAzure 應用程式洞察的建立
az monitor app-insights component create \ --app $APPLICATION_INSIGHTS_NAME \ --location $LOCATION \ --resource-group $RESOURCE_GROUP \ --application-type web獲取 Application Insights 連接字串
$APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \ --app $APPLICATION_INSIGHTS_NAME \ --resource-group $RESOURCE_GROUP \ --query connectionString \ --output tsv建立 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,並將其貼到網頁瀏覽器中。
建立一個 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"在多重版本情境下,升級容器應用程式並分割流量
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將
/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"
要查看調用痕跡,請取得詳細的函式調用痕跡。
az containerapp function invocations traces \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --function-name <FUNCTIONS_APP_NAME> \ --timespan 5h \ --limit 3查看祈禱摘要以檢視成功與失敗的祈禱。
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