如何使用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
相关产品推荐
相关产品推荐

