Получение XML-политики API-области - PullRequest
0 голосов
/ 30 октября 2019

В MS Azure я настроил службу управления API - назовем ее «MyAPIMS». В рамках этого я добавил веб-приложение в качестве API - назовем это «MyWebAPI». В этом API я добавил политику «set-header» в разделе «Входящая обработка». Так что теперь, если я перейду к XML-политике обработки входящего API, это выглядит так:

<inbound>
    <base />
    <set-backend-service id="apim-generated-policy" backend-id="Web-App" />
    <set-header name="Referred-From" exists-action="append">
        <value>Me</value>
    </set-header>
</inbound>

Мне нужно выяснить, как добавить эту политику с помощью сценария powershell. Поэтому я решил попробовать напрямую использовать команды powershell, чтобы получить эту политику, которую я настроил вручную, и увидеть результат. Во-первых, я получаю контекст:

$apimContext = New-AzApiManagementContext -ResourceGroupName "MyGroup" -ServiceName "myAPIMS"

Если я выведу "$ apimContext", он отображает имя группы ресурсов и имя службы просто отлично. Итак, я получаю API:

$MyApi = Get-AzApiManagementApi -Context $apimContext -Name "MyWebAPI"

При этом, если я выведу «$ MyApi.Id», он отображает идентификатор MyWebAPI в виде:

/ subscription / [mysub] / resourceGroups / [mygroup] /providers/Microsoft.ApiManagement/service/MyAPIMS/apis/MyWebAPI

Но тогда, если я пытаюсь получить политику API, он ничего не делает. Вот что я попробовал:

Get-AzApiManagementPolicy -Context $apimContext -ApiId $MyApi.Id -SaveAs "C:\Source\MyApiPolicy.xml"

Нет нового файла в этом месте. Если я не укажу -SaveAs, он не будет отображать вывод в терминале.

Это работает, если я не укажу -ApiId (например, я могу просто сохранить политику области действия арендатора),Так что я не понимаю, что такое получение политики для конкретного API, который ему не нравится.

1 Ответ

0 голосов
/ 30 октября 2019

Проблема в том, что вы передаете $MyApi.Id в Get-AzApiManagementPolicy. Вы должны передать $MyApi.ApiId, что будет означать имя вашего API.

Свойство Id - это идентификатор ресурса ARM, тогда как командлет ожидает имя API.

...