如何将数据从一个子模块传递到另一个子模块?

问题描述 投票:0回答:1

我有以下文件夹结构

├── main.tf
├── modules
│   ├── web-app
│   │   ├── lambda.tf
│   │   ├── outputs.tf
│   │   ├── s3.tf
│   │   ├── sns.tf
│   │   ├── sqs.tf
│   │   └── variables.tf
│   ├── microservice1
│   │   ├── sns.tf
│   │   ├── sqs.tf
│   │   └── variables.tf
...

web-app
中,我创建了一个 SNS 主题。在
microservice
内,我想将我在那里创建的队列订阅到我在
web-app
内创建的主题。 我的问题是我不知道如何将
arn of the topic
从网络应用程序传递到微服务1。

我怎样才能实现这一目标?

amazon-web-services terraform
1个回答
1
投票

您无法从

microservice1
执行此操作。你必须在你的
main.tf
中做到这一点。因此,首先在
web-app
中实例化一个
main.tf
模块。模块输出 sns arn。然后,再次将 arn 传递到
microservice
模块的时刻,再次在
main.tf

main.tf

module "web-app" {
   source = "./modules/web-app"
   # other arguments
}

module "microservice1" {
   source = "./modules/microservice1"
   sns_arn = module.web-app.sns_arn
   # other arguments
}

为了让它发挥作用,你必须在你的

web-app
中输出:

output "sns_arn" {
  value = aws_sns_topic.mytopic.id
}

/microservice1/variables.tf

variable "sns_arn" {
  description="topic arn from web_app"
}
© www.soinside.com 2019 - 2024. All rights reserved.