У меня есть регистрация приложения, которая определяет два блока oauth2_permissions, например (другие детали опущены)
resource "azuread_application" "myapp" {
oauth2_permissions {
is_enabled = true
type = "User"
value = "Permission.One"
}
oauth2_permissions {
is_enabled = true
type = "User"
value = "Permission.Two"
}
}
Что, если оно применяется, работает нормально. Затем я хочу сослаться на эти разрешения при регистрации другого приложения, например
resource "azuread_application" "myotherapp" {
required_resource_access {
resource_app_id = azuread_application.myapp.application_id
resource_access {
id = ??
type = "Scope"
}
}
}
Для идентификатора здесь я попробовал:
id = lookup(azuread_application.myapp.oauth2_permissions[0], "id")
, что дает This value does not have any indices
. Как и
id = azuread_application.myapp.oauth2_permissions.0.id
, я могу определить блок данных и получить вывод oauth2_permissions из myapp:
data "azuread_application" "myapp" {
application_id = azuread_application.myapp.application_id
}
output "myapp-perms" {
value = data.azuread_application.myapp.oauth2_permissions
}
И при применении, это будет правильно отображать массив из двух блоков разрешений . Если я попытаюсь обратиться к блоку данных вместо блока приложения, т.е.
id = lookup(data.azuread_application.myapp.oauth2_permissions[0], "id")
, это даст мне другую ошибку: The given key does not identify an element in this collection value
Если я применю эти два разрешения вручную на консоль, все нормально работает. Читая вокруг, я был почти уверен, что хотя бы один из вышеперечисленных методов должен работать, но мне явно чего-то не хватает.
Для полноты, определение поставщика:
provider "azurerm" {
version = "~> 2.12"
}
provider "azuread" {
version = "~> 0.11.0"
}