Udostępnij za pośrednictwem


Tworzenie zadania za pomocą usługi Azure Container Apps

Zadania usługi Azure Container Apps umożliwiają uruchamianie konteneryzowanych zadań wykonywanych przez skończony czas trwania i zakończenie. Zadanie można wyzwolić ręcznie, zaplanować ich wykonywanie lub wyzwolić ich wykonywanie na podstawie zdarzeń.

Zadania najlepiej nadają się do zadań, takich jak przetwarzanie danych, uczenie maszynowe, oczyszczanie zasobów lub dowolny scenariusz, który wymaga przetwarzania na żądanie.

W tym przewodniku Szybki start utworzysz zadanie ręczne lub zaplanowane. Aby dowiedzieć się, jak utworzyć zadanie sterowane zdarzeniami, zobacz Wdrażanie zadania sterowanego zdarzeniami za pomocą usługi Azure Container Apps.

Wymagania wstępne

Ustawienia

  1. Aby zalogować się do platformy Azure z poziomu interfejsu wiersza polecenia, uruchom następujące polecenie i postępuj zgodnie z monitami, aby ukończyć proces uwierzytelniania.

    az login
    
  2. Upewnij się, że używasz najnowszej wersji interfejsu wiersza polecenia za pomocą polecenia uaktualnienia.

    az upgrade
    
  3. Zainstaluj najnowszą wersję rozszerzenia interfejsu wiersza polecenia usługi Azure Container Apps.

    az extension add --name containerapp --upgrade
    
  4. Microsoft.AppZarejestruj przestrzenie nazw , Microsoft.OperationalInsightsiMicrosoft.Storage, jeśli nie zostały jeszcze zarejestrowane w ramach subskrypcji platformy Azure.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    az provider register --namespace Microsoft.Storage
    
  5. Teraz, gdy konfiguracja interfejsu wiersza polecenia platformy Azure została ukończona, możesz zdefiniować zmienne środowiskowe używane w tym artykule.

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

Tworzenie środowiska usługi Container Apps

Środowisko usługi Azure Container Apps działa jako bezpieczna granica wokół aplikacji i zadań kontenerów, dzięki czemu mogą współużytkować tę samą sieć i komunikować się ze sobą.

  1. Utwórz grupę zasobów przy użyciu poniższego polecenia.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Utwórz środowisko Container Apps przy użyciu następującego polecenia.

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

Tworzenie i uruchamianie zadania ręcznego

Aby użyć zadań ręcznych, należy najpierw utworzyć zadanie z typem Manual wyzwalacza, a następnie rozpocząć wykonywanie. Można uruchomić wiele wykonań tego samego zadania, a wiele wykonań zadań może być uruchamianych współbieżnie.

  1. Utwórz zadanie w środowisku Container Apps przy użyciu następującego polecenia.

    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"
    

    Zadania ręczne nie są wykonywane automatycznie. Musisz rozpocząć wykonywanie zadania.

  2. Uruchom wykonanie zadania przy użyciu następującego polecenia.

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

    Polecenie zwraca szczegóły wykonania zadania, w tym jego nazwę.

Tworzenie i uruchamianie zaplanowanego zadania

Aby użyć zaplanowanych zadań, należy utworzyć zadanie z typem Schedule wyzwalacza i wyrażeniem cron definiującym harmonogram.

Utwórz zadanie w środowisku Container Apps, które rozpoczyna się co minutę, używając następującego polecenia.

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

Wykonania zadań są uruchamiane automatycznie zgodnie z harmonogramem.

Zadania usługi Container Apps używają wyrażeń cron do definiowania harmonogramów. Obsługuje standardowy format wyrażenia cron z pięcioma polami minut, godziny, dnia miesiąca, miesiąca i dnia tygodnia.

Wyświetlanie listy ostatnich historii wykonywania zadania

Zadania usługi Container Apps utrzymują historię ostatnich wykonań. Możesz wyświetlić listę wykonań zadania.

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

Wykonania zaplanowanych zadań są wyświetlane na liście podczas ich uruchamiania.

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

Wykonywanie zapytań dotyczących dzienników wykonywania zadań

Zadanie wykonuje dzienniki wyjściowe do dostawcy rejestrowania skonfigurowanego dla środowiska usługi Container Apps. Domyślnie dzienniki są przechowywane w usłudze Azure Log Analytics.

  1. Zapisz identyfikator obszaru roboczego usługi Log Analytics dla środowiska Container Apps w zmiennej.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. Zapisz nazwę ostatniego wykonania zadania w zmiennej.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. Uruchom zapytanie względem usługi Log Analytics na potrzeby wykonywania zadania przy użyciu następującego polecenia.

    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"
    

    Uwaga

    ContainerAppConsoleLogs_CL Dopóki tabela nie będzie gotowa, polecenie nie zwraca żadnych wyników lub z błędem: BadArgumentError: The request had some invalid properties. Zaczekaj kilka minut i ponownie uruchom polecenie.

    Poniższe dane wyjściowe to przykład dzienników drukowanych przez wykonanie zadania.

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

Czyszczenie zasobów

Jeśli nie zamierzasz nadal korzystać z tej aplikacji, uruchom następujące polecenie, aby usunąć grupę zasobów wraz ze wszystkimi zasobami utworzonymi w tym przewodniku Szybki start.

Uwaga

Następujące polecenie usuwa określoną grupę zasobów i wszystkie zawarte w niej zasoby. Jeśli zasoby spoza zakresu tego przewodnika Szybki start istnieją w określonej grupie zasobów, zostaną również usunięte.

az group delete --name "$RESOURCE_GROUP"

Napiwek

Masz problemy? Poinformuj nas o usłudze GitHub, otwierając problem w repozytorium usługi Azure Container Apps.

Następne kroki