#amazon-web-services #terraform #amazon-iam #terraform-provider-aws #policy
#amazon-веб-сервисы #terraform #amazon-iam #terraform-provider-aws #политика
Вопрос:
Вместо того, чтобы использовать консоль aws для простого прикрепления пары уже существующих политик к уже существующей роли, мне нужно сделать это через Terraform в модуле для конкретной системы, которая требует perms.
Мне не очень повезло с этим?
variables.tf
variable "masterrole" {
description = "role already present within the cn-tio-tooling-acc"
default = "arn:aws-cn:iam::12345678910:role/Master"
}
variable "policies" {
description = "policies already present within the cn-tio-tooling-acc"
default = "arn:aws-cn:iam::12345678910:policy/Source-1,arn:aws-cn:iam::351767606935:policy/Source-2"
}
data.tf <— Ссылка на роль и данные политики, которые уже присутствуют в учетной записи
data "aws_iam_role" "masterrole" {
name = "Master"
}
data "aws_iam_policy" "policies" {
arn = var.policies
}
IAM.tf
resource "aws_iam_role_policy_attachment" "Sources" {
role = aws_iam_role.masterrole.name
policy_arn = aws_iam_policy.policies.arn
}
Возможно, здесь что-то действительно простое, но почему я получаю следующее из результата «плана»?
Ошибка: ссылка на необъявленный ресурс на cn_cpm_iam.tf строка 3, в ресурсе «aws_iam_role_policy_attachment» «Источники»: 3: роль = aws_iam_role.masterrole.name Управляемый ресурс «aws_iam_role» «masterrole» не был объявлен в корневом модуле.
Ошибка: ссылка на необъявленный ресурс на cn_cpm_iam.tf строка 4, в ресурсе «aws_iam_role_policy_attachment» «Источники»: 4: policy_arn = aws_iam_policy.cpmpolicies.arn Управляемый ресурс «aws_iam_policy» «политики» не был объявлен в корневом модуле.
Ответ №1:
При ссылке на источники данных в terraform вам необходимо добавить к ним префикс data.
. Поэтому попробуйте использовать
resource "aws_iam_role_policy_attachment" "Sources" {
role = data.aws_iam_role.masterrole.name
policy_arn = data.aws_iam_policy.policies.arn
}
Но поскольку вы уже знаете имя и ARN, вы можете просто использовать их, не запрашивая источники данных:
resource "aws_iam_role_policy_attachment" "Sources" {
role = "Master"
policy_arn = var.policies
}
Дайте мне знать, если я что-то здесь упустил 😉
Комментарии:
1. мариукс, ты, конечно, ничего не пропустил. Отличное место и ваши варианты исправили мои проблемы с «планом». Спасибо, что помогли новичку в terraform. 🙂
2. @ILCattivo рад это слышать … можете ли вы принять ответ, если нет дополнительных вопросов, чтобы он был помечен как выполненный? 😉 спасибо .. счастливого терраформирования..