Ошибка терраформирования при передаче выходной переменной из одного модуля в другой

#amazon-web-services #terraform #terraform-provider-aws

#amazon-web-services #terraform #terraform-provider-aws

Вопрос:

Я использую два модуля vpc и lb и передаю переменную вывода в модуле vcp в модуль lb, как показано ниже в коде. Но я получаю следующую ошибку —

 Error: Unsupported attribute

  on main.tf line 35, in module "lb":
  35:   vpc-id = module.vpc.vpc-id

This value does not have any attributes.
 

Вот код —
main.tf

 provider "aws" {
  shared_credentials_file = "~/.aws/credentials"
  region =var.region      
}
# Include modules
module "vpc" {
  count = var.create_default_vpc ? 1:0
  source = "./modules/vpc"
  region = var.region
  zones = var.zones
}

module "lb" {
  source  = "./modules/lb"
  image = var.image
  instance_type = var.instance_type
  vpc-id = module.vpc.vpc-id
}
 

./modules/vpc/vpc.tf

 resource "aws_vpc" "xcloud-vpc" {
  cidr_block       = "10.0.0.0/16"
  enable_dns_hostnames = true

  tags = {
    Name = "xcloud-vpc"
  }
}
 

./modules/vpc/vpc-output.tf

 output "vpc-id" {
  value = aws_vpc.xcloud-vpc.id
}
 

./modules/lb/lb.tf

 resource "aws_security_group" "allow_http" {
  name        = "xcloud-sg-allow-http"
  description = "Allow HTTP amp; ICMP inbound connections"
  vpc_id = var.vpc-id
  # vpc_id = module.vpc.vpc-id
  <some more ingress, egress code>
 

./modules/lb/lb-vars.tf

 variable image {}
variable instance_type {}
variable vpc-id{}
 

Хотя я передаю vpc-id = module.vpc.vpc-id, включая модуль «lb» в main.tf , приведенная выше ошибка выдается для этой строки кода. Любой указатель будет оценен.

Комментарии:

1. Вы также определяете переменную «vpc-id» в своем модуле lb?

Ответ №1:

Поскольку вы используете count в своем module , вы должны ссылаться на отдельные экземпляры модуля, даже если у вас есть только один. Итак, в вашем случае это будет:

 vpc_id = module.vpc[0].vpc-id