Hızlı Başlangıç: Bicep kullanarak Azure İşlevleri kaynakları oluşturma ve dağıtma

Bu makalede, Azure'da bir işlev uygulaması ve ilgili kaynaklar oluşturmak için Bicep ile Azure İşlevleri kullanacaksınız. İşlev uygulaması, işlev kodu yürütmeleriniz için bir yürütme bağlamı sağlar.

Bu hızlı başlangıcı tamamlamak, Azure hesabınızda birkaç ABD doları veya daha az bir maliyete neden olur.

Bicep , Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan etki alanına özgü bir dildir (DSL). Kısa söz dizimi, güvenilir tür güvenliği ve kod yeniden kullanımı desteği sağlar. Bicep, Azure'daki kod olarak altyapı çözümleriniz için en iyi yazma deneyimini sunar.

İşlev uygulamasını oluşturduktan sonra, Azure İşlevleri proje kodunu bu uygulamaya dağıtabilirsiniz.

Ön koşullar

Azure hesabı

Başlamadan önce etkin aboneliği olan bir Azure hesabınız olmalıdır. Ücretsiz bir hesap oluşturun.

Bicep dosyasını gözden geçirme

Bu hızlı başlangıçta kullanılan Bicep dosyası Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.

@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'
  }
}

Bu Bicep dosyası tarafından aşağıdaki dört Azure kaynağı oluşturulur:

Önemli

Depolama hesabı, bazen uygulama kodunun kendisi de dahil olmak üzere önemli uygulama verilerini depolamak için kullanılır. Diğer uygulamalardan ve kullanıcılardan depolama hesabına erişimi sınırlamanız gerekir.

Bicep dosyasını dağıtma

  1. Bicep dosyasını main.bicep olarak yerel bilgisayarınıza kaydedin.

  2. Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
    

    Not

    Uygulama konumunu> Application Insights için genellikle kaynak grubuyla aynı olan bölgeyle değiştirin<.

    Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görmeniz gerekir.

Dağıtımı doğrulama

Dağıtımı doğrulamak için Azure CLI veya Azure PowerShell kullanın.

az resource list --resource-group exampleRG

İşlev uygulaması karşılama sayfasını ziyaret edin

  1. İşlev uygulamanız için oluşturulan benzersiz adı almak için önceki doğrulama adımının çıkışını kullanın.

  2. Bir tarayıcı açın ve şu URL'yi girin: <https://< appName.azurewebsites.net>. \appName değerini işlev uygulamanız için oluşturulan benzersiz adla değiştirdiğinden <emin olun.>

    URL'yi ziyaret ettiğinizde şuna benzer bir sayfa görmeniz gerekir:

    İşlev uygulaması karşılama sayfası

Kaynakları temizleme

Bir sonraki adıma geçerseniz ve bir Azure Depolama kuyruğu çıkış bağlaması eklerseniz, daha önce yaptıklarınıza göre derleyeceğiniz gibi tüm kaynaklarınızı yerinde tutun.

Aksi takdirde, kaynaklara artık ihtiyacınız yoksa kaynak grubunu ve kaynaklarını silmek için Azure CLI, PowerShell veya Azure portal kullanın.

az group delete --name exampleRG

Sonraki adımlar

İşlev uygulaması kaynaklarınızı Azure'da oluşturduğunuza göre, aşağıdaki araçlardan birini kullanarak kodunuzu mevcut uygulamaya dağıtabilirsiniz: