Använda Azure Functions i Azure Container Apps

Den här artikeln visar hur du skapar en Azure Functions-app i Azure Container Apps, komplett med förkonfigurerade regler för automatisk skalning.

Förutsättningar

Resurs Beskrivning
Azure-konto Ett Azure-konto med en aktiv prenumeration.

Om du inte har någon sådan nu kan du skapa en kostnadsfritt.
Azure Storage-konto Ett bloblagringskonto för att lagra tillståndet för dina Azure Functions.
Azure Application Insights En instans av Azure Application Insights för att samla in data om din containerapp.

Skapa en Functions-app

Följande steg visar hur du använder en exempelcontaineravbildning för att skapa din containerapp. Om du vill använda den här proceduren med en anpassad containeravbildning läser du Skapa din första funktionsapp i Azure Container Apps.

  1. Gå till Azure-portalen och sök efter Container Apps i sökfältet.

  2. Välj ContainerAppar.

  3. Välj Skapa.

  4. Välj containerapp

  5. I avsnittet Grundläggande anger du följande värden.

    Under Projektinformation:

    Fastighet Värde
    Prenumeration Välj din Azure-prenumeration.
    Resursgrupp Välj Skapa ny resursgrupp, ge den namnet my-aca-functions-group och välj OK.
    Namn på containerapp Ange my-aca-functions-app.
  6. Markera kryssrutan bredvid Optimera för Azure Functions.

    Skärmbild av Azure-portalen när du skapar en containerapp som är förkonfigurerad för Azure Functions.

  7. Under Container Apps-miljö anger du:

    Fastighet Värde
    Region Välj en region som är närmast dig.
    Container Apps-miljö Välj Skapa ny miljö.
  8. I fönstret för miljökonfiguration anger du:

    Fastighet Värde
    Miljönamn Ange my-aca-functions-environment
    Zon-redundans Välj Inaktiverad.
  9. Välj Skapa för att spara dina värden.

  10. Välj Nästa: Container för att växla till avsnittet Container .

  11. Bredvid Använd snabbstartsbild, lämna den här rutan avmarkerad.

  12. Under avsnittet Containerinformation anger du följande värden.

    Fastighet Värde
    Namn Den här rutan är förfylld med ditt val i det sista avsnittet.
    Bildkälla Välj Docker Hub eller andra register
    Prenumeration Välj din prenumeration.
    Bildtyp Välj Offentlig.
    Registerinloggningsserver Ange mcr.microsoft.com
    Bild och tagg Ange k8se/quickstart-functions:latest
  13. Under Miljövariabler anger du värden för följande variabler:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY eller APPLICATIONINSIGHTS_CONNECTION_STRING

    Ange värden för hanterad identitet eller anslutningssträng för dessa variabler. Hanterad identitet rekommenderas.

    Variabeln AzureWebJobsStorage är en obligatorisk anslutningssträng för Azure Storage-kontot för Azure Functions. Det här lagringskontot lagrar funktionskörningsloggar, hanterar utlösare och bindningar och underhåller tillstånd för varaktiga funktioner.

    Application Insights är en övervaknings- och diagnostiktjänst som ger insikter om prestanda och användning av dina Azure Functions. Den här övervakningen hjälper dig att spåra begärandefrekvenser, svarstider, felfrekvenser och andra mått.

  14. Välj Nästa > ingress för att växla till avsnittet Ingress och ange följande värden.

    Fastighet Värde
    Inledning Markera kryssrutan Aktiverad för att aktivera ingress.
    Inkommande trafik Välj Acceptera trafik var som helst.
    Ingresstyp Välj HTTP.
    Målport Ange 80.
  15. Välj Granska + Skapa.

  16. Välj Skapa.

  17. När distributionen är klar väljer du Gå till resurs.

  18. På sidan Översikt väljer du länken bredvid Program-URL:en för att öppna programmet på en ny webbläsarflik.

  19. Lägg till /api/HttpExample i slutet av URL:en.

    Ett meddelande om att "HTTP-utlösarfunktionen bearbetade en begäran" returneras i webbläsaren.

