Поиск AWS роли IAM с использованием тегов - PullRequest
0 голосов
/ 04 мая 2020

Не могли бы вы помочь мне с проблемой получения AWS имени роли IAM через terraform?

Вкратце, у меня есть ранее созданная роль с именем: test-platform-testenv-eks2020041915272704860006 . Разные роли имеют разные имена с именами переменных (платформы / стека). Теперь у меня есть файл Terraform, который должен получить имя этой роли IAM (чтобы прикрепить политику к этой роли). Я могу сделать это, используя точное название роли. Но как это сделать без жесткого кода (зная теги и некоторые другие параметры этой роли)?

Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

У меня есть решение. Может быть, не самый лучший, но у меня это работает. Итак,

  1. Получить iam_instance_profile созданного узла EKS, используя данные "aws_instance" , например:
data "aws_instance" "eks_node" {
  filter {...}
}
Получить имя роли ранее созданного узла EKS, используя data "aws_iam_instance_profile" (из определенного в шаге 1 aws_instance), например:
data "aws_iam_instance_profile" "eks_node_profile" {
  name = data.aws_instance.eks_node.iam_instance_profile
}
Присоедините вновь созданную политику к ранее определенной роли EKS, например:
resource "aws_iam_role_policy_attachment" "attach_policy_to_eks" {
  policy_arn = aws_iam_policy.created_policy_eks.arn
  role       = data.aws_iam_instance_profile.eks_node_profile.role_name
}

Спасибо всем за помощь.

0 голосов
/ 04 мая 2020

Имя роли можно сохранить в AWS хранилище параметров диспетчера систем как часть исходного стека.

Затем в последующем стеке можно выбрать имя роли из параметра Хранить с использованием источника данных aws_ssm_parameter , как показано в следующем фрагменте:

data "aws_ssm_parameter" "role" {
  name = "/path/to/role/name"
}

resource "aws_iam_policy_attachment" "policy-attachment" {
  roles = ["${data.aws_ssm_parameter.role.value}"] # pull value from parameter store
  ...
}
...