Terraform terragrunt无法访问模块输出

Terraform terragrunt无法访问模块输出,terraform,terragrunt,Terraform,Terragrunt,我正在和Terragrunt做斗争(我还是个新手)。 我甚至可以用纯Terragrunt回购的例子来描述我的问题: 查看此处()我们可以看到terragrunt.hcl,它导入一个模块asg elb服务,该服务取自特定的URL(也是terragrunt示例) 现在我的观点是,在模块解决我所有的需求之前,一切都很好。但是使用上面提到的例子,假设我想在这个模块上添加一些东西(例如ALB的侦听器规则或任何东西)-然后我想依赖模块输出,正如我们可以检查“已使用”模块公开的那样:输出() 但是,即使我在我

我正在和Terragrunt做斗争(我还是个新手)。 我甚至可以用纯Terragrunt回购的例子来描述我的问题:

查看此处()我们可以看到terragrunt.hcl,它导入一个模块asg elb服务,该服务取自特定的URL(也是terragrunt示例)

现在我的观点是,在模块解决我所有的需求之前,一切都很好。但是使用上面提到的例子,假设我想在这个模块上添加一些东西(例如ALB的侦听器规则或任何东西)-然后我想依赖模块输出,正如我们可以检查“已使用”模块公开的那样:输出()

但是,即使我在我的结构中添加tf文件——继续我的示例,它会是这样的:


我只是无法“插值”并访问模块的输出:(

terragrunt
是一个薄包装,只提供一些额外的配置工具。
terragrunt
用于简化多个
terraform
模块的管理,它关心远程状态等。但它不会通过在上面添加一些功能来扩展terraform模块

回到您的例子中,常用的方法是创建一个新的<代码> TrrFrase模块,它可能在现有的模块之上,并在其中添加了缺少的功能。您应该考虑<代码> TrrFrase>代码>模块,它是在某种抽象级别上执行特定工作的函数。考虑到下面的例子:你需要提供一个基础设施,如果AWCuldWaSE警报被触发,它可以发送松弛通知。为了简化它,让我们想象一下,已经创建了警报。缺少的部分是lambda函数,它将发送通知,SNS主题将触发lambda Func。激动

这是可以使用
terraform
模块创建的东西,但在引擎盖下,它很可能依赖另一个
terraform
模块(一个提供Lambda,另一个提供SNS主题)。这些“内部”模块处于另一个抽象级别,您仍然可以在其他情况下单独重用它们。伪代码可能如下所示:

module "sns_topic" {
  source = "git::https://github.com/..."

  name  = "trigger_lambda_to_send_notification_to_slack"
}

module "labmda_function" {
  source = "git::https://github.com/..."
  
  name   = "SendMessageToSlack"
  ...
}

# Invoke Lambda by SNS
resource "aws_sns_topic_subscription" "sns_subscriptions" {
  endpoint      = module.labmda_function.lambda_endpoint # this is how you reference module output
  protocol      = "lambda"
  topic_arn     = module.sns_topic.sns_topic_arn
}
然后,您可以在
terragrunt
中简单地使用此模块