Sdílet prostřednictvím


Použití Azure Functions v Azure Container Apps

V tomto článku se dozvíte, jak vytvořit aplikaci Azure Functions v Azure Container Apps s předem nakonfigurovanými pravidly automatického škálování.

Požadavky

Zdroj Popis
Účet Azure Účet Azure s aktivním předplatným.

Pokud jej nemáte, můžete si jej zdarma vytvořit.
Účet služby Azure Storage Účet úložiště objektů blob pro ukládání stavu pro službu Azure Functions.
Azure Application Insights Instance Azure Application Insights ke shromažďování dat o vaší kontejnerové aplikaci.

Vytvoření aplikace Functions

Následující kroky ukazují, jak pomocí ukázkové image kontejneru vytvořit aplikaci kontejneru. Pokud chcete tento postup použít s vlastní imagí kontejneru, přečtěte si téma Vytvoření první aplikace funkcí v Azure Container Apps.

  1. Přejděte na web Azure Portal a na panelu hledání vyhledejte kontejnerové aplikace .

  2. Vyberte Kontejnerové aplikace.

  3. Vyberte Vytvořit.

  4. Výběr kontejnerové aplikace

  5. V části Základy zadejte následující hodnoty.

    V části Project details (Podrobnosti projektu):

    Vlastnictví Hodnota
    Předplatné Vyberte své předplatné Azure.
    Skupina zdrojů Vyberte Vytvořit novou skupinu prostředků, pojmenujte ji my-aca-functions-group a vyberte OK.
    Název kontejnerové aplikace Zadejte my-aca-functions-app.
  6. Vedle možnosti Optimalizovat pro Azure Functions zaškrtněte políčko.

    Snímek obrazovky webu Azure Portal při vytváření předem nakonfigurované aplikace kontejneru pro Azure Functions

  7. V části Prostředí Container Apps zadejte:

    Vlastnictví Hodnota
    Región Vyberte oblast, která je k vám nejblíže.
    Prostředí Container Apps Vyberte Vytvořit nové prostředí.
  8. V okně nastavení prostředí zadejte:

    Vlastnictví Hodnota
    Název prostředí Zadejte my-aca-functions-environment.
    Zónová redundance Vyberte Zakázáno.
  9. Vyberte Vytvořit a uložte hodnoty.

  10. Vyberte Další: Kontejner pro přechod na sekci Kontejner.

  11. Vedle obrázku Rychlého startu ponechte toto políčko nezaškrtnuté.

  12. V části Podrobnosti kontejneru zadejte následující hodnoty.

    Vlastnictví Hodnota
    Název Toto pole bylo předem vyplněno vaším výběrem v poslední části.
    Zdroj obrázku Výběr Centra Dockeru nebo jiných registrů
    Předplatné Vyberte své předplatné.
    Typ obrázku Vyberte Veřejný.
    Přihlašovací server registru Zadejte mcr.microsoft.com
    Obrázek a značka Zadejte k8se/quickstart-functions:latest
  13. V části Proměnné prostředí zadejte hodnoty následujících proměnných:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY nebo APPLICATIONINSIGHTS_CONNECTION_STRING

    Zadejte buď hodnoty pro spravovanou identitu nebo připojovací řetězec pro tyto proměnné. Doporučuje se spravovaná identita.

    Proměnná AzureWebJobsStorage je požadovaný připojovací řetězec účtu služby Azure Storage pro Azure Functions. Tento účet úložiště ukládá protokoly spouštění funkcí, spravuje triggery a vazby a udržuje stav trvalých funkcí.

    Application Insights je monitorovací a diagnostická služba, která poskytuje přehled o výkonu a využití služby Azure Functions. Toto monitorování vám pomůže sledovat míry požadavků, doby odezvy, míry selhání a další metriky.

  14. Vyberte další Ingress> pro přepnutí do oddílu Ingress a zadejte následující hodnoty.

    Vlastnictví Hodnota
    Vstup Chcete-li povolit příchozí přenos dat, zaškrtněte políčko Povoleno .
    Příchozí přenos dat Vyberte Přijmout provoz odkudkoli.
    Typ příchozího přenosu dat Vyberte HTTP.
    Cílový port Zadejte 80.
  15. Vyberte Zkontrolovat a vytvořit.

  16. Vyberte Vytvořit.

  17. Jakmile je nasazení dokončeno, vyberte Přejít k prostředku.

  18. Na stránce Přehled vyberte odkaz vedle adresy URL aplikace a otevřete aplikaci na nové kartě prohlížeče.

  19. Připojte /api/HttpExample na konec adresy URL.

    V prohlížeči se vrátí zpráva "Funkce triggeru HTTP zpracovala požadavek".

