ARM Template API Management Развертывание PolicyContent
Я пытаюсь использовать шаблоны ARM для развертывания моей службы управления API и заставить все работать, кроме policyContent. По сути, он хочет использовать policyContent как "Json избежал Xml Encoded содержимого Политики". Это очень сложно поддерживать, и я пытался найти способ взять файл XML и вставить содержимое в эту строку, или каким-то другим способом. Я бы не хотел писать программу для поддержки этих строк, потому что это похоже на то, что не должно быть таким сложным.
{
"name": "policy",
"type": "Microsoft.ApiManagement/service/apis/policies",
"apiVersion": "2017-03-01",
"properties": {
"policyContent": "string"
}
}
2 ответа
Вы можете сохранить ваши политики в файле XML и ссылаться на него следующим образом:
{
"apiVersion": "2018-01-01",
"name": "policy",
"type": "Microsoft.ApiManagement/service/policies",
"properties": {
"policyContent": "[concat(parameters('repoBaseUrl'), '/policy.xml')]",
"contentFormat": "rawxml-link"
},
"dependsOn": [
"[resourceId('Microsoft.ApiManagement/service/', parameters('ApimServiceName'))]"
]
}
Ваш policy.xml
Файл должен быть доступен онлайн и будет выглядеть так:
<policies>
<inbound>
<rate-limit calls="3" renewal-period="10" />
<base />
</inbound>
<outbound>
<base />
</outbound>
<backend>
<base />
</backend>
<on-error>
<base />
</on-error>
</policies>
Ну, единственное, о чем я могу подумать (потому что ничто из родного в шаблонах arm не поможет вам), это прочитать входные данные из файла и преобразовать их в JSON:
$xml = (Get-Content file -Raw).ToString()
($xml | ConvertTo-Json -Compress) -replace '\\u003c','<' ) -replace '\\u003e','>'
Это может работать без замены этих юникодов обратно на <>
, без понятия.