Поделиться через


Краткое руководство: Создание и развертывание ресурсов Функций Azure с помощью Bicep

В этой статье вы будете использовать Функции Azure с Bicep для создания приложения-функции и связанных ресурсов в Azure. Приложение-функция обеспечивает контекст выполнения кода функций.

Выполнение этого краткого руководства предполагает небольшую дополнительную плату в несколько центов США в учетной записи Azure.

Bicep — это предметно-ориентированный язык (DSL), который использует декларативный синтаксис для развертывания ресурсов Azure. Он обеспечивает краткий синтаксис, надежную безопасность типов и поддержку повторного использования кода. Bicep предлагает лучшие возможности для разработки решений Azure типа "инфраструктура как код".

После создания приложения-функции можно развернуть код проекта Функций Azure в этом приложении.

Необходимые компоненты

Учетная запись 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 — учетная запись хранения Azure, которая нужна для работы Функций Azure;
  • Microsoft.Web/serverfarms — план размещения для потребления бессерверных ресурсов, которые использует приложение-функция.
  • Microsoft.Web/sites — собственно приложение-функция.
  • microsoft.insights/components — экземпляр Application Insights для мониторинга.

Внимание

Учетная запись хранения используется для хранения важных данных приложения, иногда включая сам код приложения. Необходимо ограничить доступ от других приложений и пользователей к учетной записи хранения.

Развертывание BICEP-файла

  1. Сохраните файл Bicep с именем main.bicep на локальном компьютере.

  2. Разверните файл Bicep с помощью Azure CLI или Azure PowerShell.

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

    Примечание.

    Замените <расположение приложения> регионом для Application Insights, который обычно совпадает с группой ресурсов.

    После завершения развертывания должно отобразиться сообщение о том, что развертывание успешно выполнено.

Проверка развертывания

Используйте Azure CLI или Azure PowerShell для проверки развертывания.

az resource list --resource-group exampleRG

Посетите страницу приветствия приложения-функции

  1. Используйте выходные данные предыдущего шага проверки, чтобы получить уникальное имя, созданное для приложения-функции.

  2. Откройте браузер и введите следующий URL-адрес: <https://< appName.azurewebsites.net>. Обязательно замените <\appName> уникальным именем, созданным для приложения-функции.

    При посещении URL-адреса вы увидите следующую страницу:

    Страница приветствия приложения-функции

Очистка ресурсов

Если вы намерены перейти к следующему шагу и добавить выходную привязку очереди службы хранилища Azure, можете сохранить все ресурсы, которые пригодятся на этом этапе.

В противном случае, если вам больше не нужны ресурсы, используйте Azure CLI, PowerShell или портал Azure для удаления группы ресурсов и ее ресурсов.

az group delete --name exampleRG

Следующие шаги

Теперь, когда вы создали ресурсы приложения-функции в Azure, вы можете развернуть код в существующем приложении с помощью одного из следующих средств: