对于AWS区域内的每个可用性区域

戴夫·迈克尔斯

我正在尝试使用Terraform在区域内的可用性区域内创建一个子网。我有下面的代码,让我的子网读到该区域的可用区域时遇到了一些麻烦。下面也是我的错误。

data "aws_availability_zones" "azs" {
  state = "available"
}
locals {
  az_names = data.aws_availability_zones.azs.names
}

resource "aws_vpc" "main" {
  for_each   = var.environment
  cidr_block = var.vpc_cidr

  tags = {
    Name = var.vpc_tags
  }
}

resource "aws_subnet" "public" {
  for_each                = var.public_sub_cidr
  vpc_id                  = aws_vpc.main[each.key].id
  cidr_block              = cidrsubnet(var.vpc_cidr, 0, each.value.public_subnet)
  availability_zone       = local.az_names[each.key]
  map_public_ip_on_launch = true
  tags = {
    Name = "${var.vpc_tags}-PubSubnet"
  }
}

失误

Error: Unsupported attribute



on vpc.tf line 17, in resource "aws_subnet" "public":
  17:   cidr_block              = cidrsubnet(var.vpc_cidr, 0, each.value.public_subnet)
    |----------------
    | each.value is ""

This value does not have any attributes.

Error: Invalid index



on vpc.tf line 18, in resource "aws_subnet" "public":
  18:   availability_zone       = local.az_names[each.key]
    |----------------
    | each.key is ""
    | local.az_names is list of string with 3 elements

The given key does not identify an element in this collection value: a number
is required.

任何有关从可用区域读取以及分配这些公共子网的建议都将受到赞赏。

UPDATE我取得了一些进展,更新了我的代码以将每个代码用于数据资源的“长度”。请参阅下面的代码和错误:

resource "aws_subnet" "public" {
  for_each                = length(local.az_names)
  vpc_id                  = aws_vpc.tableau[each.key].id
  cidr_block              = cidrsubnet(var.vpc_cidr, 8, each.value)
  availability_zone       = local.az_names[each.key]
  map_public_ip_on_launch = true
  tags = {
    Name = "${var.vpc_tags}-PubSubnet"
  }
}
Error: Invalid for_each argument



 on vpc.tf line 15, in resource "aws_subnet" "public":
  15:   for_each                = length(local.az_names)

The given "for_each" argument value is unsuitable: the "for_each" argument
must be a map, or set of strings, and you have provided a value of type
number.

make: *** [apply] Error 1
马辛

不知道您要达到什么目的,但这是不正确的:

for_each                = length(local.az_names)

它应该是:

for_each                = toset(local.az_names)

由于local.az_names现在已设置,因此您只能使用each.keyeach.value将与相同each.key)。例如:

availability_zone       = each.key

以下代码在每个可用区中创建一个子网:

provider "aws" {
  # your details
}

data "aws_availability_zones" "azs" {
  state = "available"
}

locals {
  az_names = data.aws_availability_zones.azs.names
}

variable "vpc_cidr" {
  default = "10.0.0.0/16"
}

resource "aws_vpc" "main" {
  cidr_block = var.vpc_cidr
}

resource "aws_subnet" "public" {
  for_each                = {for idx, az_name in local.az_names: idx => az_name}
  vpc_id                  = aws_vpc.main.id
  cidr_block              = cidrsubnet(var.vpc_cidr, 8, each.key)
  availability_zone       = local.az_names[each.key]
  map_public_ip_on_launch = true
}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

KeyError: '可用性区域'

来自分类Dev

使用cloudformation为每个可用性区域创建子网

来自分类Dev

AWS 多区域服务可用性和操作

来自分类Dev

AWS仅返回一个区域可用性区域

来自分类Dev

使用Terraform在Azure中为每个可用性区域创建子网

来自分类Dev

无法在AWS VPC中不同可用性区域中的子网之间路由

来自分类Dev

无法在AWS VPC中不同可用性区域中的子网之间路由

来自分类Dev

Azure网站能否跨多个可用性区域扩展

来自分类Dev

DIV区域内的内容

来自分类Dev

在找到的区域内替换

来自分类Dev

如何在AWS中使用php获取EC2实例可用性区域和ID?

来自分类Dev

清晰度设计如何使用.clr行,仅在内容区域内可用?

来自分类Dev

如何在给定的可用区域内还原默认VPC安全组的值?

来自分类Dev

锚标记链接应仅在红色边框区域内可用

来自分类Dev

检查用户是否在定义的区域内

来自分类Dev

访问不在映射区域内

来自分类Dev

在散点图区域内选择点

来自分类Dev

封闭区域内的寻找点

来自分类Dev

访问不在映射区域内

来自分类Dev

mousePressed在处理中的特定区域内

来自分类Dev

如何将应用程序可用性限制到特定地理区域ANDROID

来自分类Dev

对 Application Insights 中的区域可用性故障进行故障排除

来自分类Dev

AWS Cloudfront:凭证的范围应限制在有效区域内

来自分类Dev

如何有效计算每个多边形区域内的所有非零像素?

来自分类Dev

为什么在同一声明性区域内拒绝具有相同名称的声明?

来自分类Dev

如何将HTML转换为PDF,以保持可滚动区域内内容的可见性

来自分类Dev

如何从OpenStreetMap(OSM)获取区域内的GPS轨迹?

来自分类Dev

段落和文本区域内的字体大小

来自分类Dev

在定义的圆锥区域内创建随机单位向量

Related 相关文章

  1. 1

    KeyError: '可用性区域'

  2. 2

    使用cloudformation为每个可用性区域创建子网

  3. 3

    AWS 多区域服务可用性和操作

  4. 4

    AWS仅返回一个区域可用性区域

  5. 5

    使用Terraform在Azure中为每个可用性区域创建子网

  6. 6

    无法在AWS VPC中不同可用性区域中的子网之间路由

  7. 7

    无法在AWS VPC中不同可用性区域中的子网之间路由

  8. 8

    Azure网站能否跨多个可用性区域扩展

  9. 9

    DIV区域内的内容

  10. 10

    在找到的区域内替换

  11. 11

    如何在AWS中使用php获取EC2实例可用性区域和ID?

  12. 12

    清晰度设计如何使用.clr行,仅在内容区域内可用?

  13. 13

    如何在给定的可用区域内还原默认VPC安全组的值?

  14. 14

    锚标记链接应仅在红色边框区域内可用

  15. 15

    检查用户是否在定义的区域内

  16. 16

    访问不在映射区域内

  17. 17

    在散点图区域内选择点

  18. 18

    封闭区域内的寻找点

  19. 19

    访问不在映射区域内

  20. 20

    mousePressed在处理中的特定区域内

  21. 21

    如何将应用程序可用性限制到特定地理区域ANDROID

  22. 22

    对 Application Insights 中的区域可用性故障进行故障排除

  23. 23

    AWS Cloudfront:凭证的范围应限制在有效区域内

  24. 24

    如何有效计算每个多边形区域内的所有非零像素?

  25. 25

    为什么在同一声明性区域内拒绝具有相同名称的声明?

  26. 26

    如何将HTML转换为PDF,以保持可滚动区域内内容的可见性

  27. 27

    如何从OpenStreetMap(OSM)获取区域内的GPS轨迹?

  28. 28

    段落和文本区域内的字体大小

  29. 29

    在定义的圆锥区域内创建随机单位向量

热门标签

归档