infrastructure/terraform/shortclip.tf (89 lines of code) (raw):

module "storage_account_shortclip" { source = "./modules/storageaccount" location = local.location resource_group_name = azurerm_resource_group.shortclip.name tags = var.tags storage_account_name = local.storage_account_name_shortclip storage_account_container_names = [] storage_account_share_names = [ local.function_name_shortclip ] storage_account_shared_access_key_enabled = true storage_account_hns_enabled = false log_analytics_workspace_id = module.azure_log_analytics.log_analytics_id subnet_id = var.subnet_id customer_managed_key = null } module "key_vault_shortclip" { source = "./modules/keyvault" location = local.location resource_group_name = azurerm_resource_group.shortclip.name tags = var.tags key_vault_name = local.key_vault_name_shortclip key_vault_sku_name = "premium" key_vault_keys = {} log_analytics_workspace_id = module.azure_log_analytics.log_analytics_id subnet_id = var.subnet_id } module "user_assigned_identity_shortclip" { source = "./modules/managedidentity" location = local.location resource_group_name = azurerm_resource_group.shortclip.name tags = var.tags user_assigned_identity_name = local.user_assigned_identity_name_shortclip } module "function_shortclip" { source = "./modules/function" location = local.location resource_group_name = azurerm_resource_group.shortclip.name tags = var.tags function_name = local.function_name_shortclip function_application_settings = { # Function config settings BUILD_FLAGS = "UseExpressBuild" SCM_DO_BUILD_DURING_DEPLOYMENT = "true" FUNCTIONS_WORKER_RUNTIME = "python" AzureWebJobsFeatureFlags = "EnableWorkerIndexing" TaskHubName = "shortclip" FUNCTIONS_WORKER_PROCESS_COUNT = local.function_sku_cpu_count[var.function_sku] # App specific settings STORAGE_DOMAIN_NAME = replace(trimprefix(module.storage_account.storage_account_primary_blob_endpoint, "https://"), "/", "") STORAGE_CONTAINER_NAME = local.container_name_shortclip AZURE_OPEN_AI_API_VERSION = local.default_model_api_version AZURE_OPEN_AI_DEPLOYMENT_NAME = local.default_model_name AZURE_OPEN_AI_BASE_URL = module.open_ai.cognitive_account_endpoint NEWSTAGEXTRACTION_SYSTEM_PROMPT = data.local_file.file_newstagextraction_system_prompt.content NEWSTAGEXTRACTION_USER_PROMPT = data.local_file.file_newstagextraction_user_prompt.content } function_always_on = false function_code_path = "${path.module}/modules/functions/rag-video-tagging/code/durablefunction" function_storage_account_id = module.storage_account_shortclip.storage_account_id function_share_name = local.function_name_shortclip function_key_vault_id = module.key_vault_shortclip.key_vault_id function_user_assigned_identity_id = module.user_assigned_identity_shortclip.user_assigned_identity_id function_sku = var.function_sku function_application_insights_instrumentation_key = module.application_insights.application_insights_instrumentation_key function_application_insights_connection_string = module.application_insights.application_insights_connection_string log_analytics_workspace_id = module.azure_log_analytics.log_analytics_id subnet_id = var.subnet_id customer_managed_key = null } # UAI role assignments resource "azurerm_role_assignment" "uai_shortclip_role_assignment_key_vault_secrets_user" { description = "Role Assignment for uai to read secrets" scope = module.key_vault_shortclip.key_vault_id role_definition_name = "Key Vault Secrets User" principal_id = module.user_assigned_identity_shortclip.user_assigned_identity_principal_id principal_type = "ServicePrincipal" } # Function role assignment resource "azurerm_role_assignment" "function_shortclip_role_assignment_storage_blob_data_contributor" { description = "Role Assignment for Data Factory to interact with Open AI models" scope = module.storage_account.storage_account_id role_definition_name = "Storage Blob Data Contributor" principal_id = module.function_shortclip.linux_function_app_principal_id principal_type = "ServicePrincipal" } resource "azurerm_role_assignment" "function_shortclip_role_assignment_cognitive_services_openai_user" { description = "Role Assignment for Function to interact with Azure Open AI" scope = module.open_ai.cognitive_account_id role_definition_name = "Cognitive Services OpenAI User" principal_id = module.function_shortclip.linux_function_app_principal_id principal_type = "ServicePrincipal" }