使用模块不能从terraform_remote_state获取vpc_id用于其他模块



我有两个模块,一个是vpc,一个是创建安全组。

我无法得到terraform_remote_state:

vpc_id  = data.terraform_remote_state.network_configuration.outputs.vpc_id

在我的IDE中pycharm输出不存在,即like输出不是一个有效的选项

在根目录中,我得到如下输出:

module "vpc" {
source                = "./modules/vpc"
region                = var.region
vpc_cidr              = var.vpc_cidr
public_subnet_1_cidr  = var.public_subnet_1_cidr
public_subnet_2_cidr  = var.public_subnet_2_cidr
public_subnet_3_cidr  = var.public_subnet_3_cidr
private_subnet_1_cidr = var.private_subnet_1_cidr
private_subnet_2_cidr = var.private_subnet_2_cidr
private_subnet_3_cidr = var.private_subnet_3_cidr
}
output "vpc_id" {
value = module.vpc.vpc_id
}

在VPC模块中我有一个输出。

output "vpc_id" {
value = aws_vpc.production-vpc.id
}

在根目录中有输出。

output "vpc_id" {
value = module.vpc.vpc_id
}

下面是我的安全组模块:

data "terraform_remote_state" "network_configuration" {
backend = "s3"
config = {
bucket = var.remote_state_bucket
key    = var.remote_state_key
region = var.region
profile = "terraform"
}
}
resource "aws_security_group" "ec2_private_security_group" {
name = "EC2-Private-SG"
description = "Only allow public SG resoruces to access instances"
vpc_id = data.terraform_remote_state.network_configuration.outputs.vpc_id
...
}

我做错了什么得到vpc_id ?我得到下面的错误

Error: Unsupported attribute
on modules/sg/sg.tf line 19, in resource "aws_security_group" "ec2_private_security_group":
19:   vpc_id      = data.terraform_remote_state.network_configuration.outputs.vpc_id
|----------------
| data.terraform_remote_state.network_configuration.outputs is object with no attributes
This object does not have an attribute named "vpc_id".

根据评论

使用terraform_remote_state在模块之间传递变量不是一个好的做法。相反,您应该将变量作为常规输入变量传递给模块:

vpc_id = module.vpc.vpc_id

最新更新