Я пытаюсь создать серверную часть APIM с помощью terraform, и он всегда выдает следующую ошибку:
module.apim_backends.azurerm_api_management_backend.example: Creating...
╷
│ Error: creating/updating Backend (Subscription: "e*******-ce34-****-****-0151ca9****4"
│ Resource Group Name: "**-**-**-devqa"
│ Service Name: "*******"
│ Backend: "example"): unexpected status 400 (400 Bad Request) with error: ValidationError: One or more fields contain incorrect values:
│
│ with module.apim_backends.azurerm_api_management_backend.example,
│ on ..\modules\apimgmt\backends\backends.tf line 1, in resource "azurerm_api_management_backend" "example":
│ 1: resource "azurerm_api_management_backend" "example" {
Код в терраформе (отправляю только эту часть, потому что остальной код работает и все переменные верны, проверял несколько раз):
resource "azurerm_api_management_backend" "example" {
name = format("%s%s", "example", var.env)
description = format("%s%s", "example", var.env)
api_management_name = var.apim_name
resource_group_name = var.resource_group_name
protocol = "http"
url = format("%s%s%s", "https://***", var.env, ".azurewebsites.net/api")
resource_id = var.example_id
tls {
validate_certificate_chain = false
validate_certificate_name = false
}
}
План терраформирования:
+ resource "azurerm_api_management_backend" "example" {
+ api_management_name = "*****"
+ description = "***"
+ id = (known after apply)
+ name = "example"
+ protocol = "http"
+ resource_group_name = "rg-*****-*****-*****"
+ resource_id = "/subscriptions/e*******-ce34-****-****-0151ca9****4/resourceGroups/rg-*****-*****-devqa/providers/Microsoft.Web/sites/example"
+ url = "https://*******.azurewebsites.net"
+ tls {
+ validate_certificate_chain = false
+ validate_certificate_name = false
}
}
Идея состоит только в том, чтобы создать серверную часть APIM, поскольку конвейеры функций будут создавать все остальное через Swagger, например API и политики.
<set-backend-service id = "apim-generated-policy" backend-id = "example" />
Я не пробовал ничего другого, кроме этого, просто немного поискал.
поставщик:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=3.107.0"
}
}
backend "azurerm" {
resource_group_name = "rg-*****-****-devqa"
storage_account_name = "state"
container_name = "tfstatedev"
key = "terraform.tfstate"
}
}
provider "azurerm" {
features {}
skip_provider_registration = true
}





Я исправил проблему: по какой-то причине мне нужно было добавить "https://management.azure.com" перед идентификатором приложения-функции.
resource "azurerm_api_management_backend" "example" {
name = format("%s%s", "example", var.env)
description = format("%s%s", "example", var.env)
api_management_name = var.apim_name
resource_group_name = var.resource_group_name
protocol = "http"
url = format("%s%s%s", "https://***", var.env, ".azurewebsites.net/api")
resource_id = format("%s%s", "https://management.azure.com", var.example)
tls {
validate_certificate_chain = false
validate_certificate_name = false
}
}
Я открою вопрос на github, чтобы понять это.
Но проблема решена.