Я пытаюсь внести в белый список свои общедоступные IP-адреса APIM по моей лазурной функции:
apim.tf
data "azurerm_api_management" "main" {
name = "my-apim"
resource_group_name = "my-rg"
}
output "apim_ip" {
value = data.azurerm_api_management.main.public_ip_addresses
}
выход терраформирования
apim_ip = tolist([
"1.2.3.4",
])
func.tf
resource "azurerm_linux_function_app" "az_func" {
name = var.my_func_name
resource_group_name = azurerm_resource_group.main.name
location = var.location
storage_account_name = azurerm_storage_account.main.name
storage_account_access_key = azurerm_storage_account.main.primary_access_key
service_plan_id = azurerm_service_plan.azfunc.id
site_config {
dynamic "ip_restriction" {
for_each = data.azurerm_api_management.main.public_ip_addresses
content {
ip_address = data.azurerm_api_management.main.public_ip_address_id.value
}
}
}
}
На terraform apply
я продолжаю получать сообщение об ошибке:
Can't access attributes on a primitive-typed value (string).
Что я делаю не так?
data.azurerm_api_management.main.public_ip_address_id
— это строка, и поэтому вы не можете получить доступ к ее значениям, как если бы это был тип map
или object
. Я полагаю, вы имели в виду доступ к значениям временной переменной итератора лямбда, назначенной из data.azurerm_api_management.main.public_ip_addresses
. При этом использование и синтаксис будут такими:
ip_address = site_config.value.id
для доступа к значению id
из текущего атрибута data.azurerm_api_management.main.public_ip_addresses
.
Я исправил ваш ответ; спасибо, что делаете работу! :)