자습서: Azure Functions를 사용한 Batch 작업 트리거

이 자습서에서는 Azure Functions를 사용하여 Batch 작업을 트리거하는 방법을 알아봅니다. 이 문서에서는 Azure Batch를 사용하여 Azure Storage Blob 컨테이너에 추가된 문서에 OCR(광학 인식)을 적용하는 예를 안내합니다. OCR 처리를 간소화하기 위해 이 예에서는 파일이 Blob 컨테이너에 추가될 때마다 Batch OCR 작업을 실행하는 Azure 함수를 구성합니다. 다음 방법에 대해 설명합니다.

  • Azure Portal을 사용하여 풀과 작업을 만듭니다.
  • Blob 컨테이너 및 SAS(공유 액세스 서명)를 만듭니다.
  • Blob 트리거 Azure Function을 만듭니다.
  • 입력 파일을 Storage에 업로드합니다.
  • 태스크 실행을 모니터링합니다.
  • 출력 파일을 검색합니다.

필수 조건

Azure에 로그인

Azure Portal에 로그인합니다.

Azure Portal을 사용하여 Batch 풀 및 Batch 작업 만들기

이 섹션에서는 Azure Portal을 사용하여 OCR 태스크를 실행하는 Batch 풀 및 Batch 작업을 만듭니다.

풀 만들기

  1. Azure 자격 증명을 사용하여 Azure Portal에 로그인합니다.

  2. 왼쪽 탐색 메뉴에서 을 선택한 다음 검색 양식 위의 추가 단추를 선택하여 풀을 만듭니다.

    Screenshot of the Pools page in a Batch account that highlights the Add button.

    1. 풀 ID를 입력합니다. 이 예에서는 풀 이름을 ocr-pool로 지정합니다.
    2. 게시자정식을 선택합니다.
    3. 제품으로 0001-com-ubuntu-server-jammy를 선택합니다.
    4. Sku22_04-lts를 선택합니다.
    5. 노드 크기 섹션에서 VM 크기Standard_F2s_v2 - 2 vCPUs, 2 GB Memory를 선택합니다.
    6. 규모 섹션의 모드고정으로 설정하고 대상 전용 노드에 3을 입력합니다.
    7. 시작 태스크의 태스크 시작사용으로 설정하고 명령줄/bin/bash -c "sudo update-locale LC_ALL=C.UTF-8 LANG=C.UTF-8; sudo apt-get update; sudo apt-get -y install ocrmypdf" 명령을 입력합니다. 상승 수준풀 자동 사용자, 관리자로 설정해야 시작 태스크에 sudo가 포함된 명령이 포함될 수 있습니다.
    8. 확인을 선택합니다.

작업 만들기

  1. 왼쪽 탐색 메뉴에서 작업을 선택하여 풀에서 작업을 만든 다음 검색 양식 위의 추가 단추를 선택합니다.
    1. 작업 ID를 입력합니다. 이 예제에서는 ocr-job를 사용합니다.
    2. 현재 풀에 대해 ocr-pool을 선택하거나 풀에 대해 선택한 이름을 선택합니다.
    3. 확인을 선택합니다.

Blob 컨테이너 만들기

여기서는 OCR Batch 작업에 대한 입력 및 출력 파일을 저장하는 Blob 컨테이너를 만듭니다. 이 예제에서 입력 컨테이너 이름은 input이며 OCR이 없는 모든 문서가 처리되기 위해 처음 업로드되는 위치입니다. 출력 컨테이너 이름은 output이며 Batch 작업이 OCR로 처리된 문서를 기록하는 위치입니다.

  1. Azure Portal에서 스토리지 계정을 검색하고 선택합니다.

  2. 배치 계정에 연결된 스토리지 계정을 선택합니다.

  3. 왼쪽 탐색 메뉴에서 컨테이너를 선택하고 Blob 컨테이너 만들기의 단계에 따라 두 개의 Blob 컨테이너(입력 파일용 하나, 출력 파일용 하나)를 만듭니다.

  4. 출력 컨테이너를 선택하여 출력 컨테이너에 대한 공유 액세스 서명을 만들고, 공유 액세스 토큰 페이지의 권한 드롭다운에서 쓰기를 선택합니다. 다른 권한은 필요하지 않습니다.

  5. SAS 토큰 및 URL 생성을 선택하고 Blob SAS URL을 복사하여 나중에 함수에 사용합니다.

    Screenshot of the Shared access tokens page that highlights the Permissions dropdown and the Generate SAS token and URL button.

Azure Function 만들기

