Azure APIM 备份引发错误"参数无效:"此请求无权执行此操作。参数名称:备份容器名称"



我正在使用Azure自动化运行手册,使用"用户分配的管理身份"在同一区域上备份APIM。已分配角色"存储账户贡献者"分配给用户的受管身份。APIM控制面板IP地址也被列入白名单,即"20.44.72.3";对我们来说是2。做所有这些,我仍然得到错误作为

Body:
{
"error": {
"code": "InvalidParameters",
"message": "Invalid parameter: This request is not authorized to perform this operation.rnParameter name: backupContainerName (value: [apimbackup])",
"details": null,
"innerError": null
}
}

PowerShel脚本:

$AzureContext = (Connect-AzAccount -Identity -AccountId XXXX-e9f9-XXXX-ad22-95f821a2c9bc).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName "rg-nau2d-XXXX-01" -StorageAccountName "stornau2dXXXXXX")[0].Value
$storageContext = New-AzStorageContext -StorageAccountName "stornau2dXXXXXX" -StorageAccountKey $storageKey
$storageKey
$StorageContext
$resourceGroupName="rg-nau2d-XXXX-01";
$apiManagementName="apim-01";
$containerName="apimbackup";
$backupName= $apiManagementName +"blob1";
$clientId = "XXXX-e9f9-XXXX-ad22-95f821a2c9bc"
Backup-AzApiManagement -Debug -ResourceGroupName $resourceGroupName -Name $apiManagementName -StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $backupName -AccessType "UserAssignedManagedIdentity" -IdentityClientId  $clientId -PassThru

  1. 请注意您必须备份到的存储帐户可以在任何Azure区域中,除了API管理服务地点:
  • 例如:如果所有APIM服务都在West US,那么Storage帐户必须或可以在West US 2中,必须打开API Management控制平面防火墙中美国西部的IP,因为对Azure的请求存储没有从(compute)SNATed到公共IP。;Azure API管理控制平面在这里,在这里相同Azure地区。公网IP地址可以或将被SNATed到跨区域存储请求。
  1. 当您使用用户分配身份时,请确保identity被赋予或分配角色Storage Blob Data ContributorAzure门户,它有作用域到用于APIM备份的存储帐户/恢复。然后保存更改并刷新门户,然后重试。

注意:

  • 备份在消费层中是不可能的,但在API管理的高级、标准、基本和开发层中可用。
  • 还要确保CORS未启用到目标blob存储帐户
  1. 还要检查在您的情况下是否需要备份贡献者角色
  2. 禁用AzContextAutosave,以确保在使用backup- azapimmanagement创建AzContext之前不会在runbook中继承AzContext

Disable-AzContextAutosave -Scope Process
$AzureContext = (Connect-AzAccount .....).context

创建用于存储备份的blob容器时,给它一个blob权限

New-AzStorageContainer -Name "<apim name>" -Context $storageAccount.Context -Permission blob

请查看以下参考资料,以获得有关相同产品的详细信息。

如果问题似乎相同,请尝试从azure门户的支持+故障排除刀片中提出相同的支持请求。

引用:

  1. 在API中使用备份和恢复实现灾难恢复管理- Azure API管理| Microsoft Docs
  2. Azure API管理中的备份和恢复| Azure博客(svenmalvik.com)

最新更新