terraform - 从 Terraform 模块导入值
问题描述
我有我正在构建的两个 Terraform 模块的骨架:api-gateway
和lambda
. 这是文件结构:
.
├── 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
?
解决方案
您需要在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}"
}
推荐阅读
- scala - 在 Hadoop APUI 中,如果我想从一个 HDFS 位置解压缩文件并将其放在另一个 HDFS 位置,UnZip 是否可以工作
- kubernetes - 如何在 Kubernetes 中检查 PSP(pod 安全策略)规范
- java - 如何从android studio中的任何地方访问localhost数据库
- node.js - 持久会话的安全方式
- list - Golang中双链循环列表上的函数InsertBefore()
- auth0 - AUTH 0 重置密码不发送电子邮件
- python - 如何在特定条件下从 tkinter 打开另一个 python 文件(如用户获胜)
- java - 我如何为以下问题编写一个java程序?
- java - 对象二分查找
- facebook - 如何找到新 Instagram 帖子的最大分辨率链接?