如何使用bicep同时部署应用服务+证书+主机绑定



我在使用以下代码部署带有证书的hostNameBinding时遇到问题:

param appserviceplanId string
param location string
param appservicename string
param domain string
resource appservice 'Microsoft.Web/sites@2020-12-01' = {
name: appservicename
location: location
properties: {
serverFarmId: appserviceplanId
enabled: true
httpsOnly: true
siteConfig: {
use32BitWorkerProcess: false
webSocketsEnabled: true
alwaysOn: true
http20Enabled: true
autoHealEnabled: true
netFrameworkVersion: 'v5.0'
}
clientAffinityEnabled: false
}
}
resource certificate 'Microsoft.Web/certificates@2021-01-01' = {
name: '${domain}-certificate'
location: location
properties: {
canonicalName: domain
serverFarmId: appserviceplanId
domainValidationMethod: 'http-token'
}
}
resource hostbinding 'Microsoft.Web/sites/hostNameBindings@2021-01-01' = {
parent: appservice
name: domain
properties: {
siteName: appservicename
customHostNameDnsRecordType: 'CName'
hostNameType: 'Verified'
sslState: 'SniEnabled'
thumbprint: certificate.properties.thumbprint
}
}

只有当我通过注释掉证书来分步骤部署它时,它才有效:

param appserviceplanId string
param location string
param appservicename string
param domain string
resource appservice 'Microsoft.Web/sites@2020-12-01' = {
name: appservicename
location: location
properties: {
serverFarmId: appserviceplanId
customDomainVerificationId: 'DNS Record verification'
enabled: true
httpsOnly: true
siteConfig: {
use32BitWorkerProcess: false
webSocketsEnabled: true
alwaysOn: true
http20Enabled: true
autoHealEnabled: true
netFrameworkVersion: 'v5.0'
}
clientAffinityEnabled: false
}
}
// resource certificate 'Microsoft.Web/certificates@2021-01-01' = {
//   name: '${domain}-certificate'
//   location: location
//   properties: {
//     canonicalName: domain
//     serverFarmId: appserviceplanId
//     domainValidationMethod: 'http-token'
//   }
// }
resource hostbinding 'Microsoft.Web/sites/hostNameBindings@2021-01-01' = {
parent: appservice
name: domain
properties: {
siteName: appservicename
customHostNameDnsRecordType: 'CName'
hostNameType: 'Verified'
// sslState: 'SniEnabled'
// thumbprint: certificate.properties.thumbprint
}
}

在这之后,我可以运行整个事情,因为主机绑定存在。

我怎样才能一次搞定?

因此,没有证书就不能进行主机绑定,没有主机绑定就不能进行证书,循环di循环。

如果我在证书资源之前指定HostBinding,然后在具有属性的证书之后再次指定,我会得到"HostName指定了多次"。

您需要使用模块。

功能应用程序的示例如下:https://github.com/Azure/bicep/tree/main/src/Bicep.Core.Samples/Files/user_submitted/301/function-app-with-custom-domain-managed-certificate

(永久链路(

最新更新