Požadavky

Vytvoření aplikace Functions

Chcete-li se přihlásit do Azure z příkazového řádku, spusťte následující příkaz a postupujte podle pokynů pro dokončení procesu ověření.

  1. Přihlaste se k Azure.

    az login
    
  2. Abychom zajistili, že používáte nejnovější verzi CLI, spusťte příkaz pro upgrade.

    az upgrade
    
  3. Nainstalujte nebo aktualizujte rozšíření Azure Container Apps pro rozhraní příkazového řádku.

    Pokud při spuštění příkazů az containerapp v Azure CLI nebo cmdletů z modulu Az.App v PowerShell dostáváte chyby týkající se chybějících parametrů, ujistěte se, že máte nainstalovanou nejnovější verzi rozšíření Azure Container Apps.

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

    Nyní, když je aktuální rozšíření nebo modul nainstalováno, zaregistrujte jmenné prostory Microsoft.App a Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Vytvořte proměnné prostředí.

    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. Vytvořte skupinu prostředků.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Vytvořte prostředí Container Apps.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Vytvoření účtu úložiště

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Získání připojovacího řetězce účtu úložiště

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Vytváření Přehledů aplikací Azure

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Získat připojovací řetězec pro 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. Vytvořte aplikaci kontejneru 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
    

    Tento příkaz vrátí adresu URL aplikace Functions. Zkopírujte tuto adresu URL a vložte ji do webového prohlížeče.

  12. Vytvoření kontejnerové aplikace Azure Functions s režimem revizí 'multiple' pro multirevizní scénář

    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. V případě scénáře s více revizemi upgradujte ContainerApp a rozdělte provoz.

    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. Připojte /api/HttpExample na konec adresy URL.

    V prohlížeči se vrátí zpráva "Funkce triggeru HTTP zpracovala požadavek".

Správa funkcí

Nasazené funkce v Azure Container Apps můžete spravovat pomocí Azure CLI. Následující příkazy vám pomůžou vypsat, zkontrolovat a pracovat s funkcemi spuštěnými v kontejnerizovaném prostředí.

Poznámka:

Pokud pracujete se scénáři s více revizemi, přidejte parametr --revision <REVISION_NAME> do příkazu, který bude cílit na konkrétní revizi.

Funkce seznamu

Zobrazení všech funkcí nasazených v aplikaci kontejneru:

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

Zobrazit podrobnosti funkce

Získejte podrobné informace o konkrétní funkci:

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

Monitorování vyvolání funkcí

Monitorování aplikace funkcí je nezbytné pro pochopení jeho výkonu a diagnostiky problémů. Následující příkazy ukazují, jak načíst adresy URL funkcí, aktivovat vyvolání a zobrazit podrobné souhrny telemetrie a vyvolání pomocí Azure CLI. Před voláním curl -X POST "fqdn/api/HttpExample" trasování se ujistěte, že funkci několikrát vyvoláte.

  1. Pokud chcete zobrazit trasování volání, získejte podrobné trasování volání funkcí.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Zobrazte souhrn vyvolání a zkontrolujte úspěšné a neúspěšné vyvolání.

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

Správa klíčů funkcí

Azure Functions používá klíče k ověřování a autorizaci. Můžete spravovat následující typy klíčů:

  • Klíče hostitele: Přístup k libovolné funkci v aplikaci
  • Hlavní klíče: Zajištění přístupu pro správu
  • Systémové klíče: Používá se službami Azure
  • Funkční klávesy: Přístup ke konkrétním funkcím

Následující příkazy ukazují, jak spravovat klíče pro hostitele. Pokud chcete spustit stejný příkaz pro konkrétní aplikaci Functions, přidejte --function-name <FUNCTIONS_APP_NAME> do příkazu parametr.

Seznam klíčů

Pomocí následujících příkazů můžete vypsat klíče specifické pro hostitele a funkce pro službu Azure Functions spuštěné v Container Apps.

Poznámka:

Udržujte minimálně jednu repliku spuštěnou, aby fungovaly následující příkazy pro správu klíčů.

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

Zobrazení konkrétního klíče

Pomocí následujícího příkazu zobrazte hodnotu konkrétního klíče na úrovni hostitele pro vaši aplikaci funkcí:

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

Nastavení klíče

Pomocí následujícího příkazu nastavte pro vaši aplikaci funkcí konkrétní klíč na úrovni hostitele:

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