تشغيل سريع: إنشاء موارد Azure Functions وتوزيعها باستخدام Bicep

في هذه المقالة، يمكنك استخدام Azure Functions مع Bicep لإنشاء تطبيق الوظائف والموارد ذات الصلة في Azure. يوفر تطبيق الوظائف سياق تنفيذ لعمليات تنفيذ التعليمة البرمجية لوظيفتك.

يتطلب إكمال هذا التشغيل السريع تكلفة صغيرة تبلغ بضعة سنتات أمريكية أو أقل في حساب Azure الخاص بك.

Bicep هي لغة المجال المخصصة (DSL) التي تستخدم بناء الجملة التعريفي لتوزيع موارد Azure. توفر بناء جملة مختصر، وسلامة موثوقة من النوع، ودعمًا لإعادة استخدام التعليمة البرمجية. تقدم 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'
  }
}

يتم إنشاء موارد Azure الأربعة التالية بواسطة ملف Bicep هذا:

هام

يتم استخدام حساب التخزين لتخزين بيانات التطبيق المهمة، بما في ذلك أحيانا التعليمات البرمجية للتطبيق نفسه. يجب تقييد الوصول من التطبيقات والمستخدمين الآخرين إلى حساب التخزين.

نشر ملف 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>
    

    إشعار

    استبدل <app-location> بمنطقة Application Insights، التي عادة ما تكون هي نفسها مجموعة الموارد.

    عند الانتهاء من عملية النشر، يجب أن ترى رسالة تشير إلى نجاح عملية النشر.

التحقُّق من صحة عملية النشر

استخدم Azure CLI أو Azure PowerShell للتحقق من صحة التوزيع.

az resource list --resource-group exampleRG

زيارة صفحة الترحيب لتطبيق الوظائف

  1. استخدم الإخراج من خطوة التحقق السابقة لاسترداد الاسم الفريد الذي تم إنشاؤه لتطبيق الوظائف.

  2. افتح مستعرضاً وأدخل عنوان URL التالي: <https://<appName.azurewebsites.net>. تأكد من استبدال <\appName> بالاسم الفريد الذي تم إنشاؤه لتطبيق الوظائف.

    عند زيارة عنوان URL، يجب أن تظهر لك صفحة مثل هذه:

    صفحة الترحيب لتطبيق الوظائف

تنظيف الموارد

إذا تابعت إلى الخطوة التالية وأضفت ربط إخراج ناتج قائمة انتظار Azure Storage، فاحتفظ بجميع مواردك في مكانها إذ ستبني على ما قمت به بالفعل.

وإذا لم تعد بحاجة إلى الموارد، فاستخدم مدخل Azure أو PowerShell أو Azure CLI لحذف مجموعة الموارد ومواردها.

az group delete --name exampleRG

الخطوات التالية

بعد أن أنشأت موارد تطبيق الوظائف في Azure، يمكنك توزيع تعليمتك البرمجية على التطبيق الحالي باستخدام إحدى الأدوات التالية: