【问题标题】:Azure APIM Backup throwing error "Invalid parameter: "This request is not authorized to perform this operation.Parameter name: backupContainerName"Azure APIM 备份抛出错误“无效参数:“此请求无权执行此操作。参数名称:backupContainerName”
【发布时间】:2022-06-14 02:10:27
【问题描述】:

我正在使用 Azure 自动化 Runbook 使用“用户分配的托管标识”在同一区域备份 APIM。已将角色分配“存储帐户参与者”分配给用户分配的托管标识。还将 APIM 控制面板 IP 的 IP 地址列入白名单,即我们东部的“20.44.72.3”2。做这一切仍然我得到错误

Body:
{
  "error": {
    "code": "InvalidParameters",
    "message": "Invalid parameter: This request is not authorized to perform this operation.\r\nParameter 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

【问题讨论】:

  • 不完全确定,但我认为您需要将Storage Blob Data Contributor 分配给它。 Storage Account Contributor 不包含数据平面操作权限。我认为 APIM 备份需要存储为 blob,在这种情况下,它需要访问上述角色将提供的 blob 操作。
  • 不会抛出同样的错误。

标签: azure azure-storage azure-api-management azure-runbook


【解决方案1】:
  1. 请注意您必须备份到的存储帐户 可以在任何 Azure 区域中,API 管理所在的区域除外 服务位于,即;同一地区除外。
  • 例如:如果 APIM 服务在美国西部,那么存储帐户必须或可以是 在美国西部 2 并且必须打开 API 管理控制平面 防火墙中美国西部的 IP,因为 对 Azure 的请求 存储未从(计算)SNAT 到公共 IP IE。 ;这里是 Azure API 管理控制平面,在同一个 Azure 区域。公共 IP 地址可以或将被 SNAT 到 跨区域存储请求。
  1. 当您使用用户分配的身份时,请确保 身份由Azure portal 指定或分配Storage Blob Data Contributor 的角色,该Azure portal 具有范围 到您用于 APIM 备份的存储帐户 /恢复。

注意:

  • 在消费中无法进行备份,但在 API 管理的 Premium、Standard、Basic 和 Developer 层中可用。
  • 还要确保没有为目标 blob 存储帐户启用 CORS
  1. 还要检查您的情况是否需要 backup-contributor 角色
  2. 禁用 AzContextAutosave 以确保在使用 backup-azapimanagement 时在创建 azcontext 之前不继承 Runbook 中的 AzContext

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

在创建 blob 容器来存储备份时,给它一个 blob 权限

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

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

参考资料:

  1. Implement disaster recovery using backup and restore in API Management - Azure API Management | Microsoft Docs
  2. Backup and Restore in Azure API Management | Azure Blog (svenmalvik.com)

【讨论】:

    猜你喜欢
    • 2019-10-01
    • 2020-06-21
    • 2021-03-28
    • 2020-08-16
    • 2019-07-24
    • 2020-11-29
    • 2021-12-27
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多