다음을 통해 공유


Azure Container Apps를 사용하여 작업 만들기

Azure Container Apps 작업을 사용하면 한정된 기간 동안 실행되고 종료되는 컨테이너화된 작업을 실행할 수 있습니다. 작업을 수동으로 트리거하거나, 실행을 예약하거나, 이벤트에 따라 실행을 트리거할 수 있습니다.

작업은 데이터 처리, 기계 학습, 리소스 정리 또는 주문형 처리가 필요한 시나리오와 같은 작업에 가장 적합합니다.

이 빠른 시작에서는 수동 또는 예약된 작업을 만듭니다. 이벤트 기반 작업을 만드는 방법을 알아보려면 Azure Container Apps를 사용하여 이벤트 기반 작업 배포를 참조하세요.

필수 조건

설정

  1. CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.

    az login
    
  2. 업그레이드 명령을 통해 최신 버전의 CLI를 실행하고 있는지 확인합니다.

    az upgrade
    
  3. 최신 버전의 Azure Container Apps CLI 확장을 설치합니다.

    az extension add --name containerapp --upgrade
    
  4. Azure 구독에 Microsoft.App아직 등록하지 않은 경우 , Microsoft.OperationalInsightsMicrosoft.Storage 네임스페이스를 등록합니다.

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    az provider register --namespace Microsoft.Storage
    
  5. 이제 Azure CLI 설정이 완료되었으므로 이 문서 전체에서 사용되는 환경 변수를 정의할 수 있습니다.

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

컨테이너 앱 환경 만들기

Azure Container Apps 환경은 Container Apps와 작업 주위의 보안 경계 역할을 하므로 동일한 네트워크를 공유하고 서로 통신할 수 있습니다.

  1. 다음 명령을 사용하여 리소스 그룹을 만듭니다.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. 다음 명령을 사용하여 Container Apps 환경을 만듭니다.

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

수동 작업 만들기 및 실행

수동 작업을 사용하려면 먼저 트리거 형식이 Manual인 작업을 만든 다음 실행을 시작합니다. 동일한 작업의 여러 실행을 시작할 수 있으며 여러 작업 실행이 동시에 실행될 수 있습니다.

  1. 다음 명령을 사용하여 Container Apps 환경에서 작업을 만듭니다.

    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"
    

    수동 작업은 자동으로 실행되지 않습니다. 작업 실행을 시작해야 합니다.

  2. 다음 명령을 사용하여 작업 실행을 시작합니다.

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

    이 명령은 이름을 포함하여 작업 실행에 대한 세부 정보를 반환합니다.

예약된 작업 만들기 및 실행

예약된 작업을 사용하려면 트리거 형식이 Schedule이고 일정을 정의하는 cron 식을 사용하여 작업을 만듭니다.

다음 명령을 사용하여 1분마다 시작되는 Container Apps 환경에서 작업을 만듭니다.

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

일정에 따라 작업 실행이 자동으로 시작됩니다.

Container Apps 작업은 cron 식을 사용하여 일정을 정의합니다. 분, 시, 일, 월, 요일에 대한 5개 필드가 있는 표준 cron 식 형식을 지원합니다.

최근 작업 실행 기록 나열

Container Apps 작업은 최근 실행 기록을 유지합니다. 작업 실행을 나열할 수 있습니다.

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

예약된 작업 실행이 실행되면 목록에 나타납니다.

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

작업 실행 로그 쿼리

작업 실행은 Container Apps 환경에 대해 구성한 로깅 공급자에 로그를 출력합니다. 기본적으로 로그는 Azure Log Analytics에 저장됩니다.

  1. Container Apps 환경에 대한 Log Analytics 작업 영역 ID를 변수에 저장합니다.

    LOG_ANALYTICS_WORKSPACE_ID=$(az containerapp env show \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" \
        --output tsv)
    
  2. 가장 최근 작업 실행의 이름을 변수에 저장합니다.

    JOB_EXECUTION_NAME=$(az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --query "[0].name" \
        --output tsv)
    
  3. 다음 명령을 사용하여 작업 실행을 위해 Log Analytics에 대해 쿼리를 실행합니다.

    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"
    

    참고 항목

    ContainerAppConsoleLogs_CL 테이블이 준비될 때까지 명령은 결과를 반환하지 않거나 오류: BadArgumentError: The request had some invalid properties를 반환합니다. 몇 분 정도 기다린 후 명령을 다시 실행합니다.

    다음 출력은 작업 실행으로 인쇄된 로그의 예입니다.

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

리소스 정리

이 애플리케이션을 계속 사용하지 않으려면 다음 명령을 실행하여 이 빠른 시작에서 만든 모든 리소스와 함께 리소스 그룹을 삭제합니다.

주의

다음 명령은 지정된 리소스 그룹과 그 안에 포함된 모든 리소스를 삭제합니다. 이 빠른 시작의 범위에 속하지 않는 리소스가 지정된 리소스 그룹에 있는 경우에도 해당 리소스가 삭제됩니다.

az group delete --name "$RESOURCE_GROUP"

문제가 있나요? Azure Container Apps 리포지토리에서 문제를 열어 GitHub에 알려주세요.

다음 단계