locals.queues.tf (20 lines of code) (raw):

locals { base_queues = { for k, v in local.normalized_queues : k => v if v.forward_to == null && v.forward_dead_lettered_messages_to == null } flatten_queue_rules = flatten([ for queue_name, queue_params in local.normalized_queues : [ for rule_key, rule_params in queue_params.authorization_rules : { queue_name = queue_name rule_params = rule_params rule_name = coalesce(rule_params.name, rule_key) } ] ]) forward_queues = { for k, v in local.normalized_queues : k => v if v.forward_to != null || v.forward_dead_lettered_messages_to != null } normalized_queues = { for queue_key, queue_params in var.queues : coalesce(queue_params.name, queue_key) => queue_params } queue_rules = { for queue_rule in local.flatten_queue_rules : "${queue_rule.queue_name}|${queue_rule.rule_name}" => queue_rule } }