Condividi tramite


Creare un processo con App Azure Container

I processi di App Azure Container consentono di eseguire attività in contenitori che vengono eseguite per una durata e un'uscita finiti. È possibile attivare un processo manualmente, pianificarne l'esecuzione o attivarne l'esecuzione in base a eventi.

I processi sono più adatti per attività come l'elaborazione dei dati, l'apprendimento automatico, la pulizia delle risorse o qualsiasi scenario che richiede l'elaborazione su richiesta.

In questa guida introduttiva si crea un processo manuale o pianificato. Per informazioni su come creare un processo basato su eventi, vedere Distribuire un processo basato su eventi con app contenitore di Azure.

Prerequisiti

Attrezzaggio

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

    az login
    
  2. Assicurarsi di eseguire la versione più recente dell'interfaccia della riga di comando tramite il comando di aggiornamento.

    az upgrade
    
  3. Installare la versione più recente dell'estensione dell'interfaccia della riga di comando di App Azure Container.

    az extension add --name containerapp --upgrade
    
  4. Registrare gli Microsoft.App spazi dei nomi e Microsoft.OperationalInsights se non sono già stati registrati nella sottoscrizione di Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. Dopo aver completato la configurazione dell'interfaccia della riga di comando di Azure, è possibile definire le variabili di ambiente usate in questo articolo.

    RESOURCE_GROUP="jobs-quickstart"
    LOCATION="northcentralus"
    ENVIRONMENT="env-jobs-quickstart"
    JOB_NAME="my-job"
    

Creare un ambiente app contenitore

L'ambiente app Azure Container funge da limite sicuro per le app e i processi del contenitore, in modo che possano condividere la stessa rete e comunicare tra loro.

  1. Creare un gruppo di risorse usando il comando seguente.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Creare l'ambiente App contenitore usando il comando seguente.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Creare ed eseguire un processo manuale

Per usare i processi manuali, creare prima un processo con tipo di Manual trigger e quindi avviare un'esecuzione. È possibile avviare più esecuzioni dello stesso processo e più esecuzioni di processi possono essere eseguite simultaneamente.

  1. Creare un processo nell'ambiente App contenitore usando il comando seguente.

    az containerapp job create \
        --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
        --trigger-type "Manual" \
        --replica-timeout 1800 \
        --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
        --cpu "0.25" --memory "0.5Gi"
    

    I processi manuali non vengono eseguiti automaticamente. È necessario avviare un'esecuzione del processo.

  2. Avviare un'esecuzione del processo usando il comando seguente.

    az containerapp job start \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP"
    

    Il comando restituisce i dettagli dell'esecuzione del processo, incluso il nome.

Creare ed eseguire un processo pianificato

Per usare i processi pianificati, creare un processo con tipo di Schedule trigger e un'espressione cron che definisce la pianificazione.

Creare un processo nell'ambiente App contenitore che viene avviato ogni minuto usando il comando seguente.

az containerapp job create \
    --name "$JOB_NAME" --resource-group "$RESOURCE_GROUP"  --environment "$ENVIRONMENT" \
    --trigger-type "Schedule" \
    --replica-timeout 1800 \
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" \
    --cpu "0.25" --memory "0.5Gi" \
    --cron-expression "*/1 * * * *"

Le esecuzioni dei processi vengono avviate automaticamente in base alla pianificazione.

I processi di App contenitore usano espressioni cron per definire le pianificazioni. Supporta il formato di espressione cron standard con cinque campi per minuto, ora, giorno del mese, mese e giorno della settimana.

Elencare la cronologia di esecuzione dei processi recenti

I processi di App contenitore mantengono una cronologia delle esecuzioni recenti. È possibile elencare le esecuzioni di un processo.

az containerapp job execution list \
    --name "$JOB_NAME" \
    --resource-group "$RESOURCE_GROUP" \
    --output table \
    --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'

Le esecuzioni di processi pianificati vengono visualizzate nell'elenco durante l'esecuzione.

Status     Name            StartTime
---------  --------------  -------------------------
Succeeded  my-job-jvsgub6  2023-05-08T21:21:45+00:00

Eseguire query sui log di esecuzione dei processi

L'esecuzione del processo restituisce i log di output al provider di registrazione configurato per l'ambiente App contenitore. Per impostazione predefinita, i log vengono archiviati in Azure Log Analytics.

  1. Salvare l'ID dell'area di lavoro Log Analytics per l'ambiente App contenitore in una variabile.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. Salvare il nome dell'esecuzione del processo più recente in una variabile.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. Eseguire una query su Log Analytics per l'esecuzione del processo usando il comando seguente.

    az monitor log-analytics query \
        --workspace "$LOG_ANALYTICS_WORKSPACE_ID" \
        --analytics-query "ContainerAppConsoleLogs_CL | where ContainerGroupName_s startswith '$JOB_EXECUTION_NAME' | order by _timestamp_d asc" \
        --query "[].Log_s"
    

    Nota

    Finché la ContainerAppConsoleLogs_CL tabella non è pronta, il comando non restituisce risultati o con un errore: BadArgumentError: The request had some invalid properties. Attendere alcuni minuti ed eseguire di nuovo il comando.

    L'output seguente è un esempio dei log stampati dall'esecuzione del processo.

    [
        "2023/04/24 18:38:28 This is a sample application that demonstrates how to use Azure Container Apps jobs",
        "2023/04/24 18:38:28 Starting processing...",
        "2023/04/24 18:38:33 Finished processing. Shutting down!"
    ]
    

Pulire le risorse

Se non si intende continuare a usare questa applicazione, eseguire il comando seguente per eliminare il gruppo di risorse insieme a tutte le risorse create in questa guida introduttiva.

Attenzione

Il comando seguente elimina il gruppo di risorse specificato e tutte le risorse contenute al suo interno. Se nel gruppo di risorse specificato sono presenti anche risorse diverse da quelle usate in questa guida di avvio rapido, verranno eliminate.

az group delete --name "$RESOURCE_GROUP"

Suggerimento

Problemi? Segnalare il problema in GitHub aprendo un problema nel repository di App contenitore di Azure.

Passaggi successivi