Condividi tramite


Usare Funzioni di Azure nelle app Azure Container

Questo articolo illustra come creare un'app di funzioni di Azure in Azure Container Apps, con regole di scalabilità automatica preconfigurate.

Prerequisiti

Risorsa Descrizione
Account di Azure Un account Azure con una sottoscrizione attiva.

Se non hai un account, puoi crearlo gratuitamente.
Account di archiviazione di Azure Un account di archiviazione BLOB per archiviare lo stato per Funzioni di Azure.
Azure Application Insights Istanza di Azure Application Insights per raccogliere dati sull'app contenitore.

Creare un'app per le funzioni

I passaggi seguenti illustrano come usare un'immagine del contenitore di esempio per creare l'app contenitore. Per usare questa procedura con un'immagine del contenitore personalizzata, vedere Creare la prima app per le funzioni in App Contenitore di Azure.

  1. Passare al portale di Azure e cercare App contenitore nella barra di ricerca.

  2. Selezionare App contenitore.

  3. Fare clic su Crea.

  4. Selezionare Container App

  5. Nella sezione Informazioni di base immettere i valori seguenti.

    In Dettagli del progetto:

    Proprietà Valore
    Abbonamento Seleziona la tua sottoscrizione di Azure.
    Gruppo di risorse Selezionare Crea nuovo gruppo di risorse, denominarlo my-aca-functions-group e selezionare OK.
    Nome app contenitore Immettere my-aca-functions-app.
  6. Accanto a Ottimizza per Funzioni di Azure, selezionare la casella di controllo.

    Screenshot del portale di Azure quando si crea un'app contenitore preconfigurato per Funzioni di Azure.

  7. In Ambiente app contenitore, immettere:

    Proprietà Valore
    Area geografica Selezionare un'area vicina.
    Ambiente app contenitore Selezionare Crea nuovo ambiente.
  8. Nella finestra di installazione dell'ambiente immettere:

    Proprietà Valore
    Nome dell'ambiente Immettere my-aca-functions-environment
    Ridondanza della zona selezionare Disabilitato.
  9. Selezionare Crea per salvare i valori.

  10. Selezionare Avanti: Contenitore per passare alla sezione Contenitore .

  11. Accanto a Usa immagine di avvio rapido lasciare deselezionata questa casella.

  12. Nella sezione Dettagli contenitore immettere i valori seguenti.

    Proprietà Valore
    Nome Questa casella è precompilata con la selezione nell'ultima sezione.
    Origine immagine Selezionare l'hub Docker o altri registri
    Abbonamento Selezionare la sottoscrizione.
    Tipo di immagine Selezionare Pubblico.
    Server di accesso del Registro di sistema Inserisci mcr.microsoft.com
    Immagine e tag Immettere k8se/quickstart-functions:latest
  13. In Variabili di ambiente, immettere i valori per le variabili seguenti:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY o APPLICATIONINSIGHTS_CONNECTION_STRING

    Immettere i valori di identità gestita o stringa di connessione per queste variabili. È consigliabile usare l'identità gestita.

    La AzureWebJobsStorage variabile è una stringa di connessione dell'account di archiviazione di Azure necessaria per Funzioni di Azure. Questo account di archiviazione archivia i log di esecuzione delle funzioni, gestisce trigger e associazioni e mantiene lo stato per le funzioni durevoli.

    Application Insights è un servizio di monitoraggio e diagnostica che fornisce informazioni dettagliate sulle prestazioni e sull'utilizzo di Funzioni di Azure. Questo monitoraggio consente di tenere traccia della frequenza delle richieste, dei tempi di risposta, delle percentuali di errore e di altre metriche.

  14. Selezionare Avanti > ingresso per passare alla sezione Ingresso e immettere i valori seguenti.

    Proprietà Valore
    Dati in ingresso Selezionare la casella di controllo Abilitato per abilitare l'ingresso.
    Traffico in ingresso Selezionare Accettazione del traffico da qualsiasi posizione.
    Tipo di ingresso Selezionare HTTP.
    Porta di destinazione Immettere 80.
  15. Selezionare Verifica e crea.

  16. Fare clic su Crea.

  17. Una volta completata la distribuzione, selezionare Vai alla risorsa.

  18. Nella pagina Panoramica selezionare il collegamento accanto a URL applicazione per aprire l'applicazione in una nuova scheda del browser.

  19. Aggiungere /api/HttpExample alla fine dell'URL.

    Nel browser viene restituito un messaggio che indica che la funzione trigger HTTP ha elaborato una richiesta.

