【问题标题】:Terraform Outputs across modules跨模块的 Terraform 输出
【发布时间】:2020-10-22 20:03:23
【问题描述】:

我正在努力研究如何从一个模块传递输出并使用另一个模块。

我的文件夹结构:

.
├── main.tf
├── modules
│   ├── cloudwatch-event
│   │   ├── basic_event_rule.tf
│   │   ├── basic_event_target.tf
│   │   └── variables.tf
│   └── lambda
│       ├── basic_lambda.tf
│       ├── output.tf
│       ├── lambda.py
│       └── variables.tf
├── lambda
│   ├── main.tf
│   └── variables.tf
└── terraform.tfvar

为了向 lambda 添加调度,我需要在 CloudWatch 模块中使用 Lambda ARN。

lambda - basic_lambda.tf

resource "aws_lambda_function" "lambda_function" {

lambda - 输出.tf

output "lambda_arn" {
  value = "${aws_lambda_function.lambda_function.arn}"

在我的 lambda 应用程序模块中,我的主 lambda/main.tf 中有这个

module "cloudwatch-event" {
  source      = "../modules/cloudwatch-event"
  lambda_arn = "${module.lambda.lambda_arn}"

module "lambda" {
  source      = "../modules/lambda"

我的 lambda/variables.tf 包含 lambda_arn 变量作为字符串

variable "lambda_arn" {
  type = "string"
}

根主文件如下所示:

provider "aws" {
  region = var.aws_region
}
module "accesskey-lambda" {
  source = "./lambda/"
}

运行 TF 我明白了

Error: Missing required argument

  on main.tf line 5, in module "accesskey-lambda":
  5: module "accesskey-lambda" {

The argument "lambda_arn" is required, but no definition was found.

然后将其添加到根主文件并不能解决我的问题。

谢谢 尼克

【问题讨论】:

    标签: variables lambda terraform


    【解决方案1】:

    已解决,我有一个错字 在 cloudwatch/basic_event_target.tf 中

      arn   = "${var.lambda_arn}"
    

    然后在 cloudwatch/变量中

    variable "lambda_arn" {
      type = string
    }
    

    然后需要的模块

    module "cloudwatch-event" {
      source      = "../modules/cloudwatch-event"
      lambda_arn = "${module.lambda.lambda_arn}"
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 2021-03-07
      • 2021-04-09
      • 2021-07-08
      • 1970-01-01
      • 2021-12-17
      • 2021-05-06
      • 1970-01-01
      • 2021-01-11
      相关资源
      最近更新 更多