Aracılığıyla paylaş


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ı tamamladığınızda Azure hesabınıza birkaç sentlik (ABD doları cinsinden) veya daha düşük bir ücret yansıtılır.

Bicep, Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan, etki alanına özgü bir dildir (DSL). Kısa sözdizimi, güvenilir tür güvenliği ve kod yeniden kullanımı için destek 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.

Önkoşullar

Azure hesabı

Başlamadan önce etkin aboneliği olan bir Azure hesabınız olmalıdır. Ücretsiz 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 uygulama 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>, genellikle kaynak grubuyla aynı olan Application Insights bölgesiyle 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 çıktısı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 aşağıdakine benzer bir sayfa görmeniz gerekir:

    İşlev uygulaması karşılama sayfası

Kaynakları temizleme

Bir sonraki adıma devam edip bir Azure Depolama kuyruğu çıkış bağlaması eklerseniz, daha önce yaptıklarınızı 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ını 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: