Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在Terraform cidrsubnet函数中使用映射变量中的值_Amazon Web Services_Terraform_Public_Subnet_Cidr - Fatal编程技术网

Amazon web services 在Terraform cidrsubnet函数中使用映射变量中的值

Amazon web services 在Terraform cidrsubnet函数中使用映射变量中的值,amazon-web-services,terraform,public,subnet,cidr,Amazon Web Services,Terraform,Public,Subnet,Cidr,我在地图变量中有一个VPC cidr,它是在Terraform中定义的。我试图做的是在map变量中使用一个特定的值,以便在Terraform中动态创建一个子网。任何关于如何实现这一目标的建议都将非常有用。以下是如何定义我的变量: VPC CIDR variable "vpc_cidr" { default { us-east-1 = "192.1.0.0/16" us-west-1 = "192.2.0.0/16"

我在地图变量中有一个VPC cidr,它是在Terraform中定义的。我试图做的是在map变量中使用一个特定的值,以便在Terraform中动态创建一个子网。任何关于如何实现这一目标的建议都将非常有用。以下是如何定义我的变量:

VPC CIDR

variable "vpc_cidr" {
  default {
    us-east-1 = "192.1.0.0/16"
    us-west-1 = "192.2.0.0/16"
    us-west-2 = "192.3.0.0/16"
  }
}
AWS子网

resource "aws_subnet" "public_subnets" {
  count = "${length(local.availability_zone_names)}"
  vpc_id = "${aws_vpc.vpc.id}"
  cidr_block = "${cidrsubnet("pulling aws vpc cidr from map variable", newbits, netnum)}"
  availability_zone = "${local.availability_zone_names[count.index]}"
  map_public_ip_on_launch = true
}

老实说,我不能完全确定您定义变量的语法。我宁愿这样说(尽管您的版本也可能是正确的):

然后:

  cidr_block = "${cidrsubnet(var.vpc_cidr[YOUR_CURRENT_REGION], newbits, netnum)}"
不确定是否已将
您的\u当前\u区域
定义为某个变量。否则,您可能需要从数据源中提取:

data "aws_region" "current_region" {}

使用
当前\u地区
而不是
您的当前\u地区

非常感谢。我确实找到了一个有点不同的解决方案,但你的也起了作用。再次感谢!
data "aws_region" "current_region" {}