You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Bicep模板为Azure Function App添加自定义域名

Azure Function App 自定义域名配置及Bicep实现方案

一、手动配置自定义域名步骤

  • 在域名注册商处添加DNS记录:
    • 子域名(如api.example.com)添加CNAME记录,指向你的Function App默认域名(格式:{function-app-name}.azurewebsites.net)
    • 根域名(如example.com)需添加A记录指向Function App的IP地址,同时添加TXT记录完成所有权验证
  • 登录Azure门户,进入目标Function App,选择左侧菜单的「自定义域名」
  • 点击「添加自定义域名」,输入你的域名,完成所有权验证流程
  • (可选)配置SSL证书,启用HTTPS访问,确保域名通信安全

二、通过Bicep模板自动配置自定义域名

可以直接在Bicep中添加hostnameBindings资源实现自定义域名绑定,还可将域名设为参数提升配置灵活性。以下是修改后的完整Bicep模板:

param name string = 'Hamid'
param location string = 'UK South'
// 新增自定义域名参数,方便按需修改
param customDomain string = 'api.example.com'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = {
  name: name
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: '${name}application-insights'
  location: location
  kind: 'web'
  properties: {
    Application_Type: 'web'
    Request_Source: 'rest'
  }
}

resource hostingPlan 'Microsoft.Web/serverfarms@2021-03-01' = {
  name: name
  location: location
  kind: 'Linux'
  sku: {
    name: 'Y1'
    tier: 'Dynamic'
  }
  properties: {
    reserved: true
  }
}

resource functionApp 'Microsoft.Web/sites@2021-03-01' = {
  name: name
  location: location
  kind: 'functionapp'
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    serverFarmId: hostingPlan.id
    siteConfig: {
      pythonVersion: '3.9'
      linuxFxVersion: 'python|3.9'
      appSettings: [
        {
          name: 'AzureWebJobsStorage'
          value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
        }
        {
          name: 'SCM_DO_BUILD_DURING_DEPLOYMENT' 
          value: 'true'
        }
        {
          name: 'ENABLE_ORYX_BUILD'  
          value: 'true'
        }
        {
          name: 'FUNCTIONS_EXTENSION_VERSION'
          value: '~4'
        }
        {
          name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
          value: applicationInsights.properties.InstrumentationKey
        }
        {
          name: 'FUNCTIONS_WORKER_RUNTIME'
          value: 'python'
        }
      ]
    }
    httpsOnly: true
  }
}

// 添加自定义域名绑定资源
resource functionAppHostnameBinding 'Microsoft.Web/sites/hostNameBindings@2021-03-01' = {
  parent: functionApp
  name: customDomain
  properties: {
    hostNameType: 'Verified'
    // 若绑定根域名,需取消以下注释并配置对应参数
    // customHostNameDnsRecordType: 'A'
    // azureResourceName: functionApp.name
  }
}

关键注意事项

  • 部署Bicep前,必须先在域名服务商处完成DNS记录配置,否则Azure无法通过域名所有权验证
  • 绑定根域名时,需确保Function App已启用静态IP(动态SKU可能需要升级至支持静态IP的层级),并在hostnameBindings中指定customHostNameDnsRecordType: 'A'
  • SSL证书可通过添加Microsoft.Web/sites/hostnameBindings/sslCertificates资源实现自动配置,也可部署后在Azure门户手动上传配置

内容的提问来源于stack exchange,提问作者user14736700

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:57:29