如何使用Azure CLI提取API管理(APIM)托管自定义域名所需的验证ID
如何使用Azure CLI提取API管理(APIM)托管自定义域名所需的验证ID
嗨,我之前也碰到过这个问题,APIM的自定义域名验证ID逻辑和容器应用、Web App确实不一样——它不是一个全局的顶级属性,而是和每个自定义域名绑定的,所以你之前用的查询路径自然拿不到值。
下面分两种场景给你对应的解决方案:
场景1:已经给APIM添加了自定义域名,想要提取现有域名的验证ID
如果你的APIM实例已经配置了自定义域名,可以通过查询properties.customDomains数组里对应域名的verificationId字段来获取:
# 替换成你的APIM名称、资源组和目标自定义域名 $APIM_NAME = "your-apim-name" $APIM_RESOURCE_GROUP = "your-resource-group" $CUSTOM_DOMAIN = "api.yourdomain.com" # 提取目标域名的验证ID $APIM_VERIFICATION_ID = az apim show --name $APIM_NAME --resource-group $APIM_RESOURCE_GROUP ` --query "properties.customDomains[?name=='$CUSTOM_DOMAIN'].verificationId" ` --output tsv
这条命令的逻辑是:先获取APIM的完整配置,然后过滤出名称匹配目标自定义域名的条目,最后提取它的验证ID。
场景2:还未添加域名,想要预先获取验证ID来配置DNS记录
如果你还没给APIM添加自定义域名,需要先拿到验证ID去配置DNS的TXT记录,这时候可以用az apim domain create命令加上--dry-run参数——这个参数会模拟域名添加流程,返回验证ID但不会实际在APIM中创建域名:
如果你使用自己上传的证书:
$APIM_NAME = "your-apim-name" $APIM_RESOURCE_GROUP = "your-resource-group" $CUSTOM_DOMAIN = "api.yourdomain.com" $CERT_PATH = "path/to/your/certificate.pfx" $CERT_PWD = "your-certificate-password" # 模拟创建域名,获取验证ID $APIM_VERIFICATION_ID = az apim domain create --name $APIM_NAME --resource-group $APIM_RESOURCE_GROUP ` --domain-name $CUSTOM_DOMAIN ` --certificate-path $CERT_PATH ` --certificate-password $CERT_PWD ` --dry-run ` --query "customDomainVerificationId" ` --output tsv
如果你使用Azure托管证书(无需自己上传证书):
$APIM_NAME = "your-apim-name" $APIM_RESOURCE_GROUP = "your-resource-group" $CUSTOM_DOMAIN = "api.yourdomain.com" # 模拟创建托管证书域名,获取验证ID $APIM_VERIFICATION_ID = az apim domain create --name $APIM_NAME --resource-group $APIM_RESOURCE_GROUP ` --domain-name $CUSTOM_DOMAIN ` --managed-certificate ` --dry-run ` --query "customDomainVerificationId" ` --output tsv
拿到验证ID后,你就可以在域名服务商那边创建对应的TXT记录,完成验证后再去掉--dry-run参数执行az apim domain create,就能正式添加自定义域名了。
备注:内容来源于stack exchange,提问作者jobatthemall
相关产品推荐
相关产品推荐

