我正在使用我的同事编写的模块,但是由于某种原因,我找不到子网-标识符以vpc-
开头。为什么这会返回VPC而不是子网?
data "aws_subnet_ids" "app" {
vpc_id = "${data.aws_vpc.default.id}"
tags = {
SubnetType = "app"
}
}
将哪个传递给模块
private_subnets = "${data.aws_subnet_ids.app.*.id}"
并在这里使用:
resource "aws_autoscaling_group" "default-alb" {
name = "${chomp(data.template_file.standard_name.rendered)}"
launch_configuration = tostring(element(aws_launch_configuration.default,count.index).name)
min_size = "${var.min_instances}"
max_size = "${var.min_instances}"
target_group_arns = [
tostring(element(aws_alb_target_group.default-http,count.index).arn),
]
vpc_zone_identifier = var.private_subnets
lifecycle {
create_before_destroy = true
}
}
但是我得到了错误:
Error: Error creating AutoScaling Group: ValidationError: The subnet ID 'vpc-004[redacted]' does not exist
status code: 400, request id: 73e98545-975c-11e9-bd63-fd4915ceeabf
on .terraform/modules/core-api/alb.tf line 1, in resource "aws_autoscaling_group" "default-alb":
1: resource "aws_autoscaling_group" "default-alb" {
子网标识符不是以subnet-
开头吗?
答案 0 :(得分:1)
aws_subnet_ids
数据源没有id
参数或属性,因此Terraform应该在该位置抛出异常,我很惊讶没有这样做。
此外,您似乎并没有使用它,因此不需要那里的splat运算符。
所以代替:
private_subnets = "${data.aws_subnet_ids.app.*.id}"
您应该使用ids
属性返回与过滤器匹配的所有子网ID的列表:
private_subnets = "${data.aws_subnet_ids.app.ids}"