【问题标题】:Getting API-Scope Policy XML获取 API 范围策略 XML
【发布时间】:2019-10-29 22:09:33
【问题描述】:

在 MS Azure 中,我设置了一个 API 管理服务 - 我们称之为“MyAPIMS”。在其中,我添加了一个 Web 应用程序作为 API - 我们称之为“MyWebAPI”。在这个 API 中,我在入站处理部分添加了一个“set-header”策略。所以现在如果我进入该 API 的入站处理策略 xml,它看起来像这样:

<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 的 ID 显示为:

/subscriptions/[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 的策略是什么意思。

【问题讨论】:

    标签: azure azure-api-management azure-api-apps api-management


    【解决方案1】:

    问题是您将$MyApi.Id 传递给Get-AzApiManagementPolicy。您应该传递 $MyApi.ApiId,它将转换为您的 API 名称。

    Id 属性是 ARM 资源 ID,而 cmdlet 需要 API 名称。

    【讨论】:

    • 啊,好的。 “ApiId”而不是“Id”工作......谢谢!
    猜你喜欢
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多