在azurerm_api_management_api地形中创建动态块



我正试图在azure中的APIM实例中动态创建具有某些输入的API。为此,我创建了一个资源azurerm_api_management_api,我将从local.tf文件中动态地向其传递名称、版本、显示名称等值。但当我尝试时,错误是

Error: Unsupported block type
│
│   on api-managementapi_management_api.tf line 6, in resource "azurerm_api_management_api" "apim_api":
│    6:   dynamic apiValues{
│
│ Blocks of type "apiValues" are not expected here.

这是资源块。

resource "azurerm_api_management_api" "apim_api" {
revision            = "1"
resource_group_name = var.resource_group_name
api_management_name = azurerm_api_management.apim.name
dynamic apiValues{
for_each = local.apiDetails
content{
name                = apiValues.value.name
display_name        = apiValues.value.display_name
path                = ""
protocols           = ["http","https"]
service_url         = "http://spring-boot-redis.azurewebsites.net"
import {
content_format = "openapi-link"
content_value  = "./SpringBootRedis.yaml"
}
}
}
}

locals.tf

locals {
apiDetails = [
{
name = "spring-boot-redis"
display_name = "Spring Boot Redis"
}
]
}

还有其他方法可以做到这一点吗?因为我正计划把这个放在一个蓝色的管道上。因此,我只需要注意API规范和名称。

我不确定您为什么试图对文档中不存在的块使用动态块。错误消息表示资源架构中不存在该块。

似乎您在这里试图实现的是具有local.apiDetails:值的多个资源

resource "azurerm_api_management_api" "apim_api" {
for_each = local.apiDetails
revision            = "1"
resource_group_name = var.resource_group_name
api_management_name = azurerm_api_management.apim.name
name                = each.value.name
display_name        = each.value.display_name
path                = ""
protocols           = ["http","https"]
service_url         = "http://spring-boot-redis.azurewebsites.net"
import {
content_format = "openapi-link"
content_value  = "./SpringBootRedis.yaml"
}
}

该文档包含更多信息。

最新更新