deployer/terraform/sap_bgprint/functionapp.tf (73 lines of code) (raw):

# DO NOT MODIFY THESE RESOURCES # Import the existing app service plan resource "azurerm_service_plan" "app_service_plan" { name = format("%s-%s-appserviceplan", lower(var.environment), lower(var.location)) location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name sku_name = "EP1" os_type = "Linux" maximum_elastic_worker_count = 5 } resource "azurerm_application_insights" "app_insights" { name = format("%s-%s-appinsights", lower(var.environment), lower(var.location)) count = var.enable_logging_on_function_app ? 1 : 0 location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name application_type = "web" retention_in_days = 90 } # Import the existing function app resource "azurerm_linux_function_app" "function_app" { name = format("%s-%s-functionapp", lower(var.environment), lower(var.location)) location = azurerm_resource_group.rg.location resource_group_name = azurerm_resource_group.rg.name service_plan_id = azurerm_service_plan.app_service_plan.id storage_account_name = azurerm_storage_account.storage_account.name storage_account_access_key = azurerm_storage_account.storage_account.primary_access_key functions_extension_version = "~4" client_certificate_mode = "Required" virtual_network_subnet_id = azurerm_subnet.subnet.id identity { type = "UserAssigned" identity_ids = [azurerm_user_assigned_identity.msi.id] } site_config { container_registry_use_managed_identity = true container_registry_managed_identity_client_id = azurerm_user_assigned_identity.msi.client_id ftps_state = "FtpsOnly" vnet_route_all_enabled = true elastic_instance_minimum = 1 cors { allowed_origins = ["https://portal.azure.com"] support_credentials = false } application_stack { docker { image_name = var.container_image_name image_tag = "latest" registry_url = format("https://%s", var.container_registry_url) } } } app_settings = { "APPINSIGHTS_INSTRUMENTATIONKEY" = var.enable_logging_on_function_app ? "${azurerm_application_insights.app_insights[0].instrumentation_key}" : "" "AzureWebJobsStorage" = azurerm_storage_account.storage_account.primary_connection_string "AzureWebJobsDashboard" = azurerm_storage_account.storage_account.primary_connection_string "WEBSITE_LOGGING_LOG_LEVEL" = "Information" "AzureFunctionsJobHost__Logging__Console__IsEnabled" = "true" "AzureFunctionsJobHost__Logging__Console__LogLevel__Default" = "Information" "FUNCTIONS_WORKER_RUNTIME" = "python" "FUNCTIONS_EXTENSION_VERSION" = "~4" "WEBSITES_ENABLE_APP_SERVICE_STORAGE" = false "DOCKER_REGISTRY_SERVER_URL" = format("https://%s", var.container_registry_url) "DOCKER_CUSTOM_IMAGE_NAME" = "bgprinting:latest" "DOCKER_REGISTRY_SERVER_USERNAME" = null "DOCKER_REGISTRY_SERVER_PASSWORD" = null "WEBSITE_NODE_DEFAULT_VERSION" = "14" "MSI_CLIENT_ID" = azurerm_user_assigned_identity.msi.client_id "AZURE_TENANT_ID" = azurerm_user_assigned_identity.msi.tenant_id "STORAGE_ACCESS_KEY" = azurerm_storage_account.storage_account.primary_connection_string "STORAGE_QUEUE_NAME" = azurerm_storage_queue.queue.name "STORAGE_CONTAINER_NAME" = azurerm_storage_container.container.name "LOGIC_APP_URL" = azurerm_logic_app_trigger_http_request.logic_app_trigger.callback_url "KEY_VAULT_NAME" = azurerm_key_vault.kv.name "STORAGE_TABLE_NAME" = azurerm_storage_table.table.name } }