Démarrage rapide : Créer et déployer des ressources Azure Functions à l’aide de Bicep
Dans cet article, vous utilisez Azure Functions avec Bicep pour créer une application de fonction et des ressources associées dans Azure. L’application de fonction fournit un contexte d’exécution pour vos exécutions de code de fonction.
Le fait de suivre ce guide de démarrage rapide entraîne une faible dépense de quelques cents USD tout au plus dans votre compte Azure.
Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Il fournit une syntaxe concise, une cohérence des types fiable et une prise en charge de la réutilisation du code. Bicep offre la meilleure expérience de création pour vos solutions d’infrastructure en tant que code dans Azure.
Après avoir créé l’application de fonction, vous pouvez déployer le code de projet Azure Functions sur cette application.
Prérequis
Compte Azure
Avant de commencer, vous devez disposer d’un compte Azure doté d’un abonnement actif. Créez un compte gratuitement.
Examiner le fichier Bicep
Le fichier Bicep utilisé dans ce guide de démarrage rapide est tiré des modèles de démarrage rapide 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'
}
}
Les quatre ressources Azure suivantes sont créées par ce fichier Bicep :
- Microsoft.Storage/storageAccounts : création d’un compte de stockage Azure, exigé par Functions.
- Microsoft.Web/serverfarms : création d’un plan d’hébergement Consommation serverless pour l’application de fonction.
- Microsoft.Web/sites : création d’une application de fonction.
- Microsoft.Insights/Components : création d’une instance Application Insights à des fins de supervision.
Important
Le compte de stockage permet de stocker les données importantes de l’application, dont parfois le code proprement dit de l’application. Vous devez limiter l’accès des autres applications et utilisateurs au compte de stockage.
Déployer le fichier Bicep
Enregistrez le fichier Bicep en tant que main.bicep sur votre ordinateur local.
Déployez le fichier Bicep à l’aide d’Azure CLI ou d’Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
Notes
Remplacez <app-location> par la région d’Application Insights, qui est généralement la même que celle du groupe de ressources.
Une fois le déploiement terminé, un message doit s’afficher pour indiquer que le déploiement a réussi.
Valider le déploiement
Utilisez Azure CLI ou Azure PowerShell pour valider le déploiement.
az resource list --resource-group exampleRG
Accéder à la page d’accueil de l’application de fonction
Utilisez la sortie de l’étape de validation précédente pour récupérer le nom unique créé pour votre application de fonction.
Ouvrez un navigateur et entrez l’URL suivante : <https://<appName.azurewebsites.net>. Veillez à remplacer <\appName> par le nom unique créé pour votre application de fonction.
Lorsque vous accédez à l’URL, vous devez voir une page comme celle-ci :
Nettoyer les ressources
Si vous passez à l’étape suivante, qui consiste à ajouter une liaison de sortie de file d’attente Stockage Azure, gardez toutes vos ressources en place, car vous allez tirer parti de ce que vous avez déjà fait.
Sinon, si vous n’avez plus besoin des ressources, utilisez Azure CLI, PowerShell ou le portail Azure pour supprimer le groupe de ressources et ses ressources.
az group delete --name exampleRG
Étapes suivantes
Maintenant que vous avez créé vos ressources d’application de fonction dans Azure, vous pouvez déployer votre code sur l’application existante à l’aide de l’un des outils suivants :