我正在尝试使用aws_vpcs数据源来确定给定VPC的 PIV4_CIDR ,首先识别VPC并从ID获取CIDR-是否可能实现?
为了一些设计原因,我们将服务置于不同的VPC中。例如,我有三个VPC:xxxprod-n
,xxxprod-l
和xxxprod-h
,我想添加一个安全组规则来允许整个子网访问特定端口。这是我尝试过的:
data "aws_vpcs" "prod" {
tags = {
Name = "${var.project}prd-*"
}
}
resource "aws_security_group_rule" "pa-allow" {
count = length(data.aws_vpcs.prod.ids)
type = "ingress"
from_port = 8140
to_port = 8140
protocol = "tcp"
cidr_blocks = [sort(data.aws_vpcs.prod.ids)[count.index].cidr_block]
security_group_id = aws_security_group.secg.id
description = "allow from ${sort(data.aws_vpcs.prod.ids)[count.index]}"
}
我遇到了错误:
``` Error: Unsupported attribute on ../../modules/mgt/ec2.tf line 42, in resource "aws_security_group_rule" "pa-allow": 42: cidr_blocks = [sort(data.aws_vpcs.prod.ids)[count.index].cidr_block] ```
这个值没有任何属性。
我试过了,但基于这个页面:
https://www.terraform.io/docs/providers/aws/d/vpc.html
,认为 aws_vpc 和 aws_vpcs 可以做类似的事情,但看起来并不是这样。有什么建议如何解决?
sort
。而且,这看起来像是0.12的语法。这正确吗? - Matt Schuchardsort
,事实上data.aws_vpcs.prod.ids
是一个集合(set),而不是列表(list),因此其元素没有特定顺序,不能像列表那样通过数字索引来访问。我使用sort
绕过了这个问题。 - MacUsersaws_vpc
返回单个VPC的信息作为属性,我认为aws_vpcs列表元素可能会以类似的方式工作。那么下一个问题是,我该如何实现它。不一定非要使用aws_vpcs,只要能够检索相关的CIDR即可。 - MacUsers