У меня есть список пользователей для создания, список тем sns и политики для предоставления пользователям разрешений на темы. Все это пространство имен для пользователя ...
Дано:
main.tf
provider "aws" {
region = "eu-west-1"
profile = "terraform"
}
module "topics" {
source = "./queues/topics"
}
module "users" {
source = "./users"
}
module "policies" {
source = "./policies"
sns_topics = "${module.topics.sns_topics}"
}
. / Очередь / topics.tf
resource "aws_sns_topic" "svc_topic" {
count = "${length(var.sns_topics)}"
name = "${element(var.sns_topics, count.index)}"
}
. / Очередь / темы / vars.tf
# List of topics
variable "sns_topics" {
type = "list"
default = [
"a-topic",
"b-topic",
"c-topic",
]
}
. / Очередь / темы / output.tf
output "sns_topics" {
value = "${var.sns_topics}"
}
. / Пользователи / main.tf
resource "aws_iam_user" "usrs" {
count = "${length(var.topic_user)}"
name = "usr-msvc-${element(var.topic_user, count.index)}"
}
. / Пользователи / vars.tf
variable "topic_user" {
type = "list"
default =[
"user-a",
"user-b",
"user-c",
]
}
. / Пользователи / output.tf
output "topic_user" {
value = "${var.topic_user}"
}
. / Политика / main.tf
resource "aws_iam_policy" "sns_publisher" {
count = "${length(var.sns_topics)}"
name = "sns-${element(var.sns_topics, count.index)}-publisher"
policy = <<POLICY
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:*:*:${element(var.sns_topics, count.index)}"
}
]
}
POLICY
}
Здесь я хотел бы построить карту в выходных данных для
привязать пользователя к теме
output "usr_topic_map" {
value = {
"user-a" = "a-topic
"user-b" = "c-topic
"user-c" = "c-topic
}
}
Я могу передать список пользователей в модуль политики, но я не знаю, как сгенерировать эту карту в выводе.
Я хочу использовать это для присоединения политики к соответствующему пользователю.
Открыто и для улучшения структуры, если это упрощает задачи.