如何引用Terraform模块创建的资源

如何引用Terraform模块创建的资源,terraform,Terraform,我正在使用创建专有网络。此外,我想使用创建一个Internet网关并将其连接到此VPC 这是我的密码: module "vpc" "vpc_default" { source = "terraform-aws-modules/vpc/aws" name = "${var.env_name}-vpc-default" cidr = "10.0.0.0/16" enable_dns_hostnames = true } resource "aws_internet_gateway

我正在使用创建专有网络。此外,我想使用创建一个Internet网关并将其连接到此VPC

这是我的密码:

module "vpc" "vpc_default" {
  source = "terraform-aws-modules/vpc/aws"

  name = "${var.env_name}-vpc-default"
  cidr = "10.0.0.0/16"
  enable_dns_hostnames = true
}

resource "aws_internet_gateway" "vpc_default_igw" {
  vpc_id = "${vpc.vpc_default.id}"

  tags {
    Name = "${var.env_name}-vpc-igw-vpcDefault"
  }
}
当我运行
terraforminit
时,我得到以下错误:

正在初始化模块。。。 -module.vpc

错误:资源“aws_internet_gateway.vpc_default_igw”配置:变量vpc.vpc_default.id中引用了未知资源“vpc.vpc_default”


如何引用Terraform模块创建的资源?

由于您使用的是模块,因此需要稍微更改引用的格式。使用表格
${module..}
。还需要注意的是,您只能引用从模块输出的值


在您的特定情况下,这将成为
${module.vpc.vpc_id}
,基于。

注意:您可以在一个文件中有多个模块实例:

module "vpc1" "vpc_default" {}
module "vpc2" "vpc_default" {}
module "vpc3" "vpc_default" {}
module "vpc4" "vpc_default" {}

${module.vpc1.vpc_id}
${module.vpc2.vpc_id}
${module.vpc3.vpc_id}
${module.vpc4.vpc_id}

0.13中的module.vpc.vpc\u id