我们正在使用Azure API管理和Powershell通过脚本在门户上导入配置,但是,每当导入API时,都会启用来自门户的“需要订阅”检查(“ API必需订阅密钥”)。到目前为止,我们尚未在API上使用订阅功能,因此导入时需要禁用此功能。我们将Import-AzApiManagementApi
和Set-AzApiManagementApi
用于以下代码:
Set-AzApiManagementApi -ApiId $apiId -Context $context -Protocols @('https') -ServiceUrl $serviceBase$path -Name $api.Name
Set-AzApiManagementPolicy -Context $context -ApiId $apiId -PolicyFilePath "$pwd/src/private/security_policy.xml"
在documentation中,如果没有进行此检查,就找不到导入API的方法。是否有任何脚本可以通过Powershell禁用此功能?
答案 0 :(得分:1)
对此的快速补充。下面的 Powershell 命令会将 API 的 Subscription Required 属性设置为 false。不过有一句警告:这目前不适用于 Azure DevOps 管道。管道将声明任务成功运行,如果您在管道中运行 $api 的回显,它将显示该 api 具有 SubscriptionRequired : False。但是,如果你去检查 Azure 中的 api,它仍然会设置为 True(默认行为)。
# get context
$apimContext = New-AzApiManagementContext -ResourceGroupName "targetResourceGroup" -ServiceName "targetApimInstance"
$api = Get-AzApiManagementApi -Context $apimContext -Name "Name of Api"
# set subscriptionRequired to false
$api.SubscriptionRequired=$false
答案 1 :(得分:0)
您可以使用Arm模块命令Set-AzureRmApiManagementProduct或Az模块命令Set-AzApiManagementProduct禁用所需的订阅选项
检查以下文件
答案 2 :(得分:0)
我无法按照 https://stackoverflow.com/a/56095090/240586 的建议使用 Set-AzApiManagementApi 在导入的 API 上将 SubscriptionRequired 更改为 false。由于 SubscriptionRequired 是一个开关参数,我无法将其指定为 false。
不过,https://stackoverflow.com/a/66675277/240586 的变体是有效的。 @RomericRobo 的回答缺少保存更改的最终 Set-AzApiManagementApi 命令(抱歉,我无法编辑或评论他的回答)。我完整的工作解决方案是:
.auth-page {
padding-top: 10vh;
height: 100vh;
background-image: url(../assets/img/full-screen-image-5.jpg);
background-color: #cccccc;
}