이 섹션에서는 파일이 입력 컨테이너에 업로드될 때마다 OCR Batch 작업을 트리거하는 Azure Function을 만듭니다.

  1. Azure Blob Storage가 트리거하는 함수 만들기의 단계에 따라 함수를 만듭니다.

    1. 런타임 스택에 .NET을 선택합니다. 이 함수 예는 C#을 사용하여 Batch .NET SDK를 활용합니다.
    2. 스토리지 페이지에서 배치 계정에 연결한 것과 동일한 스토리지 계정을 사용합니다.
    3. 검토 + 만들기 > 만들기를 선택합니다.

    다음 스크린샷은 정보 예를 사용하여 기본 사항 탭의 함수 앱 만들기 페이지를 보여 줍니다.

    Screenshot of the Create Function App page on the Basics tab using example information.

  2. 함수의 왼쪽 탐색 메뉴에서 함수를 선택하고 만들기를 선택합니다.

  3. 함수 만들기 창에서 Azure Blob Storage 트리거를 선택합니다.

  4. 새 함수에 함수 이름을 입력합니다. 이 예에서 이름은 OcrTrigger입니다. 경로를 Blob 컨테이너의 이름과 함께 input/{name}으로 입력합니다.

  5. 만들기를 실행합니다.

    Screenshot of the Create Function pane that highlights the Azure Blob Storage trigger option and New Function and Path Fields.

  6. Blob 트리거 함수가 만들어지면 코드 + 테스트를 선택합니다. Function에서 GitHub의 run.csxfunction.proj를 사용합니다. function.proj는 기본적으로 존재하지 않으므로 업로드 단추를 선택하여 개발 작업 영역에 업로드합니다.

    • run.csx는 새 Blob이 입력 Blob 컨테이너에 추가될 때 실행됩니다.
    • function.proj는 Batch .NET SDK 등, Function 코드의 외부 라이브러리를 나열합니다.
  7. Batch 및 스토리지 자격 증명을 반영하여 run.csx 파일의 Run() 함수에서 변수 자리 표시자 값을 변경합니다. Batch 및 스토리지 계정의 섹션에 있는 Azure Portal에서 Batch 및 스토리지 계정 자격 증명을 찾을 수 있습니다.

함수 트리거 및 결과 검색

GitHub의 input_files에서 스캔한 일부 또는 모든 파일을 입력 컨테이너에 업로드합니다.

함수의 코드 + 테스트 페이지에 있는 Azure Portal에서 함수를 테스트할 수 있습니다.

  1. 코드 + 테스트 페이지에서 테스트/실행을 선택합니다.
  2. 입력 탭의 본문에 입력 컨테이너 경로를 입력합니다.
  3. 실행을 선택합니다.

몇 초 후 OCR이 적용된 파일이 출력 컨테이너에 추가됩니다. 하단 창에 로그 정보가 출력됩니다. 그러면 Storage Explorer에서 파일을 보고 검색할 수 있습니다.

또는 모니터링 페이지에서 로그 정보를 찾을 수 있습니다.

2019-05-29T19:45:25.846 [Information] Creating job...
2019-05-29T19:45:25.847 [Information] Accessing input container <inputContainer>...
2019-05-29T19:45:25.847 [Information] Adding <fileName> as a resource file...
2019-05-29T19:45:25.848 [Information] Name of output text file: <outputTxtFile>
2019-05-29T19:45:25.848 [Information] Name of output PDF file: <outputPdfFile>
2019-05-29T19:45:26.200 [Information] Adding OCR task <taskID> for <fileName> <size of fileName>...

출력 파일을 로컬 컴퓨터에 다운로드하려면 스토리지 계정의 출력 컨테이너로 이동합니다. 원하는 파일에 대해 추가 옵션을 선택한 다음 다운로드를 선택합니다.

PDF Reader로 열면 다운로드한 파일을 검색할 수 있습니다.

리소스 정리

작업이 예약되지 않은 경우에도 노드가 실행되는 동안은 풀에 대한 요금이 부과됩니다. 풀이 더 이상 필요하지 않으면 다음 단계를 수행하여 삭제합니다.

  1. 배치 계정의 페이지에서 풀에 대한 추가 옵션을 선택합니다.
  2. 삭제를 선택합니다.

풀을 삭제하면 노드의 모든 태스크 출력이 삭제됩니다. 그러나 출력 파일은 스토리지 계정에 남아 있습니다. 더 이상 필요하지 않은 경우 Batch 계정과 스토리지 계정을 삭제할 수도 있습니다.

다음 단계

.NET API를 사용하여 Batch 워크로드를 예약하고 처리하는 방법에 대한 예를 더 보려면 GitHub의 샘플을 참조하세요.