[Azure Functions] Blob Trigger 실습: 로컬 테스트, ARM 템플릿 배포

감자·2026년 2월 5일

microsoft_dataschool

목록 보기
19/28
post-thumbnail

01. Blob Trigger란?

Azure Storage에 새로운 파일(Blob)이 업로드되면 자동으로 실행되는 함수임. 주로 이미지 썸네일 생성, 로그 분석, 데이터 백업 등의 이벤트 기반 작업에 사용됨.

실습 목표

  1. 사용자가 samples-workitems 컨테이너에 이미지를 업로드함.
  2. Azure Function이 이를 감지하여 썸네일을 생성함.
  3. thumbnails 컨테이너에 썸네일 이미지를 자동 저장함.

02. Step 1: 로컬 환경 테스트 (Azurite 활용)

클라우드 비용 절감을 위해 로컬 에뮬레이터인 Azurite를 사용하여 테스트를 진행함.

1) 로컬 설정 (local.settings.json)

AzureWebJobsStorage 값을 UseDevelopmentStorage=true로 설정하여 로컬 에뮬레이터를 바라보게 함.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "STORAGE_CONNECTION_STRING": "UseDevelopmentStorage=true"
  }
}

2) 로컬 컨테이너 생성 및 테스트

  1. Azurite 실행: VS Code에서 F1 > Azurite: Start 실행.
  2. 컨테이너 생성: Azure Storage Explorer 또는 VS Code 확장 프로그램을 이용해 samples-workitems(입력용)와 thumbnails(출력용) 컨테이너 생성.
  3. 함수 실행: F5를 눌러 디버깅 시작.
  4. 파일 업로드: samples-workitems에 이미지 업로드 후, thumbnails에 썸네일이 생성되는지 확인.

03. Step 2: Azure 클라우드 배포

로컬 테스트가 완료되면 실제 Azure 환경에 배포하여 운영함.

1) 리소스 생성 (Azure Portal)

  • 함수 앱(Function App) 생성:
  • 런타임: Python 3.10/3.11
  • 호스팅: 소비(Consumption) 계획 (사용량만큼만 과금)
  • 스토리지: 기존 계정 사용 또는 신규 생성

2) 코드 배포 (VS Code)

  1. VS Code에서 F1 > Azure Functions: Deploy to Function App 선택.
  2. 방금 생성한 함수 앱을 선택하여 배포 진행.

3) 환경 변수 설정 (중요 ⭐)

로컬의 local.settings.json은 배포되지 않으므로, 포털에서 직접 연결 문자열을 등록해야 함.

  1. Azure Portal > 함수 앱 > 설정 > 환경 변수 이동.
  2. STORAGE_CONNECTION_STRING 변수 추가.
  • 값: 스토리지 계정의 액세스 키(Access Key)에 있는 연결 문자열(Connection String).
  1. 저장 후 함수 재시작.

04. Step 3: ARM 템플릿을 활용한 IaC 배포

수동으로 리소스를 생성하는 대신, ARM(Azure Resource Manager) 템플릿을 사용하여 인프라를 코드로 관리(IaC)하고 자동화함.

1) ARM 템플릿이란?

Azure 리소스의 구성(스토리지, 함수 앱, 모니터링 등)을 정의한 JSON 설계도임. 이를 이용하면 동일한 환경을 언제든지 쉽고 빠르게 복제할 수 있음.

2) 템플릿 추출 및 배포 방법

추출하기
Azure Portal > 리소스 그룹 > 자동화 > 템플릿 내보내기에서 현재 구성된 인프라의 JSON 코드를 다운로드함.

배포하기 (방법 A: Azure Portal)

  1. 검색창에 '사용자 지정 배포(Deploy a custom template)' 입력.
  2. '편집기에서 고유한 템플릿 빌드' 선택.
  3. JSON 코드 붙여넣기 후 [만들기] 클릭.

배포하기 (방법 B: Azure CLI)
현업에서 주로 사용하는 방식임.

az deployment group create \
  --resource-group <리소스-그룹-이름> \
  --template-file <템플릿-파일명>.json

3) 템플릿 예시 (요약)

스토리지 계정과 함수 앱을 생성하는 템플릿의 핵심 구조임. (개인정보 마스킹 처리됨)

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "functionAppName": { "defaultValue": "my-unique-func-app", "type": "String" },
        "storageAccountName": { "defaultValue": "mystorageunique123", "type": "String" }
    },
    "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2025-01-01",
            "name": "[parameters('storageAccountName')]",
            "location": "koreacentral",
            "sku": { "name": "Standard_LRS", "tier": "Standard" },
            "kind": "StorageV2"
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2024-11-01",
            "name": "[parameters('functionAppName')]",
            "location": "koreacentral",
            "kind": "functionapp,linux",
            "properties": {
                "serverFarmId": "..."
            }
        }
    ]
}
profile
제 별명이 감자입니다

0개의 댓글