
Azure Storage에 새로운 파일(Blob)이 업로드되면 자동으로 실행되는 함수임. 주로 이미지 썸네일 생성, 로그 분석, 데이터 백업 등의 이벤트 기반 작업에 사용됨.
실습 목표
samples-workitems 컨테이너에 이미지를 업로드함.thumbnails 컨테이너에 썸네일 이미지를 자동 저장함.클라우드 비용 절감을 위해 로컬 에뮬레이터인 Azurite를 사용하여 테스트를 진행함.
local.settings.json)AzureWebJobsStorage 값을 UseDevelopmentStorage=true로 설정하여 로컬 에뮬레이터를 바라보게 함.
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python",
"STORAGE_CONNECTION_STRING": "UseDevelopmentStorage=true"
}
}
F1 > Azurite: Start 실행.samples-workitems(입력용)와 thumbnails(출력용) 컨테이너 생성.F5를 눌러 디버깅 시작.samples-workitems에 이미지 업로드 후, thumbnails에 썸네일이 생성되는지 확인.로컬 테스트가 완료되면 실제 Azure 환경에 배포하여 운영함.
F1 > Azure Functions: Deploy to Function App 선택.로컬의 local.settings.json은 배포되지 않으므로, 포털에서 직접 연결 문자열을 등록해야 함.
STORAGE_CONNECTION_STRING 변수 추가.수동으로 리소스를 생성하는 대신, ARM(Azure Resource Manager) 템플릿을 사용하여 인프라를 코드로 관리(IaC)하고 자동화함.
Azure 리소스의 구성(스토리지, 함수 앱, 모니터링 등)을 정의한 JSON 설계도임. 이를 이용하면 동일한 환경을 언제든지 쉽고 빠르게 복제할 수 있음.
추출하기
Azure Portal > 리소스 그룹 > 자동화 > 템플릿 내보내기에서 현재 구성된 인프라의 JSON 코드를 다운로드함.
배포하기 (방법 A: Azure Portal)
배포하기 (방법 B: Azure CLI)
현업에서 주로 사용하는 방식임.
az deployment group create \
--resource-group <리소스-그룹-이름> \
--template-file <템플릿-파일명>.json
스토리지 계정과 함수 앱을 생성하는 템플릿의 핵심 구조임. (개인정보 마스킹 처리됨)
{
"$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": "..."
}
}
]
}