【问题标题】:Azure APIM - Terraform - Use same AAD group for multiple products errors outAzure APIM - Terraform - 对多个产品使用相同的 AAD 组错误
【发布时间】:2020-12-08 17:55:07
【问题描述】:

将同一 Azure AD 组用于两个不同的组时收到错误消息。 我得到的错误说该组已经处于 TF 状态并且不能再次使用。 希望有人以前见过这个错误。

        dev = {
            product1 = {
                product_name                    = "Product-1"
                approval_required               = true
                published                       = true
                subscriptions_limit             = "2"
                aad_group_obj_id                = "00000000-0000-0000-0000-000000000000"
                aad_group_name                  = "AG-Azure-Sample-Group"
                product_policy                  = "../policy-samples/base-policy.xml"
            }
            product2 = {
                product_name                    = "Product-2"
                approval_required               = true
                published                       = true
                subscriptions_limit             = "2"
                aad_group_obj_id                = "00000000-0000-0000-0000-000000000000"
                aad_group_name                  = "AG-Azure-Sample-Group"
                product_policy                  = "../policy-samples/base-policy.xml"
            }
        }
    # ========================================================================
    # Product for BU APIs
    resource "azurerm_api_management_product" "custom_product" {
      product_id            = var.product_name 
      api_management_name   = var.api_management_name
      resource_group_name   = var.resource_group_name
      display_name          = replace(var.product_name, "-", " ")
      # Require subscription keys for API access
      subscription_required = true
      approval_required     = var.approval_required
      published             = var.published
      subscriptions_limit   = var.subscriptions_limit
    }
    
    # Relate group to a product, for each is if we want to use developer or guest built in groups
    resource "azurerm_api_management_product_group" "assignments" {
      for_each            = toset([azurerm_api_management_group.external_group.name])
      product_id          = azurerm_api_management_product.custom_product.product_id
      group_name          = each.key
      api_management_name = var.api_management_name
      resource_group_name = var.resource_group_name
    }
    
    # Create default policy for Product
    resource "azurerm_api_management_product_policy" "apim-product-policy" {
      product_id          = azurerm_api_management_product.custom_product.product_id
      api_management_name = var.api_management_name
      resource_group_name = var.resource_group_name
      xml_content         = file(var.product_policy_file_path)
    }

【问题讨论】:

  • 嗨@mac,你使用哪个TF资源?是azurerm_api_management_product吗?
  • 您好,我确实在使用 azurerm_api_management_product,将其分配给 aad 组,最后为其创建默认策略。请看上面的代码,刚刚添加了。
  • 似乎从门户网站我可以毫不费力地将相同的 AAD 组添加到产品中。也许这只是与 Terraform 有关。
  • ``` # 将 AAD 组分配给产品资源 "azurerm_api_management_group" "external_group" { name = var.aad_group_name resource_group_name = var.resource_group_name api_management_name = var.api_management_name display_name = var.aad_group_name description = "This group链接到 AAD 组 ${var.aad_group_name}" external_id = "aad://my tenant ID/groups/${var.aad_group_obj_id}" type = "external" }```

标签: azure terraform product terraform-provider-azure apim


【解决方案1】:

通过将组创建与分配分开来解决问题。问题是每次将组分配给产品时都会执行创建组的模块。现在我有一个单独的地图,其中包含要添加到 API 的组,并且在分配模块上,我通过数据块段拉入组。像魅力一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-05
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    相关资源
    最近更新 更多