#access existing application insight
data "azurerm_application_insights" "dev"{
name = var.tf_var_app_insights_name
resource_group_name = var.tf_var_rg_name
}
#################step-1 function app creation
data "azurerm_service_plan" "dev" {
name = var.tf_var_app_service_plan
resource_group_name = var.tf_var_rg_name
}
data "azurerm_storage_account" "dev" {
name = var.tfvarstname
resource_group_name = var.tf_var_rg_name
}
#create function app
resource azurerm_windows_function_app "dev" {
name = var.tf_var_rg_functionapp
resource_group_name = var.tf_var_rg_name
storage_account_name = var.tfvarstname
storage_account_access_key = data.azurerm_storage_account.dev.primary_access_key
location = var.tf_var_rg_location
service_plan_id = data.azurerm_service_plan.dev.id
functions_extension_version =var.tf_var_function_extention_version
auth_settings {
enabled = true
active_directory {
client_id = var.tf_var_client_id
client_secret = var.tf_var_client_secret
#client_secret_setting_name = "MICROSOFT_PROVIDER_AUTHENTICATION_SECRET"
}
default_provider = var.tf_var_provider
issuer = var.tf_var_issuer
}
site_config{
application_stack {
dotnet_version = var.tf_var_dot_net_version
}
application_insights_key =data.azurerm_application_insights.dev.instrumentation_key
}
tags ={
environment = var.tf_var_tags_environment
application_name =var.tf_var_tags_application_name
function_name =var.tf_var_tags_function_name
}
}
data "azurerm_virtual_network" "dev" {
name = var.tf_var_virtual_network_name
resource_group_name = var.tf_var_rg_name
}
output "vnet_id" {
value = data.azurerm_virtual_network.dev.id
}
data "azurerm_subnet" "dev" {
name = var.tf_var_subnet_name
resource_group_name = var.tf_var_rg_name
virtual_network_name = data.azurerm_virtual_network.dev.name
}
output "subnet_id" {
value= data.azurerm_subnet.dev.id
}
resource "azurerm_app_service_virtual_network_swift_connection" "dev" {
app_service_id = data.azurerm_service_plan.dev.id
subnet_id = data.azurerm_subnet.dev.id
depends_on = [data.azurerm_subnet.dev, azurerm_windows_function_app.dev]
lifecycle {
ignore_changes = [
subnet_id,
]
}
}
The error message is below .I am trying to create a function app using existing resources. All the other parts are working. I just need a little support on virtual network integration. If anyone can support that will be great.
I tried to add
depends_on = [data.azurerm_subnet.dev, azurerm_windows_function_app.dev]
lifecycle {
ignore_changes = [
subnet_id,
]
but it did not work anywhere. I need a little support on what am I missing ?
2
Answers
By giving Credit to Vinay B, the answer is to add function app id instead of app service plan id
You are attempting to create an Azure Function App with a Virtual Network (VNet) integration using existing resources, according to the configuration you shared. The error message "ID was missing the ‘sites’ element" indicates that the ID of the App Service (or Function App) is not referenced correctly.
You need to specify an
app_service_id
for the Terraform resourceazurerm_app_service_virtual_network_swift_connection
. This ID should refer to either an Azure Function App or an App Service. However, you have given the ID of a service plan in your code, which is incorrect:You need to use the ID of the
azurerm_windows_function_app
resource that you created earlier, not the service plan. The service plan ID is missing the ‘sites’ element, which is required for an App Service or Function App ID.**My terraform configuration: **
Output:
&