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.