빠른 시작: Bicep을 사용한 Azure Functions 리소스 만들기 및 배포
이 문서에서는 Bicep과 함께 Azure Functions를 사용하여 Azure에서 함수 앱과 관련 리소스를 만듭니다. 함수 앱은 함수 코드 실행을 위한 실행 컨텍스트를 제공합니다.
이 빠른 시작을 완료하면 Azure 계정에서 USD 센트 이하의 작은 비용이 발생합니다.
Bicep은 선언적 구문을 사용하여 Azure 리소스를 배포하는 DSL(도메인 특정 언어)입니다. 간결한 구문, 신뢰할 수 있는 형식 안전성 및 코드 다시 사용에 대한 지원을 제공합니다. Bicep은 Azure에서 코드형 인프라 솔루션에 대한 최고의 제작 환경을 제공합니다.
함수 앱을 만든 후 해당 앱에 Azure Functions 프로젝트 코드를 배포할 수 있습니다.
필수 조건
Azure 계정
시작하기 전에 활성 구독이 포함된 Azure 계정이 있어야 합니다. 체험 계정을 만듭니다.
Bicep 파일 검토
이 빠른 시작에서 사용되는 Bicep 파일은 Azure 빠른 시작 템플릿에서 나온 것입니다.
@description('The name of the function app that you wish to create.')
param appName string = 'fnapp${uniqueString(resourceGroup().id)}'
@description('Storage Account type')
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
])
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
@description('Location for Application Insights')
param appInsightsLocation string
@description('The language worker runtime to load in the function app.')
@allowed([
'node'
'dotnet'
'java'
])
param runtime string = 'node'
var functionAppName = appName
var hostingPlanName = appName
var applicationInsightsName = appName
var storageAccountName = '${uniqueString(resourceGroup().id)}azfunctions'
var functionWorkerRuntime = runtime
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'Storage'
properties: {
supportsHttpsTrafficOnly: true
defaultToOAuthAuthentication: true
}
}
resource hostingPlan 'Microsoft.Web/serverfarms@2021-03-01' = {
name: hostingPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
}
properties: {}
}
resource functionApp 'Microsoft.Web/sites@2021-03-01' = {
name: functionAppName
location: location
kind: 'functionapp'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
appSettings: [
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTSHARE'
value: toLower(functionAppName)
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~14'
}
{
name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
value: applicationInsights.properties.InstrumentationKey
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: functionWorkerRuntime
}
]
ftpsState: 'FtpsOnly'
minTlsVersion: '1.2'
}
httpsOnly: true
}
}
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
name: applicationInsightsName
location: appInsightsLocation
kind: 'web'
properties: {
Application_Type: 'web'
Request_Source: 'rest'
}
}
이 Bicep 파일에서 생성되는 네 가지 Azure 리소스는 다음과 같습니다.
- Microsoft.Storage/storageAccounts: Functions에 필요한 Azure Storage 계정을 만듭니다.
- Microsoft.Web/serverfarms: 함수 앱에 대한 서버리스 소비 호스팅 계획을 만듭니다.
- Microsoft.Web/sites: 함수 앱을 만듭니다.
- microsoft.insights/components: 모니터링을 위한 Application Insights 인스턴스를 만듭니다.
Important
스토리지 계정은 중요한 앱 데이터를 저장하는 데 사용되며, 이러한 중요 앱 데이터에 애플리케이션 코드 자체가 포함되는 경우도 있습니다. 다른 앱이나 사용자가 스토리지 계정에 액세스하는 행위를 제한해야 합니다.
Bicep 파일 배포
Bicep 파일을 main.bicep으로 로컬 컴퓨터에 저장합니다.
Azure CLI 또는 Azure PowerShell을 사용하여 Bicep 파일을 배포합니다.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
참고 항목
<app-location>을 일반적으로 리소스 그룹과 동일한 Application Insights의 지역으로 바꿉니다.
배포가 완료되면 배포에 성공했음을 나타내는 메시지가 표시됩니다.
배포 유효성 검사
Azure CLI 또는 Azure PowerShell을 사용하여 배포의 유효성을 검사합니다.
az resource list --resource-group exampleRG
함수 앱 시작 페이지 방문
이전 유효성 검사 단계의 출력을 사용하여 함수 앱에 대해 만든 고유 이름을 검색합니다.
브라우저를 열고 다음 URL을 입력합니다. <https://<appName.azurewebsites.net>. <\appName>을 함수 앱에 대해 만든 고유한 이름으로 바꿔야 합니다.
URL을 방문하면 다음과 같은 페이지가 표시됩니다.
리소스 정리
다음 단계를 계속 진행하고 Azure Storage 큐 출력 바인딩을 추가하는 경우 이미 수행한 작업을 기반으로 하여 빌드되는 모든 리소스를 그대로 유지합니다.
그렇지 않으면 리소스가 더 이상 필요하지 않은 경우 Azure CLI, PowerShell 또는 Azure Portal을 사용하여 리소스 그룹 및 해당 리소스를 삭제합니다.
az group delete --name exampleRG
다음 단계
이제 Azure에서 함수 앱 리소스를 만들었으므로 다음 도구 중 하나를 사용하여 코드를 기존 앱에 배포할 수 있습니다.