【问题标题】:Import value from Terraform module从 Terraform 模块导入值
【发布时间】:2019-01-23 15:20:40
【问题描述】:

我正在构建两个 Terraform 模块的骨架:api-gatewaylambda。这是文件结构:

.
├── modules
│   ├── api-gateway
│   │   ├── main.tf
│   │   ├── outputs.tf
│   │   └── variables.tf
│   └── lambda
│       ├── main.tf
│       ├── outputs.tf
│       ├── policies
│       │   └── lambda-role.json
│       └── variables.tf
├── main.tf
├── provider.tf
├── sandbox-environment.tfvars
└── variables.tf

modules/api-gateway/main.tf的(摘录)内容为:

resource "aws_api_gateway_integration" "lambda_root" {
  ...
  uri = "${aws_lambda_function.fn_name.invoke_arn}"
}

resource "aws_api_gateway_integration" "lambda" {
  ...
  uri = "${aws_lambda_function.fn_name.invoke_arn}"
}

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

modules/lambda/main.tf的(摘录)内容为:

resource "aws_lambda_function" "fn_name" {
  filename = "${data.archive_file.fn_name.output_path}"
  ...
  runtime = "java8"
}

问题是我无法读取${aws_lambda_function.fn_name.invoke_arn} 中的值modules/api-gateway/main.tf

$ terraform init
Initializing modules...
- module.pipeline

Error: resource 'aws_api_gateway_integration.lambda_root' config: unknown resource 'aws_lambda_function.fn_name' referenced in variable aws_lambda_function.fn_name.invoke_arn



Error: resource 'aws_api_gateway_integration.lambda' config: unknown resource 'aws_lambda_function.fn_name' referenced in variable aws_lambda_function.fn_name.invoke_arn

有没有办法从modules/api-gateway/main.tf 中“导出”该值?

【问题讨论】:

    标签: terraform terraform-template-file


    【解决方案1】:

    您需要在modules/lambda/outputs.tf 中添加一个输出变量。

    output "lambda_invoke_arn" {
       value = "${aws_lambda_function.fn_name.invoke_arn}"
    }
    

    然后在modules/api-gateway/main.tf中,可以引用lambda模块的输出。

    resource "aws_api_gateway_integration" "lambda" {
      ...
      uri = "${module.lambda.lambda_invoke_arn}"
    }
    

    【讨论】:

    • 你是对的,不过,api-gateway 模块能够看到该值的唯一方法是如果我在其中创建一个像这样的模块:module "lambda" { source = "../lambda" }。这是我试图使这项工作的一个黑客,还是那样可以?
    • 你能添加main.tf 的样子吗?您应该必须在 api-gateway 内添加新模块
    • 我用我必须在modules/api-gateway/main.tf 中添加的内容更新了这个问题。让我知道...
    • 对不起,我指的是根目录下的main.tf
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 2021-12-08
    • 2021-04-17
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多