Criar um trabalho com os Aplicativos de Contêiner do Azure

Os trabalhos dos Aplicativos de Contêiner do Azure permitem realizar tarefas em contêineres executadas por uma duração finita e encerrá-las. Você pode disparar um trabalho manualmente, agendar a execução dele ou disparar a execução com base em eventos.

Os trabalhos são mais adequados para tarefas como processamento de dados, aprendizado de máquina, limpeza de recursos ou qualquer cenário que exija processamento sob demanda.

Neste guia de início rápido, você criará um trabalho manual ou agendado. Para saber como criar um trabalho controlado por eventos, confira Implantar um trabalho controlado por eventos com os Aplicativos de Contêiner do Azure.

Pré-requisitos

Instalação

  1. Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.

    az login
    
  2. Verifique se você está executando a versão mais recente da CLI com o comando de atualização.

    az upgrade
    
  3. Instale a última versão da extensão da CLI dos Aplicativos de Contêiner do Azure.

    az extension add --name containerapp --upgrade
    
  4. Registre os namespaces Microsoft.App e Microsoft.OperationalInsights se você ainda não os registrou em sua assinatura do Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  5. Agora que a configuração da CLI do Azure foi concluída, você pode definir as variáveis de ambiente que são usadas ao longo deste artigo.

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

Criar um ambiente dos Aplicativos de Contêiner

O ambiente dos Aplicativos de Contêiner do Azure funciona como um limite seguro em torno de aplicativos e trabalhos de contêiner, de modo que eles possam compartilhar a rede e se comunicar entre si.

  1. Crie um grupo de recursos usando o comando a seguir.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Crie o ambiente dos Aplicativos de Contêiner usando o comando a seguir.

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

Criar e executar um trabalho manual

Para usar trabalhos manuais, primeiro, você cria um trabalho com o tipo de gatilho Manual e, em seguida, inicia uma execução. Você pode iniciar várias execuções do mesmo trabalho, e várias execuções de trabalho podem ser executadas simultaneamente.

  1. Crie um trabalho no ambiente dos Aplicativos de Contêiner usando o comando a seguir.

    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"
    

    Os trabalhos manuais não são executados automaticamente. Você precisa iniciar uma execução do trabalho.

  2. Inicie uma execução do trabalho usando o comando a seguir.

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

    O comando retorna os detalhes da execução do trabalho, incluindo o nome.

Criar e executar um trabalho agendado

Para usar trabalhos agendados, você cria um trabalho com o tipo de gatilho Schedule e uma expressão cron que define o agendamento.

Crie um trabalho no ambiente dos Aplicativos de Contêiner que é iniciado a cada minuto usando o comando a seguir.

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

As execuções do trabalho são iniciadas automaticamente de acordo com o agendamento.

Os trabalhos dos Aplicativos de Contêiner usam expressões cron para definir os agendamentos. Ele dá suporte ao formato de expressão cron padrão com cinco campos para minuto, hora, dia do mês, mês e dia da semana.

Listar o histórico de execuções de trabalhos recentes

Os trabalhos dos Aplicativos de Contêiner mantêm um histórico de execuções recentes. Você pode listar as execuções de um trabalho.

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

As execuções de trabalhos agendados são exibidas na lista conforme são executadas.

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

Consultar os logs de execução do trabalho

As execuções de trabalho geram logs para o provedor de logs configurado para o ambiente dos Aplicativos de Contêiner. Por padrão, os logs são armazenados no Azure Log Analytics.

  1. Salve a ID do workspace do Log Analytics para o ambiente dos Aplicativos de Contêiner em uma variável.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. Salve o nome da execução de trabalho mais recente em uma variável.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. Execute uma consulta no Log Analytics para a execução do trabalho usando o comando a seguir.

    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"
    

    Observação

    Até que a tabela ContainerAppConsoleLogs_CL esteja pronta, o comando não retornará nenhum resultado ou retornará o erro BadArgumentError: The request had some invalid properties. Aguarde alguns minutos e execute o comando novamente.

    A saída a seguir é um exemplo dos logs impressos pela execução do trabalho.

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

Limpar os recursos

Caso não pretenda continuar usando este aplicativo, execute o comando a seguir para excluir o grupo de recursos junto com todos os recursos criados neste guia de início rápido.

Cuidado

O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se existirem recursos fora do escopo deste guia de início rápido no grupo de recursos especificado, eles também serão excluídos.

az group delete --name "$RESOURCE_GROUP"

Dica

Está enfrentando problemas? Deixe-nos saber sobre GitHub abrindo um problema no repositório dos Aplicativos de Contêiner do Azure.

Próximas etapas