create multiple instances of modules
We want to use [sqs/sns/sqs-sns-connection modules](https://github.com/gruntwork-io/terraform-aws-messaging/tree/main/modules) to create multiple channels. There is an example how to [use for_eac](https://terragrunt.gruntwork.io/docs/rfc/for_each_iteration/#option-2-for_each-attribute-in-terragrunt-config-that-generates-multiple-copies-of-the-config)h to create multiple copies of config. Is there a similar way for our purpose or please suggest the best way to configure it. --- <ins datetime="2023-02-28T15:49:17Z"> <p><a href="https://support.gruntwork.io/hc/requests/109938">Tracked in ticket #109938</a></p> </ins>
Hi @dbd-infra, you can use the Terraform `for_each` argument directly with those modules. Here's a (simplified) example: The `locals` block here is just an example input of the `for_each` argument. You could also set this through variables This example will create 3 sets of an SQS queue, SNS topic, and connection. ``` locals { to_create = toset(["1","2","3"]) } module "sqs" { for_each = local.to_create source = "git::git@github.com:gruntwork-io/terraform-aws-messaging.git//modules/sqs?ref=v0.9.1" name = each.key } module "sns" { for_each = local.to_create source = "git::git@github.com:gruntwork-io/terraform-aws-messaging.git//modules/sns?ref=v0.9.1" name = each.key } module "connection" { for_each = local.to_create source = "git::git@github.com:gruntwork-io/terraform-aws-messaging.git//modules/sns-sqs-connection?ref=v0.9.1" sns_topic_arn = module.sns[each.key].topic_arn sqs_arn = module.sqs[each.key].queue_arn sqs_queue_url = module.sqs[each.key].queue_url } ```