Prerequisiti

Creare un'app per le funzioni

Per accedere ad Azure dall'interfaccia della riga di comando, eseguire il comando seguente e seguire le istruzioni per completare il processo di autenticazione.

  1. Accedere ad Azure.

    az login
    
  2. Per assicurarsi di eseguire l'ultima versione dell'interfaccia della riga di comando, eseguire il comando di upgrade.

    az upgrade
    
  3. Installare o aggiornare l'estensione App Azure Container per l'interfaccia della riga di comando.

    Se ricevi errori relativi ai parametri mancanti quando esegui comandi nell'Azure CLI o cmdlet nel modulo az containerapp di PowerShell, assicurati di avere installato la versione più recente dell'estensione Azure Container Apps.

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

    Ora che l'estensione o il modulo corrente è installato, registrate gli spazi dei nomi Microsoft.App e Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Creare variabili di ambiente.

    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. Creare un gruppo di risorse.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Creare l'ambiente app contenitore.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Creare l'account di archiviazione

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Acquisire la stringa di connessione dell'account di Archiviazione

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

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Acquisire la stringa di connessione di 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. Creare un'applicazione contenitore di 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
    

    Questo comando restituisce l'URL dell'app per le funzioni. Copiare questo URL e incollarlo in un Web browser.

  12. Creare un'applicazione container di Azure Functions con --revisions-mode multiple per lo scenario di multirevisione

    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. Per lo scenario di multi-revisione, aggiornare il container app e dividere il traffico.

    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. Aggiungere /api/HttpExample alla fine dell'URL.

    Nel browser viene restituito un messaggio che indica che la funzione trigger HTTP ha elaborato una richiesta.

Gestire le funzioni

È possibile gestire le funzioni distribuite in App Azure Container usando l'interfaccia della riga di comando di Azure. I comandi seguenti consentono di elencare, esaminare e interagire con le funzioni in esecuzione nell'ambiente in contenitori.

Annotazioni

Quando si gestiscono scenari di revisioni multiple, aggiungere il parametro --revision <REVISION_NAME> al comando per specificare una determinata revisione.

Funzioni di elenco

Visualizzare tutte le funzioni distribuite nell'app contenitore:

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

Visualizzare i dettagli della funzione

Ottenere informazioni dettagliate su una funzione specifica:

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

Monitorare le chiamate di funzione

Il monitoraggio dell'app per le funzioni è essenziale per comprendere le prestazioni e diagnosticare i problemi. I comandi seguenti illustrano come recuperare gli URL delle funzioni, le chiamate ai trigger e visualizzare riepiloghi di telemetria e chiamate dettagliati usando l'interfaccia della riga di comando di Azure. Assicurarsi di richiamare la funzione poche volte prima curl -X POST "fqdn/api/HttpExample" di chiamare le tracce

  1. Per visualizzare le tracce di chiamata e ottenere tracce dettagliate delle invocazioni di funzione.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Visualizzare un riepilogo delle chiamate per esaminare le chiamate riuscite e non riuscite.

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

Gestire le chiavi di funzione

Funzioni di Azure usa le chiavi per l'autenticazione e l'autorizzazione. È possibile gestire i diversi tipi di chiavi seguenti:

  • Chiavi host: accedere a qualsiasi funzione nell'app
  • Chiavi master: fornire l'accesso amministrativo
  • Chiavi di sistema: usate dai servizi di Azure
  • Tasti funzione: accedere a funzioni specifiche

I comandi seguenti illustrano come gestire le chiavi per l'host. Per eseguire lo stesso comando per un'app per le funzioni specifica, aggiungere il --function-name <FUNCTIONS_APP_NAME> parametro al comando.

Elenco delle chiavi

Usare i seguenti comandi per elencare le chiavi a livello di host e specifiche della funzione per le Azure Functions in esecuzione nelle Container Apps.

Annotazioni

Mantenere almeno una replica in esecuzione per il funzionamento dei comandi di gestione delle chiavi seguenti.

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

Mostra una chiave specifica

Visualizzare il valore di una chiave a livello di host specifica per l'app per le funzioni con il comando seguente:

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

Impostare una chiave

Impostare una chiave a livello di host specifica per l'app per le funzioni con il comando seguente:

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