API 管理 - 在 Terraform 中将后端服务设置为操作策略

API Management - Set Backend Service as Operation Policy in Terraform

我正在使用 Terraform 在 Azure 中创建一个 APIM。到目前为止,我已经能够创建 APIM 实例、API 和 API 中的操作。因为我希望 API 的每个操作都指向一个单独的逻辑应用程序,所以我的理解是我不能将其设置为 azurerm_api_management_backend,而是需要在 XML 的操作策略中设置它.

我的操作策略是这样的:

resource "azurerm_api_management_api_operation_policy" "apim1_ss_cmpcomplaints_api_dev_get_policy" {
  api_name            = azurerm_api_management_api.apim1_ss_api_dev.name
  api_management_name = azurerm_api_management.test-apimManagement.name
  resource_group_name = azurerm_resource_group.apimResourceGroup.name
  operation_id        = "get-complaints"
  xml_content         = <<XML
  <policies>
    <inbound>
        <base />
        <set-method id="apim-generated-policy">GET</set-method>
        <set-backend-service id="apim-generated-policy" backend-id="/subscriptions/xxx/resourceGroups/hm-iac-msdn-neu-rg/providers/Microsoft.Logic/workflows/testLogicApp" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
  </policies>
  XML
}

我已经创建了逻辑应用程序并从 Azure CLI 检索了资源 ID,并将其包含在 set-backend-service 节点中。但是尽管从 CLI 获得了 ID,我还是得到了以下响应:

│ Error: creating or updating API Operation Policy (Resource Group "apim-resource-group" / API Management Service "harry-test-apim" / API "test_api_dev" / Operation "get-complaints"): apimanagement.APIOperationPolicyClient#CreateOrUpdate: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="ValidationError" Message="One or more fields contain incorrect values:" Details=[{"code":"ValidationError","message":"Error in element 'set-backend-service' on line 5, column 10: Backend with id '/subscriptions/xxx/resourceGroups/hm-iac-msdn-neu-rg/providers/Microsoft.Logic/workflows/testLogicApp' could not be found.","target":"set-backend-service"}]

我更愿意使用资源 ID 来设置它,而不是使用 base-url

backend-id 与 ARM id 不同。不好找,所以解决方法是在APIM前端生成策略,然后在代码中应用。