Hi !
In my previous post I wrote about how (Thanks to Sam), I’m on the path to learn Azure Bicep 🦾. I’m also share how I’m using Bicep to create my demo environments for for JulyOT!
https://julyot.dev/
I shared a full Bicep file that, using an existing Resource Group:
- Create an Azure IoT Hub
- Create a Storage Account
- Create a Function App
- Create an App Service Plan
- Create an Application Insights
This is the output view of the elements created on the Resource Group.

After this post, I had several questions around creating just an Azure Function, so let’s review a new Bicep file. With this remats
- Project name it limited to a length of 1-11.
- The Azure Function will be created on the same location of the Resource Group (line 32).
- The runtime will be “python”, we can remove the lines 35 and 36, I leave them just for reference.
- The hosting plan is defined in line 60, you may change it to fit your needs.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright (c) 2022 | |
// Author : Bruno Capuano | |
// Create Time : 2022 July | |
// Change Log : | |
// | |
// The MIT License (MIT) | |
// | |
// Permission is hereby granted, free of charge, to any person obtaining a copy | |
// of this software and associated documentation files (the "Software"), to deal | |
// in the Software without restriction, including without limitation the rights | |
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
// copies of the Software, and to permit persons to whom the Software is | |
// furnished to do so, subject to the following conditions: | |
// | |
// The above copyright notice and this permission notice shall be included in | |
// all copies or substantial portions of the Software. | |
// | |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
// THE SOFTWARE. | |
@description('Define the project name or prefix for all objects.') | |
@minLength(1) | |
@maxLength(11) | |
param demoName string = 'elbruno' | |
@description('The datacenter to use for the deployment.') | |
param location string = resourceGroup().location | |
// Azure Function configuration | |
@description('The language worker runtime to load in the function app.') | |
@allowed([ | |
'node' | |
'dotnet' | |
'java' | |
'python' | |
]) | |
param runtime string = 'python' | |
var functionAppName = demoName | |
var hostingPlanName = demoName | |
var functionWorkerRuntime = runtime | |
// Azure Function Creation | |
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: 'WEBSITE_CONTENTSHARE' | |
value: toLower(functionAppName) | |
} | |
{ | |
name: 'FUNCTIONS_EXTENSION_VERSION' | |
value: '~2' | |
} | |
{ | |
name: 'WEBSITE_NODE_DEFAULT_VERSION' | |
value: '~10' | |
} | |
{ | |
name: 'FUNCTIONS_WORKER_RUNTIME' | |
value: functionWorkerRuntime | |
} | |
] | |
ftpsState: 'FtpsOnly' | |
minTlsVersion: '1.2' | |
} | |
httpsOnly: true | |
} | |
} |
I hope this helps !
Happy coding!
Greetings
El Bruno
More posts in my blog ElBruno.com.
More info in https://beacons.ai/elbruno
Advertisement