Förutsättningar

Skapa en Functions-app

Om du vill logga in på Azure från CLI kör du följande kommando och följer anvisningarna för att slutföra autentiseringsprocessen.

  1. Logga in på Azure.

    az login
    
  2. Kör uppgraderingskommandot för att säkerställa att du kör den senaste versionen av CLI.

    az upgrade
    
  3. Installera eller uppdatera Azure Container Apps-tillägget för CLI.

    Om du får fel om saknade parametrar när du kör az containerapp kommandon i Azure CLI eller cmdlets från modulen Az.App i PowerShell, kontrollera att den senaste versionen av Azure Container Apps-tillägget är installerad.

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

    Nu när det aktuella tillägget eller modulen har installerats registrerar du Microsoft.App namnrymderna och Microsoft.OperationalInsights .

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Skapa miljövariabler.

    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. Skapa en resursgrupp.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Skapa Container Apps-miljön.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Skapa lagringskontot

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Hämta anslutningssträng för lagringskonto

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Skapa Azure Applications Insights

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Hämta Application Insights-anslutningssträngen

    $APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \
      --app $APPLICATION_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  11. Skapa en Azure Functions-containerapp.

    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
    

    Det här kommandot returnerar URL:en för din Functions-app. Kopiera den här URL:en och klistra in den i en webbläsare.

  12. Skapa en Azure Functions-containerapp med --revisions-mode multiple för ett scenario med flera revisioner

    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. För scenario med multirevision uppgraderar du containerappen och delar trafik

    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. Lägg till /api/HttpExample i slutet av URL:en.

    Ett meddelande om att "HTTP-utlösarfunktionen bearbetade en begäran" returneras i webbläsaren.

Hantera funktioner

Du kan hantera dina distribuerade funktioner i Azure Container Apps med hjälp av Azure CLI. Följande kommandon hjälper dig att lista, inspektera och interagera med funktionerna som körs i din containerbaserade miljö.

Anmärkning

När du hanterar scenarier med multirevision lägger du till parametern --revision <REVISION_NAME> i kommandot för att rikta in dig på en specifik revision.

Lista över funktioner

Visa alla funktioner som distribueras i containerappen:

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

Visa funktionsinformation

Få detaljerad information om en specifik funktion:

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

Övervaka funktionsanrop

Det är viktigt att övervaka funktionsappen för att förstå dess prestanda och diagnostisera problem. Följande kommandon visar hur du hämtar funktions-URL:er, utlöser anrop och visar detaljerade telemetri- och anropssammanfattningar med hjälp av Azure CLI. Se till att anropa funktionen några gånger med curl -X POST "fqdn/api/HttpExample" innan du kallar på spårningarna

  1. För att visa anropsspårningar, se detaljerade spårningar av funktionsanrop.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Visa en anropssammanfattning för att granska lyckade och misslyckade anrop.

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

Hantera funktionsnycklar

Azure Functions använder nycklar för autentisering och auktorisering. Du kan hantera följande olika typer av nycklar:

  • Värdnycklar: Åtkomst till alla funktioner i appen
  • Huvudnycklar: Ge administrativ åtkomst
  • Systemnycklar: Används av Azure-tjänster
  • Funktionsnycklar: Åtkomst till specifika funktioner

Följande kommandon visar hur du hanterar nycklar för värdmaskinen. Om du vill köra samma kommando för en specifik Functions-app lägger du till parametern i --function-name <FUNCTIONS_APP_NAME> kommandot.

Visa en lista med nycklar

Använd följande kommandon för att visa en lista över värdnivå- och funktionsspecifika nycklar för dina Azure Functions som körs i Container Apps.

Anmärkning

Låt minst en replik köras för att följande nyckelhanteringskommandon ska fungera.

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

Visa en specifik nyckel

Visa värdet för en specifik nyckel på värdnivå för funktionsappen med följande kommando:

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

Ange en nyckel

Ange en specifik nyckel på värdnivå för funktionsappen med följande kommando:

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