已删除的Azure Function App如何移除其主机名?
这种情况我之前踩过坑!Terraform销毁Function App时偶尔会因为依赖顺序或者API延迟,漏掉主机名的解绑操作,导致主机名被“锁定”没法复用。下面几个步骤帮你彻底清理残留的主机名绑定:
1. 定位残留的主机名绑定记录
首先用Web App的CLI命令查询所有主机名绑定(因为Function App本质属于Web App资源类型),替换<your-hostname>为你的目标主机名:
az webapp hostname list --query "[?name=='<your-hostname>']" --output json
如果返回结果里有这条主机名的记录,你能看到它关联的resourceGroup、siteName(就是已被删除的Function App名称)等信息。
2. 直接删除主机名绑定资源
因为原Function App已经不存在,用az functionapp config hostname delete会报错,这时候可以用az resource delete直接删除对应的绑定资源。需要用到步骤1里查到的resourceGroup、siteName,以及主机名:
az resource delete --resource-group <your-resource-group> --resource-type Microsoft.Web/sites/hostNameBindings --name "<site-name>/<your-hostname>"
举个例子:如果你的Function App叫my-func-app,主机名是my-func-app.azurewebsites.net,命令就是:
az resource delete --resource-group my-rg --resource-type Microsoft.Web/sites/hostNameBindings --name "my-func-app/my-func-app.azurewebsites.net"
3. 检查DNS记录(如果是自定义域名)
如果是自定义域名(不是Azure默认的.azurewebsites.net),还要检查你的DNS提供商那边的A/CNAME记录是否还指向已删除的Function App。如果是的话,先删除这些DNS记录,再等待几分钟让Azure的域名系统同步,之后就能重新绑定了。
4. 强制刷新Azure资源状态(可选)
如果上面的命令执行后还是提示主机名被占用,可以尝试清除Azure CLI的本地缓存,或者重新查询资源状态确认残留记录已删除:
az cache purge --resource-type Microsoft.Web/sites/hostNameBindings
一般执行完步骤2之后,等个5-10分钟,Azure后台就会释放这个主机名,你就能重新用它创建新的Function App了。
内容的提问来源于stack exchange,提问作者Khoi

