Share via


Creación de un trabajo con Azure Container Apps

Los trabajos de Azure Container Apps permiten ejecutar tareas en contenedor que se ejecutan durante una duración finita y salen. Puede desencadenar un trabajo manualmente, programar su ejecución o desencadenar su ejecución en función de los eventos.

Los trabajos son más adecuados para tareas como el procesamiento de datos, el aprendizaje automático o cualquier escenario que requiera procesamiento a petición.

En este inicio rápido, creará un trabajo manual o programado. Para aprender a crear un trabajo controlado por eventos, consulte Implementación de un trabajo controlado por eventos con Azure Container Apps.

Requisitos previos

Configuración

  1. Para iniciar sesión en Azure desde la CLI, ejecute el siguiente comando y siga las indicaciones para completar el proceso de autenticación.

    az login
    
  2. Asegúrese de que ejecuta la versión más reciente de la CLI con el comando de actualización.

    az upgrade
    
  3. Instale la versión más reciente de la extensión de la CLI de Azure Container Apps.

    az extension add --name containerapp --upgrade
    
  4. Registre los espacios de nombres Microsoft.App y Microsoft.OperationalInsights si aún no los ha registrado en su suscripción de Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. Ahora que la configuración de la CLI de Azure está completa, puede definir las variables de entorno que se usan en este artículo.

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

Creación de un entorno de Container Apps

El entorno de Azure Container Apps actúa como un límite seguro en torno a las aplicaciones y trabajos de contenedor para que puedan compartir la misma red y comunicarse entre sí.

  1. Cree un grupo de recursos con el siguiente comando.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Cree el entorno de Container Apps mediante el siguiente comando.

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

Creación y ejecución de un trabajo manual

Para usar trabajos manuales, primero debe crear un trabajo con el tipo de desencadenador Manual y, a continuación, iniciar una ejecución. Puede iniciar varias ejecuciones del mismo trabajo y se pueden ejecutar simultáneamente varias ejecuciones de trabajos.

  1. Cree un trabajo en el entorno de Container Apps mediante el siguiente comando.

    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"
    

    Los trabajos manuales no se ejecutan automáticamente. Debe iniciar una ejecución del trabajo.

  2. Inicie una ejecución del trabajo con el siguiente comando.

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

    El comando devuelve los detalles de la ejecución del trabajo, incluido su nombre.

Creación y ejecución de un trabajo programado

Para usar trabajos programados, cree un trabajo con el tipo de desencadenador Schedule y una expresión CRON que defina la programación.

Cree un trabajo en el entorno de Container Apps que se inicie cada minuto con el comando siguiente.

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 * * * *"

Las ejecuciones de trabajos se inician automáticamente en función de la programación.

Los trabajos de Container Apps usan expresiones CRON para definir programaciones. Admite el formato de expresión CRON estándar con cinco campos para minuto, hora, día del mes, mes y día de la semana.

Enumeración del historial de ejecución de trabajos recientes

Los trabajos de Container Apps mantienen un historial de ejecuciones recientes. Puede enumerar las ejecuciones de un trabajo.

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

Las ejecuciones de trabajos programados aparecen en la lista a medida que se ejecutan.

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

Consulta de registros de ejecución de trabajos

Las ejecuciones de trabajos generan registros en el proveedor de registro que configuró para el entorno de Container Apps. De forma predeterminada, los registros se encuentran en el área de trabajo de Azure Log Analytics.

  1. Guarde el identificador del área de trabajo de Log Analytics para el entorno de Container Apps en una variable.

    LOG_ANALYTICS_WORKSPACE_ID=`az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv`
    
  2. Guarde el nombre de la ejecución del trabajo más reciente en una variable.

    JOB_EXECUTION_NAME=`az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv`
    
  3. Ejecute una consulta en Log Analytics para la ejecución del trabajo con el siguiente comando.

    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:

    Hasta que la tabla ContainerAppConsoleLogs_CL esté lista, el comando no devuelve ningún resultado o con un error: BadArgumentError: The request had some invalid properties. Espere unos minutos y ejecute el comando de nuevo.

    La salida siguiente es un ejemplo de los registros impresos por la ejecución del trabajo.

    [
        "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!"
    ]
    

Limpieza de recursos

Si no va a seguir usando esta aplicación, ejecute el siguiente comando para eliminar el grupo de recursos junto con todos los recursos creados en el inicio rápido.

Precaución

El comando siguiente elimina el grupo de recursos especificado y todos los recursos que contiene. Si los recursos que están fuera del ámbito de este inicio rápido existen en el grupo de recursos especificado, también se eliminarán.

az group delete --name "$RESOURCE_GROUP"

Sugerencia

¿Tiene problemas? Háganoslo saber en GitHub abriendo una incidencia en el repositorio de Azure Container Apps.

Pasos siguientes