Szybki start: tworzenie i wdrażanie zasobów usługi Azure Functions przy użyciu Bicep
W tym artykule użyjesz usługi Azure Functions z aplikacją Bicep, aby utworzyć aplikację funkcji i powiązane zasoby na platformie Azure. Aplikacja funkcji udostępnia kontekst wykonywania dla wykonywania kodu funkcji.
Ukończenie tego przewodnika Szybki start wiąże się z naliczeniem niewielkiej opłaty w wysokości kilku centów USD lub mniej na koncie platformy Azure.
Bicep to język specyficzny dla domeny (DSL), który używa składni deklaratywnej do wdrażania zasobów platformy Azure. Zapewnia zwięzłą składnię, niezawodne bezpieczeństwo typów i obsługę ponownego użycia kodu. Bicep oferuje najlepsze środowisko tworzenia rozwiązań infrastruktury jako kodu na platformie Azure.
Po utworzeniu aplikacji funkcji można wdrożyć kod projektu usługi Azure Functions w tej aplikacji.
Wymagania wstępne
Konto platformy Azure
Przed rozpoczęciem musisz mieć konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Przejrzyj plik Bicep
Plik Bicep używany w tym przewodniku Szybki start pochodzi z szablonów szybkiego startu platformy 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'
}
}
Następujące cztery zasoby platformy Azure są tworzone przez ten plik Bicep:
- Microsoft.Storage/storageAccounts: utwórz konto usługi Azure Storage, które jest wymagane przez usługę Functions.
- Microsoft.Web/serverfarms: utwórz bezserwerowy plan hostingu Zużycie dla aplikacji funkcji.
- Microsoft.Web/sites: utwórz aplikację funkcji.
- microsoft.insights/components: utwórz wystąpienie usługi Application Insights na potrzeby monitorowania.
Ważne
Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.
Wdrażanie pliku Bicep
Zapisz plik Bicep jako main.bicep na komputerze lokalnym.
Wdróż plik Bicep przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
Uwaga
Zastąp <lokalizację> aplikacji regionem usługi Application Insights, który jest zwykle taki sam jak grupa zasobów.
Po zakończeniu wdrażania powinien zostać wyświetlony komunikat informujący o pomyślnym wdrożeniu.
Weryfikowanie wdrożenia
Użyj interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby zweryfikować wdrożenie.
az resource list --resource-group exampleRG
Odwiedź stronę powitalną aplikacji funkcji
Użyj danych wyjściowych z poprzedniego kroku weryfikacji, aby pobrać unikatową nazwę utworzoną dla aplikacji funkcji.
Otwórz przeglądarkę i wprowadź następujący adres URL: <https://< appName.azurewebsites.net>. Pamiętaj, aby zastąpić <ciąg \appName> unikatową nazwą utworzoną dla aplikacji funkcji.
Podczas odwiedzania adresu URL powinna zostać wyświetlona strona podobna do następującej:
Czyszczenie zasobów
Jeśli przejdziesz do następnego kroku i dodasz powiązanie wyjściowe kolejki usługi Azure Storage, zachowaj wszystkie zasoby na miejscu, gdy będziesz opierać się na tym, co zostało już zrobione.
W przeciwnym razie, jeśli nie potrzebujesz już zasobów, użyj interfejsu wiersza polecenia platformy Azure, programu PowerShell lub witryny Azure Portal, aby usunąć grupę zasobów i jej zasoby.
az group delete --name exampleRG
Następne kroki
Po utworzeniu zasobów aplikacji funkcji na platformie Azure możesz wdrożyć kod w istniejącej aplikacji przy użyciu jednego z następujących narzędzi: