获取 API-范围策略 XML
Getting API-Scope Policy XML
在 MS Azure 中,我设置了一个 API 管理服务 - 让我们称之为 "MyAPIMS"。在其中,我添加了一个网络应用程序作为 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 获取政策是什么意思。
问题是您将 $MyApi.Id
传递给 Get-AzApiManagementPolicy
。您应该传递 $MyApi.ApiId
,这将转换为您的 API.
的名称
Id 属性 是 ARM 资源 ID,而 cmdlet 需要 API 名称。
在 MS Azure 中,我设置了一个 API 管理服务 - 让我们称之为 "MyAPIMS"。在其中,我添加了一个网络应用程序作为 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 获取政策是什么意思。
问题是您将 $MyApi.Id
传递给 Get-AzApiManagementPolicy
。您应该传递 $MyApi.ApiId
,这将转换为您的 API.
Id 属性 是 ARM 资源 ID,而 cmdlet 需要 API 名称。