Получение XML политики области действия API

В 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 как:

/subscriptions/[mysub visible/resourceGroups/[mygroup visible/providers/Microsoft.ApiManagement/service/MyAPIMS/apis/MyWebAPI

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

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

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

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


person Andy    schedule 29.10.2019    source источник


Ответы (1)


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

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

person Architect Jamie    schedule 30.10.2019
comment
Ах хорошо. ApiId вместо Id работал ... спасибо !! - person Andy; 30.10.2019