#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