This goes into the “notes for Scott” category, where I post things to my blog for me. I hope this is somewhat useful for you too!
I’m in the process of writing Terraform automation for an Azure Functions application I’ve built. When the deployment completed and I went to the Azure Functions application in the Azure portal (https://portal.azure.com), I got a message stating that Application Insights wasn’t connected to the Functions App:
Application Insights is not configured. Configure Application Insights to capture function logs.
The fix isn’t well documented, yet. After deploying a functions app via the portal, I found the link and it’s pretty simple: Azure Functions uses an app setting named APPINSIGHTS_INSTRUMENTATIONKEY. Just add that with the right value and things work.
To put it all together, you will deploy an app service plan, Application Insights, and an Azure Function App:
resource "azurerm_app_service_plan" "app_service_plan" {
name = "${var.base_name}appserv"
location = "${azurerm_resource_group.rg.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
kind = "Linux"
reserved = true
sku {
tier = "Basic"
size = "B1"
}
}
resource "azurerm_application_insights" "ai" {
name = "${var.base_name}ai"
location = "${azurerm_resource_group.rg.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
application_type = "web"
}
resource "azurerm_function_app" "apis" {
name = "${var.base_name}func"
location = "${azurerm_resource_group.rg.location}"
resource_group_name = "${azurerm_resource_group.rg.name}"
app_service_plan_id = "${azurerm_app_service_plan.app_service_plan.id}"
storage_connection_string = "${azurerm_storage_account.az_backend.primary_connection_string}"
https_only = true
version = "~2"
app_settings = {
APPINSIGHTS_INSTRUMENTATIONKEY = "${azurerm_application_insights.ai.instrumentation_key}"
}
site_config {
cors {
allowed_origins = ["https://www.${var.domain_name}"]
}
}
}
Upon running this, the error message went away and Azure Functions showed I had connected everything correctly.