تشغيل سريع: إنشاء موارد 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 هذا:
- Microsoft.Storage/storageAccounts: إنشاء حساب Azure Storage، وهو مطلوب من قبل Functions.
- Microsoft.Web/serverfarms: إنشاء خطة استضافة استهلاك بلا خادم لتطبيق الوظائف.
- Microsoft.Web/sites: إنشاء تطبيق دالة.
- microsoft.insights/components: إنشاء مثيل Application Insights للمراقبة.
هام
يتم استخدام حساب التخزين لتخزين بيانات التطبيق المهمة، بما في ذلك أحيانا التعليمات البرمجية للتطبيق نفسه. يجب تقييد الوصول من التطبيقات والمستخدمين الآخرين إلى حساب التخزين.
نشر ملف Bicep
احفظ ملف Bicep بالاسم main.bicep على الكمبيوتر المحلي الخاص بك.
بادر بتوزيع ملف 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
زيارة صفحة الترحيب لتطبيق الوظائف
استخدم الإخراج من خطوة التحقق السابقة لاسترداد الاسم الفريد الذي تم إنشاؤه لتطبيق الوظائف.
افتح مستعرضاً وأدخل عنوان URL التالي: <https://<appName.azurewebsites.net>. تأكد من استبدال <\appName> بالاسم الفريد الذي تم إنشاؤه لتطبيق الوظائف.
عند زيارة عنوان URL، يجب أن تظهر لك صفحة مثل هذه:
تنظيف الموارد
إذا تابعت إلى الخطوة التالية وأضفت ربط إخراج ناتج قائمة انتظار Azure Storage، فاحتفظ بجميع مواردك في مكانها إذ ستبني على ما قمت به بالفعل.
وإذا لم تعد بحاجة إلى الموارد، فاستخدم مدخل Azure أو PowerShell أو Azure CLI لحذف مجموعة الموارد ومواردها.
az group delete --name exampleRG
الخطوات التالية
بعد أن أنشأت موارد تطبيق الوظائف في Azure، يمكنك توزيع تعليمتك البرمجية على التطبيق الحالي باستخدام إحدى الأدوات التالية: