我有数据源模块,我通过传递子网名称来提取子网 ID。
文件位于数据模块中:
模块/数据/data.tf
data "aws_vpc" "vpc-id" {
provider = "${var.region}"
filter {
name = "tag:Name"
values = ["kdt-vpc"]
}
}
data "aws_subnet" "subnetid" {
provider = "${var.region}"
filter {
name = "vpc-id"
values = [data.aws_vpc.vpc-id.id]
}
filter {
name = "tag:Name"
values = ["kdt-private-subnet-0"]
}
}
变量.tf
variable "region" {
description = "vpc name"
type = string
default = "aws.west"
}
main.tf 我在其中调用数据模块。
module "data" {
source = "./data"
region = "aws.west"
}
output "subnet_id" {
value = module.data.subnetid
}
提供商.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
#version = "~> 3.0"
#configuration_aliases = [ aws.alternate ]
}
}
}
provider "aws" {
region = "us-east-1"
}
provider "aws" {
alias = "west"
region = "us-east-2"
}
运行 terraform apply 时出现以下错误
错误:提供程序配置引用无效 │ │ data\data.tf 第 2 行,数据“aws_vpc”“vpc-id”中: │ 2:提供程序 =“${var.region}” │ │ 提供程序参数需要提供程序类型名称,可选地后跟一个句点,然后是配置别名。╵ ╷ │ 错误:提供程序配置引用无效 │ │ 在 data\data.tf 第 11 行,数据“aws_subnet”“subnetid”中: │ 11:提供程序 =“${var.region}” │ │ 提供程序参数需要提供程序键入名称,可选地后跟一个句点,然后是一个
配置别名。╵
错误:不支持的属性 │ │ main.tf 第 18 行,输出“subnet_id”中: │ 18: value = module.data.subnetid │ ├────────────── │ │ module .data 是一个对象 │ │ 该对象没有名为“subnetid”的属性。